串行总线扩展实验程序代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ACK BIT 10H
SLA DATA 30H SUBA DATA 31H NUMBYTE DATA 32H SDA EQU P1.7
SCL EQU P1.6
MTD EQU 30H
MRD EQU 40H
ORG 0000H
LCALL WRAT24C
LCALL RDAT24C
LJMP L1
ORG 0030H
WRAT24C:
MOV SLA,#0A0H
MOV NUMBYTE,#8
MOV SUBA,#00H
LCALL IWRNBYTE
RET
IWRNBYTE:
MOV A,NUMBYTE
MOV R3,A
LCALL START
MOV A,SLA
LCALL WRBYTE
LCALL CACK
JNB ACK,RETWRN
MOV A,SUBA
LCALL WRBYTE
LCALL CACK
MOV R1,#MTD WRDA:
MOV A,@R1
LCALL WRBYTE
LCALL CACK
JNB ACK,IWRNBYTE
INC R1
DJNZ R3,WRDA RETWRN:
LCALL STOP
RET
RDAT24C:
MOV SLA,#0A0H
MOV NUMBYTE,#8
MOV SUBA,#00H
LCALL IRDNBYTE
RET IRDNBYTE:
MOV R3,NUMBYTE
LCALL START
MOV A,SLA
LCALL WRBYTE
LCALL CACK
JNB ACK,RETRDN
MOV A,SUBA
LCALL WRBYTE
LCALL CACK
LCALL START
MOV A,SLA
INC A
LCALL WRBYTE
LCALL CACK
JNB ACK,IRDNBYTE
MOV R1,#MRD RDN1:
LCALL RDBYTE
MOV @R1,A
DJNZ R3,SACK
LCALL MNACK RETRDN:
LCALL STOP
RET
SACK:
LCALL MACK
INC R1
SJMP RDN1 WRBYTE:
MOV R0,#08H WLP:
RLC A
MOV SDA,C
NOP
SETB SCL
NOP
NOP
NOP
NOP
NOP
CLR SCL
WLP1:
DJNZ R0,WLP
NOP
RET RDBYTE:
MOV R0,#08H RLP:
SETB SDA
NOP
SETB SCL
NOP
NOP
MOV C,SDA
RLC A
CLR SCL
NOP
NOP
NOP
DJNZ R0,RLP
RET
START:
SETB SDA
NOP
SETB SCL
NOP
NOP
NOP
NOP
NOP
CLR SDA
NOP
NOP
NOP
NOP
CLR SCL
NOP
RET
STOP:
CLR SDA
NOP
NOP
NOP
NOP
NOP
NOP
NOP
SETB SDA
NOP
NOP
NOP
NOP
RET MACK:
CLR SDA
NOP
NOP
SETB SCL
NOP
NOP
CLR SCL
NOP
NOP
RET MNACK:
SETB SDA
NOP
NOP
SETB SCL
NOP
NOP
CLR SCL
NOP
NOP
RET CACK:
SETB SDA
NOP
NOP
SETB SCL
CLR ACK
NOP
NOP
MOV C,SDA
JC CEND
CEND:
NOP
CLR SCL
NOP
RET
L1:
END