📄 812mstr.lst
字号:
=1 188 ; DPTR and ending with a null (0) value
=1 189
00A1 C0E0 =1 190 PUSH ACC
00A3 C0F0 =1 191 PUSH B
00A5 E4 =1 192 CLR A
00A6 F5F0 =1 193 MOV B,A
00A8 E5F0 =1 194 IO0010: MOV A,B
00AA 05F0 =1 195 INC B
00AC 93 =1 196 MOVC A,@A+DPTR
00AD 6005 =1 197 JZ IO0020
00AF 1200B9 =1 198 CALL SENDCHAR
00B2 80F4 =1 199 JMP IO0010
00B4 D0F0 =1 200 IO0020: POP B
00B6 D0E0 =1 201 POP ACC
=1 202
00B8 22 =1 203 RET
=1 204
=1 205 ;____________________________________________________________________
=1 206 ; SENDCHAR
=1 207
00B9 =1 208 SENDCHAR: ; sends ASCII value contained in A to UART
=1 209
00B9 3099FD =1 210 JNB TI,$ ; wait til present char gone
00BC C299 =1 211 CLR TI ; must clear TI
00BE F599 =1 212 MOV SBUF,A
=1 213
00C0 22 =1 214 RET
=1 215
=1 216 ;____________________________________________________________________
=1 217 ; SENDVAL
=1 218
00C1 =1 219 SENDVAL: ; converts the hex value of A into two ASCII chars,
=1 220 ; and then spits these two characters up the UART.
=1 221 ; does not change the value of A.
=1 222
00C1 C0E0 =1 223 PUSH ACC
00C3 C4 =1 224 SWAP A
00C4 1200D5 =1 225 CALL HEX2ASCII
00C7 11B9 =1 226 CALL SENDCHAR ; send high nibble
00C9 D0E0 =1 227 POP ACC
00CB C0E0 =1 228 PUSH ACC
00CD 1200D5 =1 229 CALL HEX2ASCII
00D0 11B9 =1 230 CALL SENDCHAR ; send low nibble
00D2 D0E0 =1 231 POP ACC
=1 232
812MSTR PAGE 5
00D4 22 =1 233 RET
=1 234
=1 235 ;____________________________________________________________________
=1 236 ; HEX2ASCII
=1 237
00D5 =1 238 HEX2ASCII: ; converts A into the hex character representing the
=1 239 ; value of A's least significant nibble
=1 240
00D5 540F =1 241 ANL A,#00Fh
00D7 B40A00 =1 242 CJNE A,#00Ah,$+3
00DA 4002 =1 243 JC IO0030
00DC 2407 =1 244 ADD A,#007h
00DE 2430 =1 245 IO0030: ADD A,#'0'
=1 246
00E0 22 =1 247 RET
=1 248
=1 249 ;____________________________________________________________________
=1 250 ; ASCII2HEX
=1 251
00E1 =1 252 ASCII2HEX: ; converts A from an ASCII digit ('0'-'9' or 'A'-'F')
=1 253 ; into the corresponding number (0-15). returns C=1
=1 254 ; when input is other than an ASCII digit,
=1 255 ; indicating invalid output (returned as 255).
=1 256
00E1 C3 =1 257 CLR C
00E2 9430 =1 258 SUBB A,#'0'
00E4 B40A00 =1 259 CJNE A,#10,$+3
00E7 401B =1 260 JC IO0050 ; if '0'<=char<='9', return OK
00E9 B41100 =1 261 CJNE A,#17,$+3
00EC 4013 =1 262 JC IO0040 ; if '9'<char<'A', return FAIL
00EE 9407 =1 263 SUBB A,#7
00F0 B41000 =1 264 CJNE A,#10h,$+3
00F3 400F =1 265 JC IO0050 ; if 'A'<=char<='F', return OK
00F5 B42A00 =1 266 CJNE A,#42,$+3
00F8 4007 =1 267 JC IO0040 ; if 'F'<char<'a', return FAIL
00FA 9420 =1 268 SUBB A,#20h
00FC B41000 =1 269 CJNE A,#10h,$+3
00FF 4003 =1 270 JC IO0050 ; if 'a'<=char<='f', return OK..
=1 271
0101 C3 =1 272 IO0040: CLR C ; ..else return FAIL
0102 74FF =1 273 MOV A,#0FFh
=1 274
0104 B3 =1 275 IO0050: CPL C
0105 22 =1 276 RET
=1 277
=1 278 ;____________________________________________________________________
=1 279 ; GETCHAR
=1 280
0106 =1 281 GETCHAR: ; waits for a single ASCII character to be received
=1 282 ; by the UART. places this character into A.
=1 283
0106 3098FD =1 284 JNB RI,$
0109 E599 =1 285 MOV A,SBUF
010B C298 =1 286 CLR RI
=1 287
010D 22 =1 288 RET
=1 289
=1 290 ;____________________________________________________________________
812MSTR PAGE 6
=1 291 ; GETVAL
=1 292
010E =1 293 GETVAL: ; waits for two ASCII hex digits to be received by
=1 294 ; the UART. returns the hex value in A.
=1 295
010E C0F0 =1 296 PUSH B
0110 C000 =1 297 PUSH 0
0112 C298 =1 298 IO0060: CLR RI
0114 3106 =1 299 CALL GETCHAR ; first nibble
0116 F500 =1 300 MOV 0,A ; store received char
0118 11E1 =1 301 CALL ASCII2HEX
011A 40F6 =1 302 JC IO0060 ; if not '0' thru 'F', don't accept
011C C4 =1 303 SWAP A ; swap nibbles
011D F5F0 =1 304 MOV B,A ; store nibble in B
011F E500 =1 305 MOV A,0 ; echo received char
0121 11B9 =1 306 CALL SENDCHAR
0123 C298 =1 307 IO0070: CLR RI
0125 3106 =1 308 CALL GETCHAR ; second nibble
0127 F500 =1 309 MOV 0,A ; store received char
0129 11E1 =1 310 CALL ASCII2HEX
012B 40F6 =1 311 JC IO0070 ; if not '0' thru 'F', don't accept
012D 45F0 =1 312 ORL A,B ; combine nibbles
012F F5F0 =1 313 MOV B,A ; store results in B
0131 E500 =1 314 MOV A,0 ; echo received char
0133 11B9 =1 315 CALL SENDCHAR
0135 E5F0 =1 316 MOV A,B ; final result
0137 D000 =1 317 POP 0
0139 D0F0 =1 318 POP B
=1 319
013B 22 =1 320 RET
=1 321
322
323 ;____________________________________________________________________
324 ; TEXT DATA TABLES
325
013C 0A0D00 326 SEPERATOR: DB 10,13,0
327
328 ;____________________________________________________________________
329
330 END
331
VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND
812MSTR PAGE 7
ACC. . . . . . . . . . . . . . . D ADDR 00E0H PREDEFINED
ASCII2HEX. . . . . . . . . . . . C ADDR 00E1H
B. . . . . . . . . . . . . . . . D ADDR 00F0H PREDEFINED
DELAY. . . . . . . . . . . . . . C ADDR 008DH
DLY1 . . . . . . . . . . . . . . C ADDR 0093H
EA . . . . . . . . . . . . . . . B ADDR 00AFH PREDEFINED
EX0. . . . . . . . . . . . . . . B ADDR 00A8H PREDEFINED
GETCHAR. . . . . . . . . . . . . C ADDR 0106H
GETVAL . . . . . . . . . . . . . C ADDR 010EH NOT USED
HEX2ASCII. . . . . . . . . . . . C ADDR 00D5H
IE2. . . . . . . . . . . . . . . D ADDR 00A9H PREDEFINED
INPUT. . . . . . . . . . . . . . D ADDR 0060H
IO0010 . . . . . . . . . . . . . C ADDR 00A8H
IO0020 . . . . . . . . . . . . . C ADDR 00B4H
IO0030 . . . . . . . . . . . . . C ADDR 00DEH
IO0040 . . . . . . . . . . . . . C ADDR 0101H
IO0050 . . . . . . . . . . . . . C ADDR 0104H
IO0060 . . . . . . . . . . . . . C ADDR 0112H
IO0070 . . . . . . . . . . . . . C ADDR 0123H
IT0. . . . . . . . . . . . . . . B ADDR 0088H PREDEFINED
LED. . . . . . . . . . . . . . . NUMB 00B4H
LOOP . . . . . . . . . . . . . . C ADDR 0068H
MAIN . . . . . . . . . . . . . . C ADDR 004BH
OUTPUT . . . . . . . . . . . . . D ADDR 0061H
P3 . . . . . . . . . . . . . . . D ADDR 00B0H PREDEFINED
RI . . . . . . . . . . . . . . . B ADDR 0098H PREDEFINED
SBUF . . . . . . . . . . . . . . D ADDR 0099H PREDEFINED
SCON . . . . . . . . . . . . . . D ADDR 0098H PREDEFINED
SENDCHAR . . . . . . . . . . . . C ADDR 00B9H
SENDSPI. . . . . . . . . . . . . C ADDR 0087H
SENDSTRING . . . . . . . . . . . C ADDR 00A1H
SENDVAL. . . . . . . . . . . . . C ADDR 00C1H
SEPERATOR. . . . . . . . . . . . C ADDR 013CH
SP . . . . . . . . . . . . . . . D ADDR 0081H PREDEFINED
SPICON . . . . . . . . . . . . . D ADDR 00F8H PREDEFINED
SPIDAT . . . . . . . . . . . . . D ADDR 00F7H PREDEFINED
SS . . . . . . . . . . . . . . . NUMB 00B5H
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 + -