按平台模式设计的虚拟I2C总线软件包VIIC
CLR VSCL
SETB VSDA
RET
④MNACK: SETB VSDA ;发送非应答位
SETB VSCL
NOP
NOP
CLR VSCL
CLR VSDA
RET
⑤CACK: SETB VSDA ;应答位检查
SETB VSCL
CLR F0
MOV C,VSDA
JNC CEND
SETB F0 CEND: CLR VSCL
RET
⑥WRBYT: MOV R0,#08H ;向VSDA线上发送1个数 ;据字节 WLP: RLC A
JC WR1
AJMP WR0 WLP1: DJNZ R0,WLP
RET WR1: SETB VSDA
SETB VSCL
NOP
NOP
CLR VSCL
CLR VSDA
AJMP WLP1 WR0: CLR VSDA
SETB VSCL
NOP
NOP
CLR VSCL
AJMP WLP1
⑦RDBYT: MOV R0,#08H ;从VSDA线上读取1个数 ;据字节 RLP: SETB VSDA
SETB VSCL
MOV C,VSDA
MOV A,R2
RLC A
MOV R2,A
CLR VSCL
DJNZ R0,RLP
RET
⑧WRNBYT: MOV R3,NUMBYT ;虚拟I2C总线发送N个 ;字节数据
LCALL STA
MOV A,SLA
LCALL WRBYT
LCALL CACK
JB F0,WRNBYT
《按平台模式设计的虚拟I2C总线软件包VIIC(第3页)》