⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xq_16io.lst

📁 16输入8输出单片机程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
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 + -