结合单片机用汇编实现I2CBUS总线协议
CLR A
LOOP4:CLR P1.3
NOP
NOP
NOP
SETB P1.3;P1.3=1
MOV C,P1.2
RLC A
DJNZ R0,LOOP4
MOV R2,A
POP 00H
POP 0EH
RET
(3)写数据程序:
WRITE:PUSH 0EH
CLR P1.4
LCALL BSTART
MOV A,#0A0H
LCALL SENDBYTE;
SEND CONTROL BYTE
LCALL ACK
MOV A,R1;SEND THE ADDRESS
LCALL SENDBYTE
CLALL ACK
MOV A,R2;WERITE THE CONTENT
LCALL SENDBYTE
LCALL ACK
LCALL BSTOP
POP 0EH
RET
连续写的两个字节之间最好是要有10ms的延时。当然,也可以进行页写(PAGE WTITE),一次性连续写8个字节,每个字节后要一个应答信号。
(4)停止位程序:
BSTOP:CL的P1.3
NOP
NOP
CLR P1.2
NOP
NOP
NOP
SETB P1.3
NOP
NOP
NOP
SETB P1.2
RET
评论