📄 i2cslave.lst
字号:
I2CSLAVE PAGE 3
0090 D201 117 SETB FIRST ; re-initialise flags
0092 C200 118 CLR GO
0094 20E9F6 119 JB I2CTX,WAITFORDATA
120 ; if the slave has just transmitted then
121 ; wait to receive a byte
122 ; if the slave has just received then
123 ; send input up the UART
124
0097 125 SENDUART:
0097 B2B4 126 CPL LED ; LED changes each time one byte has been
127 ; received and another transmitted
128
0099 E531 129 MOV A,INPUT ; send value received out the UART
009B 1200C6 130 CALL SENDVAL
009E 740A 131 MOV A,#10
00A0 1200B2 132 CALL SENDCHAR ; send LF + CR
00A3 740D 133 MOV A,#13
00A5 1200B2 134 CALL SENDCHAR
135
00A8 3098E2 136 JNB RI, WAITFORDATA ; repeat (unless UART data received)
137
138 ; WHEN UART DATA RECEIVED, MOVE DATA TO I2C OUTPUT...
139
00AB 859932 140 MOV OUTPUT, SBUF ; update OUTPUT byte to new value
00AE C298 141 CLR RI ; must clear RI
00B0 80DB 142 JMP WAITFORDATA ; back to main loop
143
144
145 ;======================================================================
146 ; SUBROUTINES
147 ;======================================================================
148
149 ;____________________________________________________________________
150 ; SENDCHAR
151 ; sends ASCII value contained in A to UART
152
00B2 153 SENDCHAR:
00B2 3099FD 154 JNB TI,$ ; wait 'til present char gone
00B5 C299 155 CLR TI ; must clear TI
00B7 F599 156 MOV SBUF,A
00B9 22 157 RET
158 ;____________________________________________________________________
159 ; HEX2ASCII
160 ; converts A into the hex character representing the value of A's
161 ; least significant nibble
162
00BA 163 HEX2ASCII:
00BA 540F 164 ANL A,#00Fh
00BC B40A00 165 CJNE A,#00Ah,$+3
00BF 4002 166 JC IO0030
00C1 2407 167 ADD A,#007h
00C3 2430 168 IO0030: ADD A,#'0'
00C5 22 169 RET
170 ;____________________________________________________________________
171 ; SENDVAL
172 ; converts the hex value of A into two ASCII chars, and then spits
173 ; these two characters up the UART. does not change the value of A.
174
I2CSLAVE PAGE 4
00C6 175 SENDVAL:
00C6 C0E0 176 PUSH ACC
00C8 C4 177 SWAP A
00C9 11BA 178 CALL HEX2ASCII
00CB 11B2 179 CALL SENDCHAR ; send high nibble
00CD D0E0 180 POP ACC
00CF C0E0 181 PUSH ACC
00D1 11BA 182 CALL HEX2ASCII
00D3 11B2 183 CALL SENDCHAR ; send low nibble
00D5 D0E0 184 POP ACC
00D7 22 185 RET
186 ;____________________________________________________________________
187
188 END
VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND
I2CSLAVE PAGE 5
ACC. . . . . . . . . . . . . . . D ADDR 00E0H PREDEFINED
BYTECNT. . . . . . . . . . . . . D ADDR 0030H NOT USED
CFG814 . . . . . . . . . . . . . D ADDR 009CH PREDEFINED
EA . . . . . . . . . . . . . . . B ADDR 00AFH PREDEFINED
ENDINT1. . . . . . . . . . . . . C ADDR 0051H
ENDINT2. . . . . . . . . . . . . C ADDR 0053H
EX0. . . . . . . . . . . . . . . B ADDR 00A8H PREDEFINED
FIRST. . . . . . . . . . . . . . B ADDR 0001H
GO . . . . . . . . . . . . . . . B ADDR 0000H
HEX2ASCII. . . . . . . . . . . . C ADDR 00BAH
I2CADD . . . . . . . . . . . . . D ADDR 009BH PREDEFINED
I2CCON . . . . . . . . . . . . . D ADDR 00E8H PREDEFINED
I2CDAT . . . . . . . . . . . . . D ADDR 009AH PREDEFINED
I2CI . . . . . . . . . . . . . . B ADDR 00E8H PREDEFINED
I2CTX. . . . . . . . . . . . . . B ADDR 00E9H PREDEFINED
IEIP2. . . . . . . . . . . . . . D ADDR 00A9H PREDEFINED
INPUT. . . . . . . . . . . . . . D ADDR 0031H
IO0030 . . . . . . . . . . . . . C ADDR 00C3H
IT0. . . . . . . . . . . . . . . B ADDR 0088H PREDEFINED
LED. . . . . . . . . . . . . . . NUMB 00B4H
MAIN . . . . . . . . . . . . . . C ADDR 0060H
OUTPUT . . . . . . . . . . . . . D ADDR 0032H
P3 . . . . . . . . . . . . . . . D ADDR 00B0H PREDEFINED
RCAP2H . . . . . . . . . . . . . D ADDR 00CBH PREDEFINED
RCAP2L . . . . . . . . . . . . . D ADDR 00CAH PREDEFINED
RI . . . . . . . . . . . . . . . B ADDR 0098H PREDEFINED
SBUF . . . . . . . . . . . . . . D ADDR 0099H PREDEFINED
SCON . . . . . . . . . . . . . . D ADDR 0098H PREDEFINED
SENDCHAR . . . . . . . . . . . . C ADDR 00B2H
SENDUART . . . . . . . . . . . . C ADDR 0097H NOT USED
SENDVAL. . . . . . . . . . . . . C ADDR 00C6H
SLAVE_RECEIVER . . . . . . . . . C ADDR 003EH NOT USED
SLAVE_TRANSMITTER. . . . . . . . C ADDR 0049H
T2CON. . . . . . . . . . . . . . D ADDR 00C8H PREDEFINED
TH2. . . . . . . . . . . . . . . D ADDR 00CDH PREDEFINED
TI . . . . . . . . . . . . . . . B ADDR 0099H PREDEFINED
TL2. . . . . . . . . . . . . . . D ADDR 00CCH PREDEFINED
WAITFORDATA. . . . . . . . . . . C ADDR 008DH
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -