📄 812slave.lst
字号:
0098 80F4 =1 175 JMP IO0010
009A D0F0 =1 176 IO0020: POP B
009C D0E0 =1 177 POP ACC
=1 178
009E 22 =1 179 RET
=1 180
=1 181 ;____________________________________________________________________
=1 182 ; SENDCHAR
=1 183
009F =1 184 SENDCHAR: ; sends ASCII value contained in A to UART
=1 185
009F 3099FD =1 186 JNB TI,$ ; wait til present char gone
00A2 C299 =1 187 CLR TI ; must clear TI
00A4 F599 =1 188 MOV SBUF,A
=1 189
00A6 22 =1 190 RET
=1 191
=1 192 ;____________________________________________________________________
=1 193 ; SENDVAL
=1 194
00A7 =1 195 SENDVAL: ; converts the hex value of A into two ASCII chars,
=1 196 ; and then spits these two characters up the UART.
=1 197 ; does not change the value of A.
=1 198
00A7 C0E0 =1 199 PUSH ACC
00A9 C4 =1 200 SWAP A
00AA 1200BB =1 201 CALL HEX2ASCII
00AD 119F =1 202 CALL SENDCHAR ; send high nibble
00AF D0E0 =1 203 POP ACC
00B1 C0E0 =1 204 PUSH ACC
00B3 1200BB =1 205 CALL HEX2ASCII
00B6 119F =1 206 CALL SENDCHAR ; send low nibble
00B8 D0E0 =1 207 POP ACC
=1 208
00BA 22 =1 209 RET
=1 210
=1 211 ;____________________________________________________________________
=1 212 ; HEX2ASCII
=1 213
00BB =1 214 HEX2ASCII: ; converts A into the hex character representing the
=1 215 ; value of A's least significant nibble
=1 216
00BB 540F =1 217 ANL A,#00Fh
00BD B40A00 =1 218 CJNE A,#00Ah,$+3
00C0 4002 =1 219 JC IO0030
00C2 2407 =1 220 ADD A,#007h
00C4 2430 =1 221 IO0030: ADD A,#'0'
=1 222
00C6 22 =1 223 RET
=1 224
=1 225 ;____________________________________________________________________
=1 226 ; ASCII2HEX
=1 227
00C7 =1 228 ASCII2HEX: ; converts A from an ASCII digit ('0'-'9' or 'A'-'F')
=1 229 ; into the corresponding number (0-15). returns C=1
=1 230 ; when input is other than an ASCII digit,
=1 231 ; indicating invalid output (returned as 255).
=1 232
812SLAVE PAGE 5
00C7 C3 =1 233 CLR C
00C8 9430 =1 234 SUBB A,#'0'
00CA B40A00 =1 235 CJNE A,#10,$+3
00CD 401B =1 236 JC IO0050 ; if '0'<=char<='9', return OK
00CF B41100 =1 237 CJNE A,#17,$+3
00D2 4013 =1 238 JC IO0040 ; if '9'<char<'A', return FAIL
00D4 9407 =1 239 SUBB A,#7
00D6 B41000 =1 240 CJNE A,#10h,$+3
00D9 400F =1 241 JC IO0050 ; if 'A'<=char<='F', return OK
00DB B42A00 =1 242 CJNE A,#42,$+3
00DE 4007 =1 243 JC IO0040 ; if 'F'<char<'a', return FAIL
00E0 9420 =1 244 SUBB A,#20h
00E2 B41000 =1 245 CJNE A,#10h,$+3
00E5 4003 =1 246 JC IO0050 ; if 'a'<=char<='f', return OK..
=1 247
00E7 C3 =1 248 IO0040: CLR C ; ..else return FAIL
00E8 74FF =1 249 MOV A,#0FFh
=1 250
00EA B3 =1 251 IO0050: CPL C
00EB 22 =1 252 RET
=1 253
=1 254 ;____________________________________________________________________
=1 255 ; GETCHAR
=1 256
00EC =1 257 GETCHAR: ; waits for a single ASCII character to be received
=1 258 ; by the UART. places this character into A.
=1 259
00EC 3098FD =1 260 JNB RI,$
00EF E599 =1 261 MOV A,SBUF
00F1 C298 =1 262 CLR RI
=1 263
00F3 22 =1 264 RET
=1 265
=1 266 ;____________________________________________________________________
=1 267 ; GETVAL
=1 268
00F4 =1 269 GETVAL: ; waits for two ASCII hex digits to be received by
=1 270 ; the UART. returns the hex value in A.
=1 271
00F4 C0F0 =1 272 PUSH B
00F6 C000 =1 273 PUSH 0
00F8 C298 =1 274 IO0060: CLR RI
00FA 11EC =1 275 CALL GETCHAR ; first nibble
00FC F500 =1 276 MOV 0,A ; store received char
00FE 11C7 =1 277 CALL ASCII2HEX
0100 40F6 =1 278 JC IO0060 ; if not '0' thru 'F', don't accept
0102 C4 =1 279 SWAP A ; swap nibbles
0103 F5F0 =1 280 MOV B,A ; store nibble in B
0105 E500 =1 281 MOV A,0 ; echo received char
0107 119F =1 282 CALL SENDCHAR
0109 C298 =1 283 IO0070: CLR RI
010B 11EC =1 284 CALL GETCHAR ; second nibble
010D F500 =1 285 MOV 0,A ; store received char
010F 11C7 =1 286 CALL ASCII2HEX
0111 40F6 =1 287 JC IO0070 ; if not '0' thru 'F', don't accept
0113 45F0 =1 288 ORL A,B ; combine nibbles
0115 F5F0 =1 289 MOV B,A ; store results in B
0117 E500 =1 290 MOV A,0 ; echo received char
812SLAVE PAGE 6
0119 119F =1 291 CALL SENDCHAR
011B E5F0 =1 292 MOV A,B ; final result
011D D000 =1 293 POP 0
011F D0F0 =1 294 POP B
=1 295
0121 22 =1 296 RET
=1 297
298
299 ;____________________________________________________________________
300 ; TEXT DATA TABLES
301
0122 0A0D00 302 SEPERATOR: DB 10,13,0
303
304 ;____________________________________________________________________
305
306 END
307
VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND
812SLAVE PAGE 7
ACC. . . . . . . . . . . . . . . D ADDR 00E0H PREDEFINED
ASCII2HEX. . . . . . . . . . . . C ADDR 00C7H
B. . . . . . . . . . . . . . . . D ADDR 00F0H PREDEFINED
EA . . . . . . . . . . . . . . . B ADDR 00AFH PREDEFINED
EX0. . . . . . . . . . . . . . . B ADDR 00A8H PREDEFINED
GETCHAR. . . . . . . . . . . . . C ADDR 00ECH
GETVAL . . . . . . . . . . . . . C ADDR 00F4H NOT USED
HEX2ASCII. . . . . . . . . . . . C ADDR 00BBH
IE2. . . . . . . . . . . . . . . D ADDR 00A9H PREDEFINED
INPUT. . . . . . . . . . . . . . D ADDR 0060H
IO0010 . . . . . . . . . . . . . C ADDR 008EH
IO0020 . . . . . . . . . . . . . C ADDR 009AH
IO0030 . . . . . . . . . . . . . C ADDR 00C4H
IO0040 . . . . . . . . . . . . . C ADDR 00E7H
IO0050 . . . . . . . . . . . . . C ADDR 00EAH
IO0060 . . . . . . . . . . . . . C ADDR 00F8H
IO0070 . . . . . . . . . . . . . C ADDR 0109H
IT0. . . . . . . . . . . . . . . B ADDR 0088H PREDEFINED
LED. . . . . . . . . . . . . . . NUMB 00B4H
LOOP . . . . . . . . . . . . . . C ADDR 006DH
MAIN . . . . . . . . . . . . . . C ADDR 004BH
OUTPUT . . . . . . . . . . . . . D ADDR 0061H
P1 . . . . . . . . . . . . . . . D ADDR 0090H PREDEFINED
P3 . . . . . . . . . . . . . . . D ADDR 00B0H PREDEFINED
RI . . . . . . . . . . . . . . . B ADDR 0098H PREDEFINED
SBUF . . . . . . . . . . . . . . D ADDR 0099H PREDEFINED
SCON . . . . . . . . . . . . . . D ADDR 0098H PREDEFINED
SENDCHAR . . . . . . . . . . . . C ADDR 009FH
SENDSTRING . . . . . . . . . . . C ADDR 0087H
SENDVAL. . . . . . . . . . . . . C ADDR 00A7H
SEPERATOR. . . . . . . . . . . . C ADDR 0122H
SP . . . . . . . . . . . . . . . D ADDR 0081H PREDEFINED
SPICON . . . . . . . . . . . . . D ADDR 00F8H PREDEFINED
SPIDAT . . . . . . . . . . . . . D ADDR 00F7H PREDEFINED
TH1. . . . . . . . . . . . . . . D ADDR 008DH PREDEFINED
TI . . . . . . . . . . . . . . . B ADDR 0099H PREDEFINED
TMOD . . . . . . . . . . . . . . D ADDR 0089H PREDEFINED
TR1. . . . . . . . . . . . . . . B ADDR 008EH PREDEFINED
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -