單片機驅動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