📄 842mstr.lst
字号:
=1 186
00B7 C0E0 =1 187 PUSH ACC
00B9 C0F0 =1 188 PUSH B
00BB E4 =1 189 CLR A
00BC F5F0 =1 190 MOV B,A
00BE E5F0 =1 191 IO0010: MOV A,B
00C0 05F0 =1 192 INC B
00C2 93 =1 193 MOVC A,@A+DPTR
00C3 6005 =1 194 JZ IO0020
00C5 1200CF =1 195 CALL SENDCHAR
00C8 80F4 =1 196 JMP IO0010
00CA D0F0 =1 197 IO0020: POP B
00CC D0E0 =1 198 POP ACC
=1 199
00CE 22 =1 200 RET
=1 201
=1 202 ;____________________________________________________________________
=1 203 ; SENDCHAR
=1 204
00CF =1 205 SENDCHAR: ; sends ASCII value contained in A to UART
=1 206
00CF 3099FD =1 207 JNB TI,$ ; wait til present char gone
00D2 C299 =1 208 CLR TI ; must clear TI
00D4 F599 =1 209 MOV SBUF,A
=1 210
00D6 22 =1 211 RET
=1 212
=1 213 ;____________________________________________________________________
=1 214 ; SENDVAL
=1 215
00D7 =1 216 SENDVAL: ; converts the hex value of A into two ASCII chars,
=1 217 ; and then spits these two characters up the UART.
=1 218 ; does not change the value of A.
=1 219
00D7 C0E0 =1 220 PUSH ACC
00D9 C4 =1 221 SWAP A
00DA 1200EB =1 222 CALL HEX2ASCII
00DD 11CF =1 223 CALL SENDCHAR ; send high nibble
00DF D0E0 =1 224 POP ACC
00E1 C0E0 =1 225 PUSH ACC
00E3 1200EB =1 226 CALL HEX2ASCII
00E6 11CF =1 227 CALL SENDCHAR ; send low nibble
00E8 D0E0 =1 228 POP ACC
=1 229
00EA 22 =1 230 RET
=1 231
=1 232 ;____________________________________________________________________
842MSTR PAGE 5
=1 233 ; HEX2ASCII
=1 234
00EB =1 235 HEX2ASCII: ; converts A into the hex character representing the
=1 236 ; value of A's least significant nibble
=1 237
00EB 540F =1 238 ANL A,#00Fh
00ED B40A00 =1 239 CJNE A,#00Ah,$+3
00F0 4002 =1 240 JC IO0030
00F2 2407 =1 241 ADD A,#007h
00F4 2430 =1 242 IO0030: ADD A,#'0'
=1 243
00F6 22 =1 244 RET
=1 245
=1 246 ;____________________________________________________________________
=1 247 ; ASCII2HEX
=1 248
00F7 =1 249 ASCII2HEX: ; converts A from an ASCII digit ('0'-'9' or 'A'-'F')
=1 250 ; into the corresponding number (0-15). returns C=1
=1 251 ; when input is other than an ASCII digit,
=1 252 ; indicating invalid output (returned as 255).
=1 253
00F7 C3 =1 254 CLR C
00F8 9430 =1 255 SUBB A,#'0'
00FA B40A00 =1 256 CJNE A,#10,$+3
00FD 401B =1 257 JC IO0050 ; if '0'<=char<='9', return OK
00FF B41100 =1 258 CJNE A,#17,$+3
0102 4013 =1 259 JC IO0040 ; if '9'<char<'A', return FAIL
0104 9407 =1 260 SUBB A,#7
0106 B41000 =1 261 CJNE A,#10h,$+3
0109 400F =1 262 JC IO0050 ; if 'A'<=char<='F', return OK
010B B42A00 =1 263 CJNE A,#42,$+3
010E 4007 =1 264 JC IO0040 ; if 'F'<char<'a', return FAIL
0110 9420 =1 265 SUBB A,#20h
0112 B41000 =1 266 CJNE A,#10h,$+3
0115 4003 =1 267 JC IO0050 ; if 'a'<=char<='f', return OK..
=1 268
0117 C3 =1 269 IO0040: CLR C ; ..else return FAIL
0118 74FF =1 270 MOV A,#0FFh
=1 271
011A B3 =1 272 IO0050: CPL C
011B 22 =1 273 RET
=1 274
=1 275 ;____________________________________________________________________
=1 276 ; GETCHAR
=1 277
011C =1 278 GETCHAR: ; waits for a single ASCII character to be received
=1 279 ; by the UART. places this character into A.
=1 280
011C 3098FD =1 281 JNB RI,$
011F E599 =1 282 MOV A,SBUF
0121 C298 =1 283 CLR RI
=1 284
0123 22 =1 285 RET
=1 286
=1 287 ;____________________________________________________________________
=1 288 ; GETVAL
=1 289
0124 =1 290 GETVAL: ; waits for two ASCII hex digits to be received by
842MSTR PAGE 6
=1 291 ; the UART. returns the hex value in A.
=1 292
0124 C0F0 =1 293 PUSH B
0126 C000 =1 294 PUSH 0
0128 C298 =1 295 IO0060: CLR RI
012A 311C =1 296 CALL GETCHAR ; first nibble
012C F500 =1 297 MOV 0,A ; store received char
012E 11F7 =1 298 CALL ASCII2HEX
0130 40F6 =1 299 JC IO0060 ; if not '0' thru 'F', don't accept
0132 C4 =1 300 SWAP A ; swap nibbles
0133 F5F0 =1 301 MOV B,A ; store nibble in B
0135 E500 =1 302 MOV A,0 ; echo received char
0137 11CF =1 303 CALL SENDCHAR
0139 C298 =1 304 IO0070: CLR RI
013B 311C =1 305 CALL GETCHAR ; second nibble
013D F500 =1 306 MOV 0,A ; store received char
013F 11F7 =1 307 CALL ASCII2HEX
0141 40F6 =1 308 JC IO0070 ; if not '0' thru 'F', don't accept
0143 45F0 =1 309 ORL A,B ; combine nibbles
0145 F5F0 =1 310 MOV B,A ; store results in B
0147 E500 =1 311 MOV A,0 ; echo received char
0149 11CF =1 312 CALL SENDCHAR
014B E5F0 =1 313 MOV A,B ; final result
014D D000 =1 314 POP 0
014F D0F0 =1 315 POP B
=1 316
0151 22 =1 317 RET
=1 318
319
320 ;____________________________________________________________________
321 ; TEXT DATA TABLES
322
0152 0A0D00 323 SEPERATOR: DB 10,13,0
324
325 ;____________________________________________________________________
326
327 END
328
VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND
842MSTR PAGE 7
ACC. . . . . . . . . . . . . . . D ADDR 00E0H PREDEFINED
ASCII2HEX. . . . . . . . . . . . C ADDR 00F7H
B. . . . . . . . . . . . . . . . D ADDR 00F0H PREDEFINED
DELAY. . . . . . . . . . . . . . C ADDR 00A3H
DLY1 . . . . . . . . . . . . . . C ADDR 00A9H
EA . . . . . . . . . . . . . . . B ADDR 00AFH PREDEFINED
EX0. . . . . . . . . . . . . . . B ADDR 00A8H PREDEFINED
GETCHAR. . . . . . . . . . . . . C ADDR 011CH
GETVAL . . . . . . . . . . . . . C ADDR 0124H NOT USED
HEX2ASCII. . . . . . . . . . . . C ADDR 00EBH
IEIP2. . . . . . . . . . . . . . D ADDR 00A9H PREDEFINED
INPUT. . . . . . . . . . . . . . D ADDR 0060H
IO0010 . . . . . . . . . . . . . C ADDR 00BEH
IO0020 . . . . . . . . . . . . . C ADDR 00CAH
IO0030 . . . . . . . . . . . . . C ADDR 00F4H
IO0040 . . . . . . . . . . . . . C ADDR 0117H
IO0050 . . . . . . . . . . . . . C ADDR 011AH
IO0060 . . . . . . . . . . . . . C ADDR 0128H
IO0070 . . . . . . . . . . . . . C ADDR 0139H
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 00CFH
SENDSPI. . . . . . . . . . . . . C ADDR 009DH
SENDSTRING . . . . . . . . . . . C ADDR 00B7H
SENDVAL. . . . . . . . . . . . . C ADDR 00D7H
SEPERATOR. . . . . . . . . . . . C ADDR 0152H
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 + -