📄 xq_16io.lst
字号:
01F2 8013 340 jmp get_key4
01F4 BF0204 341 get_key1: cjne r7,#02,get_key2
01F7 5408 342 anl a,#08h
01F9 800C 343 jmp get_key4
01FB BF0304 344 get_key2: cjne r7,#03,get_key3
A51 MACRO ASSEMBLER XQ_AP66C.LST 11/24/2003 18:38:36 PAGE 17
01FE 5410 345 anl a,#10h
0200 8005 346 jmp get_key4
0202 BF040B 347 get_key3: cjne r7,#04,get_exit
0205 5420 348 anl a,#20h
0207 B40004 349 get_key4: cjne a,#00,get_key5
020A 7F01 350 mov r7,#ON
020C 8002 351 jmp get_exit
020E 7F00 352 get_key5: mov r7,#OFF
0210 22 353 get_exit: ret
354 ;----------------------------------------------------------------------------
355 ; PC16I8O sk2 explanation using panel control
356 ; Sk2.2 & sk2.4 using indicating lamp for PASS & FAIL
357 ; C call function prototype void _disp_pilot(char c stus s)
358 ;
0211 EF 359 _disp_pilot: mov a,r7
0212 B4010C 360 cjne a,#01,disp_pilot2
0215 ED 361 mov a,r5
0216 B40004 362 cjne a,#00,disp_pilot1
0219 D2B6 363 setb p3.6
021B 8011 364 jmp disp_exit
021D C2B6 365 disp_pilot1: clr p3.6
021F 800D 366 jmp disp_exit
A51 MACRO ASSEMBLER XQ_AP66C.LST 11/24/2003 18:38:36 PAGE 18
0221 B4020A 367 disp_pilot2: cjne a,#02,disp_exit
0224 ED 368 mov a,r5
0225 B40004 369 cjne a,#00,disp_pilot3
0228 D2B7 370 setb p3.7
022A 8002 371 jmp disp_exit
022C C2B7 372 disp_pilot3: clr p3.7
373 ;
022E 22 374 disp_exit: ret
375 ;----------------------------------------------------------------------------
022F C0E0 376 _delay: push acc
0231 C0F0 377 push b
0233 EF 378 mov a,r7
0234 6005 379 jz set_delayl4
0236 120000 F 380 set_delayl1: call subdelay
0239 DFFB 381 djnz r7,set_delayl1
023B EE 382 set_delayl4: mov a,r6
023C 600B 383 jz set_delayend
023E 75F0FF 384 set_delayl3: mov b,#0ffh
0241 120000 F 385 set_delayl2: call subdelay
0244 D5F0FA 386 djnz b,set_delayl2
0247 DEF5 387 djnz r6,set_delayl3
0249 D0F0 388 set_delayend: pop b
A51 MACRO ASSEMBLER XQ_AP66C.LST 11/24/2003 18:38:36 PAGE 19
024B D0E0 389 pop acc
024D 22 390 ret
391
024E 74FA 392 subdelay: mov a,#250 ;delay 1ms
0250 00 393 subdelayl1: nop
0251 00 394 nop
0252 00 395 nop
0253 00 396 nop
0254 00 397 nop
0255 14 398 dec a
0256 70F8 399 jnz subdelayl1
0258 22 400 ret
401 ;----------------------------------------------------------------------------
402 ; Read current time r6:MSB , r7: LSB
403 ;
0259 AF00 F 404 _current_time: mov r7,tick_clock+01h
025B AE00 F 405 mov r6,tick_clock
025D 22 406 ret
407 ;----------------------------------------------------------------------------
025E A680 408 scand_input: mov @r0,p0
0260 08 409 inc r0
0261 A6A0 410 mov @r0,p2
A51 MACRO ASSEMBLER XQ_AP66C.LST 11/24/2003 18:38:36 PAGE 20
0263 08 411 inc r0
0264 A6B0 412 mov @r0,p3
0266 22 413 ret
414 ;----------------------------------------------------------------------------
0267 7800 F 415 deal_signal: mov r0,#input_buf1
0269 7900 F 416 mov r1,#input_buf2
026B E6 417 mov a,@r0
026C 57 418 anl a,@r1
026D F500 F 419 mov port0_stus,a
026F 08 420 inc r0
0270 09 421 inc r1
0271 E6 422 mov a,@r0
0272 57 423 anl a,@r1
0273 F500 F 424 mov port2_stus,a
0275 08 425 inc r0
0276 09 426 inc r1
0277 E6 427 mov a,@r0
0278 57 428 anl a,@r1
0279 F500 F 429 mov port3_stus,a
027B 22 430 ret
431 ;----------------------------------------------------------------------------
432 ; Convert 8-bit BCD variable in accumulator
A51 MACRO ASSEMBLER XQ_AP66C.LST 11/24/2003 18:38:36 PAGE 21
433 ; Result 2-digit packed HEX format in acc.
434 ;
027C F8 435 _bcd2tohex8: mov r0,a
027D C4 436 swap a
027E 540F 437 anl a,#00001111b
0280 75F00A 438 mov b,#10
0283 A4 439 mul ab
0284 F9 440 mov r1,a
0285 E8 441 mov a,r0
0286 540F 442 anl a,#00001111b
0288 29 443 add a,r1
0289 22 444 ret
445 ;----------------------------------------------------------------------------
028A 7932 446 _delay50us: mov r1,#50 ; delay parameter
028C D9FE 447 djnz r1,$ ; about 50*1 us = 50 us
028E 22 448 ret
449 ;----------------------------------------------------------------------------
028F 7A19 450 delay5ms: mov r2,#25 ; delay parameter
0291 79C8 451 delay51: mov r1,#200 ; delay parameter
0293 D9FE 452 djnz r1,$ ; about 10*200*1us = 2 ms
0295 DAFA 453 djnz r2,delay51
0297 22 454 ret
A51 MACRO ASSEMBLER XQ_AP66C.LST 11/24/2003 18:38:36 PAGE 22
455 ;----------------------------------------------------------------------------
456 ; To place interrupt routines, put an LJMP at the interrupt vector address.
457
---- 458 cseg at 0BH ; 0BH is address for Timer 0 interrupt
000B 020000 F 459 ljmp timer0
460
461 int0_code_seg segment code ; segment for interrupt function
---- 462 rseg int0_code_seg ; switch to this code segment
463 using 1 ; register bank for interrupt routine
464
0000 C0D0 465 timer0: push psw
0002 75D008 466 mov psw,#08h ; register bank 1
0005 C0E0 467 push acc
0007 758AE0 468 mov tl0,#LSB_PERIOD
000A 758CB2 469 mov th0,#MSB_PERIOD ; reload interrupt period
000D 0500 F 470 inc tick_clock+01h ; timer pointer
000F E500 F 471 mov a,tick_clock+01h
0011 7002 472 jnz int_timer
0013 0500 F 473 inc tick_clock
0015 7800 F 474 int_timer: mov r0,#input_buf2
0017 120000 F 475 lcall scand_input ; scand input port status
001A 120000 F 476 lcall deal_signal
A51 MACRO ASSEMBLER XQ_AP66C.LST 11/24/2003 18:38:36 PAGE 23
001D D0E0 477 pop acc
001F D0D0 478 pop psw
0021 32 479 reti
480 ;----------------------------------------------------------------------------
481 ; To place interrupt routines, put an LJMP at the interrupt vector address.
482
---- 483 cseg at 1BH ; 1BH is address for Timer1 interrupt
001B 020000 F 484 ljmp timer1
485
486 int1_code_seg segment code ; segment for interrupt function
---- 487 rseg int1_code_seg ; switch to this code segment
488 using 1 ; register bank for interrupt routine
489
0000 C0D0 490 timer1: push psw
0002 75D008 491 mov psw,#08h ; register bank 1 (bank from 0 to 3)
0005 C0E0 492 push acc
0007 758BEC 493 mov tl1,#0ech ; reload interrupt period
000A 758DCB 494 mov th1,#0cbh
000D 7800 F 495 mov r0,#input_buf1
000F 120000 F 496 lcall scand_input ; scand input port status
0012 D0E0 497 pop acc
0014 D0D0 498 pop psw
A51 MACRO ASSEMBLER XQ_AP66C.LST 11/24/2003 18:38:36 PAGE 24
0016 32 499 reti
500 ;----------------------------------------------------------------------------
501
502
503
504 END
REGISTER BANK(S) USED: 0 1
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -