📄 832mstr.lst
字号:
00A3 E4 =1 183 CLR A
00A4 F5F0 =1 184 MOV B,A
00A6 E5F0 =1 185 IO0010: MOV A,B
00A8 05F0 =1 186 INC B
00AA 93 =1 187 MOVC A,@A+DPTR
00AB 6005 =1 188 JZ IO0020
00AD 1200B7 =1 189 CALL SENDCHAR
00B0 80F4 =1 190 JMP IO0010
00B2 D0F0 =1 191 IO0020: POP B
00B4 D0E0 =1 192 POP ACC
=1 193
00B6 22 =1 194 RET
=1 195
=1 196 ;____________________________________________________________________
=1 197 ; SENDCHAR
=1 198
00B7 =1 199 SENDCHAR: ; sends ASCII value contained in A to UART
=1 200
00B7 3099FD =1 201 JNB TI,$ ; wait til present char gone
00BA C299 =1 202 CLR TI ; must clear TI
00BC F599 =1 203 MOV SBUF,A
=1 204
00BE 22 =1 205 RET
=1 206
=1 207 ;____________________________________________________________________
=1 208 ; SENDVAL
=1 209
00BF =1 210 SENDVAL: ; converts the hex value of A into two ASCII chars,
=1 211 ; and then spits these two characters up the UART.
=1 212 ; does not change the value of A.
=1 213
00BF C0E0 =1 214 PUSH ACC
00C1 C4 =1 215 SWAP A
00C2 1200D3 =1 216 CALL HEX2ASCII
00C5 11B7 =1 217 CALL SENDCHAR ; send high nibble
00C7 D0E0 =1 218 POP ACC
00C9 C0E0 =1 219 PUSH ACC
00CB 1200D3 =1 220 CALL HEX2ASCII
00CE 11B7 =1 221 CALL SENDCHAR ; send low nibble
00D0 D0E0 =1 222 POP ACC
=1 223
00D2 22 =1 224 RET
=1 225
=1 226 ;____________________________________________________________________
=1 227 ; HEX2ASCII
=1 228
00D3 =1 229 HEX2ASCII: ; converts A into the hex character representing the
=1 230 ; value of A's least significant nibble
=1 231
00D3 540F =1 232 ANL A,#00Fh
832MSTR PAGE 5
00D5 B40A00 =1 233 CJNE A,#00Ah,$+3
00D8 4002 =1 234 JC IO0030
00DA 2407 =1 235 ADD A,#007h
00DC 2430 =1 236 IO0030: ADD A,#'0'
=1 237
00DE 22 =1 238 RET
=1 239
=1 240 ;____________________________________________________________________
=1 241 ; ASCII2HEX
=1 242
00DF =1 243 ASCII2HEX: ; converts A from an ASCII digit ('0'-'9' or 'A'-'F')
=1 244 ; into the corresponding number (0-15). returns C=1
=1 245 ; when input is other than an ASCII digit,
=1 246 ; indicating invalid output (returned as 255).
=1 247
00DF C3 =1 248 CLR C
00E0 9430 =1 249 SUBB A,#'0'
00E2 B40A00 =1 250 CJNE A,#10,$+3
00E5 401B =1 251 JC IO0050 ; if '0'<=char<='9', return OK
00E7 B41100 =1 252 CJNE A,#17,$+3
00EA 4013 =1 253 JC IO0040 ; if '9'<char<'A', return FAIL
00EC 9407 =1 254 SUBB A,#7
00EE B41000 =1 255 CJNE A,#10h,$+3
00F1 400F =1 256 JC IO0050 ; if 'A'<=char<='F', return OK
00F3 B42A00 =1 257 CJNE A,#42,$+3
00F6 4007 =1 258 JC IO0040 ; if 'F'<char<'a', return FAIL
00F8 9420 =1 259 SUBB A,#20h
00FA B41000 =1 260 CJNE A,#10h,$+3
00FD 4003 =1 261 JC IO0050 ; if 'a'<=char<='f', return OK..
=1 262
00FF C3 =1 263 IO0040: CLR C ; ..else return FAIL
0100 74FF =1 264 MOV A,#0FFh
=1 265
0102 B3 =1 266 IO0050: CPL C
0103 22 =1 267 RET
=1 268
=1 269 ;____________________________________________________________________
=1 270 ; GETCHAR
=1 271
0104 =1 272 GETCHAR: ; waits for a single ASCII character to be received
=1 273 ; by the UART. places this character into A.
=1 274
0104 3098FD =1 275 JNB RI,$
0107 E599 =1 276 MOV A,SBUF
0109 C298 =1 277 CLR RI
=1 278
010B 22 =1 279 RET
=1 280
=1 281 ;____________________________________________________________________
=1 282 ; GETVAL
=1 283
010C =1 284 GETVAL: ; waits for two ASCII hex digits to be received by
=1 285 ; the UART. returns the hex value in A.
=1 286
010C C0F0 =1 287 PUSH B
010E C000 =1 288 PUSH 0
0110 C298 =1 289 IO0060: CLR RI
0112 3104 =1 290 CALL GETCHAR ; first nibble
832MSTR PAGE 6
0114 F500 =1 291 MOV 0,A ; store received char
0116 11DF =1 292 CALL ASCII2HEX
0118 40F6 =1 293 JC IO0060 ; if not '0' thru 'F', don't accept
011A C4 =1 294 SWAP A ; swap nibbles
011B F5F0 =1 295 MOV B,A ; store nibble in B
011D E500 =1 296 MOV A,0 ; echo received char
011F 11B7 =1 297 CALL SENDCHAR
0121 C298 =1 298 IO0070: CLR RI
0123 3104 =1 299 CALL GETCHAR ; second nibble
0125 F500 =1 300 MOV 0,A ; store received char
0127 11DF =1 301 CALL ASCII2HEX
0129 40F6 =1 302 JC IO0070 ; if not '0' thru 'F', don't accept
012B 45F0 =1 303 ORL A,B ; combine nibbles
012D F5F0 =1 304 MOV B,A ; store results in B
012F E500 =1 305 MOV A,0 ; echo received char
0131 11B7 =1 306 CALL SENDCHAR
0133 E5F0 =1 307 MOV A,B ; final result
0135 D000 =1 308 POP 0
0137 D0F0 =1 309 POP B
=1 310
0139 22 =1 311 RET
=1 312
313
314 ;____________________________________________________________________
315 ; TEXT DATA TABLES
316
013A 0A0D00 317 SEPERATOR: DB 10,13,0
318
319 ;____________________________________________________________________
320
321 END
322
VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND
832MSTR PAGE 7
ACC. . . . . . . . . . . . . . . D ADDR 00E0H PREDEFINED
ASCII2HEX. . . . . . . . . . . . C ADDR 00DFH
B. . . . . . . . . . . . . . . . D ADDR 00F0H PREDEFINED
DELAY. . . . . . . . . . . . . . C ADDR 008BH
DLY1 . . . . . . . . . . . . . . C ADDR 0091H
EA . . . . . . . . . . . . . . . B ADDR 00AFH PREDEFINED
EX0. . . . . . . . . . . . . . . B ADDR 00A8H PREDEFINED
GETCHAR. . . . . . . . . . . . . C ADDR 0104H
GETVAL . . . . . . . . . . . . . C ADDR 010CH NOT USED
HEX2ASCII. . . . . . . . . . . . C ADDR 00D3H
IEIP2. . . . . . . . . . . . . . D ADDR 00A9H PREDEFINED
INPUT. . . . . . . . . . . . . . D ADDR 0060H
IO0010 . . . . . . . . . . . . . C ADDR 00A6H
IO0020 . . . . . . . . . . . . . C ADDR 00B2H
IO0030 . . . . . . . . . . . . . C ADDR 00DCH
IO0040 . . . . . . . . . . . . . C ADDR 00FFH
IO0050 . . . . . . . . . . . . . C ADDR 0102H
IO0060 . . . . . . . . . . . . . C ADDR 0110H
IO0070 . . . . . . . . . . . . . C ADDR 0121H
IT0. . . . . . . . . . . . . . . B ADDR 0088H PREDEFINED
LED. . . . . . . . . . . . . . . NUMB 00B4H
LOOP . . . . . . . . . . . . . . C ADDR 0066H
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 00B7H
SENDSPI. . . . . . . . . . . . . C ADDR 0085H
SENDSTRING . . . . . . . . . . . C ADDR 009FH
SENDVAL. . . . . . . . . . . . . C ADDR 00BFH
SEPERATOR. . . . . . . . . . . . C ADDR 013AH
SP . . . . . . . . . . . . . . . D ADDR 0081H PREDEFINED
SPICON . . . . . . . . . . . . . D ADDR 00F8H PREDEFINED
SPIDAT . . . . . . . . . . . . . D ADDR 00F7H PREDEFINED
SS . . . . . . . . . . . . . . . NUMB 00B5H
T3CON. . . . . . . . . . . . . . D ADDR 009EH PREDEFINED
T3FD . . . . . . . . . . . . . . D ADDR 009DH PREDEFINED
TI . . . . . . . . . . . . . . . B ADDR 0099H PREDEFINED
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -