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 + -
显示快捷键?