i2c.a51

来自「keil C51 LCD 驱动源码,其中还有I2C驱动,ADC驱动,键盘操作等,」· A51 代码 · 共 94 行

A51
94
字号

        $LIST


        SCLPin          BIT     P1.2            ;I2C serial clock line.
        SDAPin          BIT     P1.3            ;I2C serial data line.

PUBLIC   _IIC_SendByte

SoftwareIIC     SEGMENT CODE
                RSEG    SoftwareIIC
_IIC_SendByte:
        MOV     A,R7
SendDataBit:
        RLC     A           	;; Bit 7
        MOV     SDAPin,C
        SETB    SCLPin
;;        NOP
        CLR     SCLPin 
          
        RLC     A            	;; Bit 6
        MOV     SDAPin,C
        SETB    SCLPin
;;        NOP
        CLR     SCLPin            
        
        RLC     A            	;; Bit 5
        MOV     SDAPin,C
        SETB    SCLPin
;;        NOP
        CLR     SCLPin                
        
        RLC     A            	;; Bit 4
        MOV     SDAPin,C
        SETB    SCLPin
;;        NOP
        CLR     SCLPin                
        
        RLC     A            	;; Bit 3
        MOV     SDAPin,C
        SETB    SCLPin
;;        NOP
        CLR     SCLPin                
        
        RLC     A            	;; Bit 2
        MOV     SDAPin,C
        SETB    SCLPin
;;        NOP
        CLR     SCLPin                  
          
        RLC     A            	;; Bit 1
        MOV     SDAPin,C
        SETB    SCLPin
;;        NOP
        CLR     SCLPin        

        RLC     A            	;; Bit 0
        MOV     SDAPin,C
        SETB    SCLPin
;;        NOP
        CLR     SCLPin        
        NOP
        NOP
          
;;NextDataBit:
;;        DJNZ    R6,SendDataBit

        SETB    SDAPin
;;        NOP
        NOP
        NOP
        SETB    SCLPin

        CLR     A
        MOV     R6,A
WaitAck:
        JNB     SDAPin,ChkAckStatus
        INC     R6
        CJNE    R6,#040H,WaitAck
ChkAckStatus:
        CJNE    R6,#040H,AckOK
        CLR     SCLPin
;;        NOP
        CLR     SDAPin
        SETB    C                       ;; fail, no Ack
        RET
AckOK:
        CLR     SCLPin
;;        NOP
        CLR     SDAPin
        CLR     C
        RET
                END

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?