📄 up2dsptest1.lst
字号:
227 ; MOV R0, #04H ; R0= external address
00B3 758004 228 MOV P0, #04H
00B6 C2B2 229 CLR P3.2
230
00B8 F580 231 MOV P0, A
00BA C2B6 232 CLR P3.6
00BC D2B6 233 SETB P3.6
00BE D2B2 234 SETB P3.2
240
241 ; get low byte of address , send in addr 05
00C0 120000 F 242 CALL GET_BCD ; getting a BCD valued byte in A
243
244
245
00C3 758005 246 MOV P0, #05H
00C6 C2B2 247 CLR P3.2
248
00C8 F580 249 MOV P0, A
00CA C2B6 250 CLR P3.6
00CC D2B6 251 SETB P3.6
00CE D2B2 252 SETB P3.2
A51 MACRO ASSEMBLER UP2DSPTEST1 04/12/2006 14:30:29 PAGE 5
259 ; send RW request in addr 02
260
00D0 EC 261 MOV A, R4
262
263
264
00D1 758002 265 MOV P0, #02H
00D4 C2B2 266 CLR P3.2
267
00D6 F580 268 MOV P0, A
00D8 C2B6 269 CLR P3.6
00DA D2B6 270 SETB P3.6
00DC D2B2 271 SETB P3.2
272
278 ; check R or W , if W then fetch 16-bit data word
279
00DE DC4C 280 DJNZ R4, DO_READ
281
282 ;write command process
00E0 120000 F 283 PROCESS_WRITE_CMD: CALL RECEI_BYTE ; expect one space between
address and data
00E3 B420FA 284 CJNE A,#20H,PROCESS_WRITE_CMD ; space = 0x20
285
00E6 120000 F 286 CALL TRANS_BYTE
287
288 ; get high byte of data
00E9 120000 F 289 CALL GET_BCD ; getting a BCD valued byte in A
00EC F50C 290 MOV 0CH, A ; high byte
291
292 ; get low byte of data
00EE 120000 F 293 CALL GET_BCD ; getting a BCD valued byte in A
00F1 F50B 294 MOV 0BH, A ;
295
296 ;if PM write then there is one more
00F3 BA0005 297 CJNE R2,#0H,WRITE_CMD_DM ; if R2!=0 then DM
298
00F6 120000 F 299 CALL GET_BCD ; getting a BCD valued byte in A
00F9 F50A 300 MOV 0AH, A ; lowest byte
301
302
303 ; sending data out, high order byte first
00FB 304 WRITE_CMD_DM:
305
306
307
308 ; this section does not use movx
00FB 758006 309 MOV P0, #06H
00FE C2B2 310 CLR P3.2
311
0100 850C80 312 MOV P0, 0CH ; 0c
0103 C2B6 313 CLR P3.6
0105 D2B6 314 SETB P3.6
0107 D2B2 315 SETB P3.2
316
0109 758006 317 MOV P0, #06H
A51 MACRO ASSEMBLER UP2DSPTEST1 04/12/2006 14:30:29 PAGE 6
010C C2B2 318 CLR P3.2
319
010E 850B80 320 MOV P0, 0BH ; 0b
0111 C2B6 321 CLR P3.6
0113 D2B6 322 SETB P3.6
0115 D2B2 323 SETB P3.2
324
325
0117 BA000E 326 CJNE R2,#0H,end_wr_done ; if R2!=0 then DM
327
011A 758006 328 MOV P0, #06H
011D C2B2 329 CLR P3.2
330
011F 850A80 331 MOV P0, 0AH ; 0a
0122 C2B6 332 CLR P3.6
0124 D2B6 333 SETB P3.6
0126 D2B2 334 SETB P3.2
335
0128 00 336 end_wr_done: nop
0129 020000 F 337 JMP label ;DO IT ALL OVER AGAIN
356
357 ;READ command process
012C 00 358 DO_READ: NOP
359 ; CALL FUNC_DO_READ
360 ; CALL FUNC_DO_READ
361 ; JMP label ;DO IT ALL OVER AGAIN
362
012D 363 FUNC_DO_READ:
012D 7420 364 MOV A, #20H ;sending a space
012F 120000 F 365 CALL TRANS_BYTE
366
367 ; get two nibbles
368
369
0132 758006 370 MOV P0, #06H
0135 C2B2 371 CLR P3.2
372
0137 7580FF 373 MOV P0, #0FFH ;prepare read input
374
013A C2B7 375 CLR P3.7
013C E580 376 MOV A, P0 ;get one byte from DSP
013E D2B7 377 SETB P3.7
0140 D2B2 378 SETB P3.2
A51 MACRO ASSEMBLER UP2DSPTEST1 04/12/2006 14:30:29 PAGE 7
384
0142 FD 385 MOV R5,A ;R5= raw 2x 4 bits received
386
387 ; do nibble 0
0143 120000 F 388 CALL BCD_ASCII ;input in A, return in A
389
390
0146 F50E 391 MOV 0EH, A ;using location 13,12,11,10,9,8 to store result
392
0148 ED 393 MOV A, R5
0149 C4 394 SWAP A
395
396 ; do nibble 1
014A 120000 F 397 CALL BCD_ASCII ;input in A, return in A
398
014D F50F 399 MOV 0FH, A ;using location 13,12,11,10,9,8 to store result
400
401 ; get two nibbles
402
403
014F 758006 404 MOV P0, #06H
0152 C2B2 405 CLR P3.2
406
0154 7580FF 407 MOV P0, #0FFH ;prepare read input
408
0157 C2B7 409 CLR P3.7
0159 E580 410 MOV A, P0 ;get one byte from DSP
015B D2B7 411 SETB P3.7
015D D2B2 412 SETB P3.2
418
015F FD 419 MOV R5,A ;R5= raw 2x 4 bits received
420
421 ; do nibble 2
0160 120000 F 422 CALL BCD_ASCII ;input in A, return in A
423
0163 F50A 424 MOV 0AH, A ;using location 13,12,11,10,9,8 to store result
425
0165 ED 426 MOV A, R5
0166 C4 427 SWAP A
428
429 ; do nibble 3
0167 120000 F 430 CALL BCD_ASCII ;input in A, return in A
431
016A F50B 432 MOV 0BH, A ;using location 13,12,11,10,9,8 to store result
433
434
435 ;check to see if PM word, if so then read two more nibbles
016C BA001D 436 CJNE R2, #0, READ_DONE
437
438 ; get two nibbles
439
440
016F 758006 441 MOV P0, #06H
0172 C2B2 442 CLR P3.2
443
0174 7580FF 444 MOV P0, #0FFH ;prepare read input
445
0177 C2B7 446 CLR P3.7
0179 E580 447 MOV A, P0 ;get one byte from DSP
017B D2B7 448 SETB P3.7
017D D2B2 449 SETB P3.2
A51 MACRO ASSEMBLER UP2DSPTEST1 04/12/2006 14:30:29 PAGE 8
450
456
017F FD 457 MOV R5,A ;R5= raw 2x 4 bits received
458
459 ; do nibble 4
0180 120000 F 460 CALL BCD_ASCII ;input in A, return in A
461
0183 F50C 462 MOV 0CH, A ;using location 13,12,11,10,9,8 to store result
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -