text2.a51

来自「压缩包里包括的51的C与汇编的混合编程」· A51 代码 · 共 63 行

A51
63
字号
SDA BIT P1.1
SCL BIT P1.2
PUBLIC START_I2C,STOP_I2C,_ACK_I2C
I2C_DT SEGMENT DATA
I2C_PR SEGMENT CODE
RSEG I2C_DT
STACKSAVE:DS 1 
RSEG I2C_PR 

START_I2C:
SETB SDA ;发送起始条件的数据信号
NOP
SETB SCL
NOP ;起始条件建立时间大于4.7us,延时
NOP
NOP
NOP
NOP
CLR SDA ;发送起始信号
NOP ;起始条件锁定时间大于4μs
NOP
NOP
NOP
NOP
CLR SCL ;钳住I2C总线,准备发送或接收数据
NOP
NOP
RET
STOP_I2C:
CLR SDA ;发送结束条件的数据信号
NOP ;发送结束条件的时钟信号
SETB SCL ;结束条件建立时间大于4μs
NOP
NOP
NOP
NOP
NOP
SETB SDA ;发送I2C总线结束信号
NOP
NOP
NOP
NOP
RET 
_ACK_I2C:
MOV A,R7
JZ ACK
SETB SDA
SJMP NO_ACK
ACK: CLR SDA 
NO_ACK: NOP
NOP
NOP
SETB SCL
NOP
NOP
NOP
NOP
NOP
CLR SCL
NOP
NOP
RET
END

⌨️ 快捷键说明

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