单片机驱动74HC164的程序设计应用实例

;-------------------------------------------------------------
;单片机驱动74LS164/74HC164的一个示例
;74HC164是串入并出的数据移位模块,在其时钟端(CK)每送入一个时钟
;脉冲,则其当前的数据线(DT)状态即被移位至输出端输出,164的数据
;在时钟上升沿被锁存,输出由A向H依次移位
;本例中应用了我站开发的位操作插件以方便进行IO位线置位及清位操作
;------------------------------------------------------------
;送一个字节数据到164的过程
;R0----要送出的数据/指令字节 
;-----------------------------------------------------------
SENDTO164:
        PUSH    R0
        PUSH    R1
        CLRBIT  CK_164   ;set cLOCk line is low 
        NOP
        NOP
        CLRBIT  DT_164   ;set data line is low 
        LD      R1,#08H
  SENDA_164:
        RLC     R0              ;right shift R0,bit0 into C
        SETBIT  DT_164         ;set data line
        JR      C,SENDB_164         ;if C=1,skip
        CLRBIT  DT_164      ;clear data line
       
  SENDB_164:
        NOP
        NOP 
        SETBIT  CK_164      ;send one clock pulse
        NOP
        NOP
        NOP
        CLRBIT  CK_164      ;
        DEC     R1
        JR      NZ,SENDA_164 
        
SEND164_BACK:
        POP     R1
        POP     R0
        RET