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

📄 p18demo.lst

📁 详细讲解了PIC18单片机的各个功能模块的使用方法和运用技巧
💻 LST
📖 第 1 页 / 共 5 页
字号:
000568 6EF7           00748         movwf   TBLPTRH
00056A 0E??           00749         movlw   LOW stan_table
00056C 6EF6           00750         movwf   TBLPTRL
00056E 50??           00751         movf    ptr_pos,W
000570 26F6           00752         addwf   TBLPTRL,F
000572 6AE8           00753         clrf    WREG
000574 22F7           00754         addwfc  TBLPTRH,F
000576 22F8           00755         addwfc  TBLPTRU,F
                      00756 
000578                00757 stan_next_char_2
000578 0009           00758         tblrd   *+
00057A CFF5 F???      00759         movff   TABLAT,temp_wr
00057E EC?? F???      00760         call    d_write                 ;send character to LCD
                      00761 
000582 2E??           00762         decfsz  ptr_count,F             ;move pointer to next char
000584 D???           00763         bra     stan_next_char_2
                      00764 
000586 0E0A           00765         movlw   "\n"                    ;move data into TXREG
000588 6EAD           00766         movwf   TXREG                   ;next line
00058A A2AC           00767         btfss   TXSTA,TRMT              ;wait for data TX
00058C EF?? F???      00768         goto    $-2
000590 0E0D           00769         movlw   "\r"                    ;move data into TXREG
000592 6EAD           00770         movwf   TXREG                   ;carriage return
000594 A2AC           00771         btfss   TXSTA,TRMT              ;wait for data TX
000596 EF?? F???      00772         goto    $-2
                      00773 
00059A 0012           00774         return
                      00775 ;----------------------------------------------------------------------
                      00776 
                      00777 
                      00778 ;------------------ 100ms Delay --------------------------------
00059C                00779 delay_100ms
00059C 0EFF           00780         movlw   0xFF
00059E 6E??           00781         movwf   temp_1
0005A0 0E83           00782         movlw   0x83
0005A2 6E??           00783         movwf   temp_2
                      00784 
0005A4                00785 d100l1
0005A4 2E??           00786         decfsz  temp_1,F
0005A6 D???           00787         bra     d100l1
MPASM  5.20                       P18DEMO.ASM   5-28-2008  15:51:06         PAGE 17


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0005A8 2E??           00788         decfsz  temp_2,F
0005AA D???           00789         bra     d100l1
0005AC 0012           00790         return
                      00791 
                      00792 ;---------------- 1s Delay -----------------------------------
0005AE                00793 delay_1s
0005AE 0EFF           00794         movlw   0xFF
0005B0 6E??           00795         movwf   temp_1
0005B2 6E??           00796         movwf   temp_2
0005B4 0E05           00797         movlw   0x05
0005B6 6E??           00798         movwf   temp_3
0005B8                00799 d1l1
0005B8 2E??           00800         decfsz  temp_1,F
0005BA D???           00801         bra     d1l1
0005BC 2E??           00802         decfsz  temp_2,F
0005BE D???           00803         bra     d1l1
0005C0 2E??           00804         decfsz  temp_3,F
0005C2 D???           00805         bra     d1l1
0005C4 0012           00806         return  
                      00807 
                      00808 ;---------------- Set Current Time ----------------------------
0005C6                00809 set_time
0005C6 0E80           00810         movlw   .128                    ;send "RA4= --> RBO= ++" to LCD
0005C8 6E??           00811         movwf   ptr_pos
0005CA EC?? F???      00812         call    stan_char_2
0005CE                00813 set_time_again
0005CE A880           00814         btfss   scroll                  ;wait for button release
0005D0 D???           00815         bra     $-2
                      00816 
0005D2 EC?? F???      00817         call    LCDLine_1               ;start at 0x00 on LCD
                      00818 
0005D6 A081           00819         btfss   select                  ;wait for RB0 button release
0005D8 D???           00820         bra     $-2
0005DA EC?? F???      00821         call    delay_100ms                     
0005DE A081           00822         btfss   select                  ;increment hours (tens) ?
0005E0 D???           00823         bra     inc_hours
0005E2 D???           00824         bra     next_digit
0005E4                00825 inc_hours       
0005E4 2A??           00826         incf    hours
0005E6 50??           00827         movf    hours,W                 ;check if hours has passed 12 ?
0005E8 080D           00828         sublw   .13
0005EA A4D8           00829         btfss   STATUS,Z
0005EC D???           00830         bra     next_digit
0005EE 6A??           00831         clrf    hours                   ;YES, reset hours to 00
0005F0                00832 next_digit
0005F0 A880           00833         btfss   scroll                  ;move to next digit
0005F2 D???           00834         bra     inc_mins
0005F4 50??           00835         movf    hours,W         
                      00836 
0005F6 EC?? F???      00837         call    bin_bcd                 ;get hours ready for display
                      00838         
0005FA 50??           00839         movf    MsD,W                   ;send tens digit
0005FC 6E??           00840         movwf   temp_wr
MPASM  5.20                       P18DEMO.ASM   5-28-2008  15:51:06         PAGE 18


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0005FE EC?? F???      00841         call    d_write
000602 50??           00842         movf    LSD,W                   ;send ones digit
000604 6E??           00843         movwf   temp_wr
000606 EC?? F???      00844         call    d_write 
00060A 0E3A           00845         movlw   0x3A                    ;send   :   colon
00060C 6E??           00846         movwf   temp_wr
00060E EC?? F???      00847         call    d_write
                      00848 
000612 D???           00849         bra     set_time_again
                      00850         
000614                00851 inc_mins
000614 A880           00852         btfss   scroll                  ;wait for RA4 button release
000616 D???           00853         bra     $-2
000618 EC?? F???      00854         call    LCDLine_1
00061C 0E14           00855         movlw   0x14                    ;shift cursor to right 3 places
00061E 6E??           00856         movwf   temp_wr
000620 EC?? F???      00857         call    i_write
000624 0E14           00858         movlw   0x14
000626 6E??           00859         movwf   temp_wr
000628 EC?? F???      00860         call    i_write
00062C 0E14           00861         movlw   0x14
00062E 6E??           00862         movwf   temp_wr
000630 EC?? F???      00863         call    i_write
                      00864         
000634 A081           00865         btfss   select                  ;wait for RB0 button release
000636 D???           00866         bra     $-2
000638 EC?? F???      00867         call    delay_100ms
00063C A081           00868         btfss   select                  ;increment minutes (tens) ?
00063E D???           00869         bra     inc_minutes
000640 D???           00870         bra     next_digit?
000642                00871 inc_minutes     
000642 2A??           00872         incf    minutes
000644 50??           00873         movf    minutes,W               ;check if hours has passed 12 ?
000646 083C           00874         sublw   .60
000648 A4D8           00875         btfss   STATUS,Z
00064A D???           00876         bra     next_digit?
00064C 6A??           00877         clrf    minutes
00064E                00878 next_digit?
00064E A880           00879         btfss   scroll                  ;move to next digit
000650 D???           00880         bra     set_time_done
000652 50??           00881         movf    minutes,W
                      00882                 
000654 EC?? F???      00883         call    bin_bcd                 ;get minutes ready for display
                      00884         
000658 50??           00885         movf    MsD,W                   ;send tens digit
00065A 6E??           00886         movwf   temp_wr
00065C EC?? F???      00887         call    d_write
000660 50??           00888         movf    LSD,W                   ;send ones digit
000662 6E??           00889         movwf   temp_wr
000664 EC?? F???      00890         call    d_write 
000668 0E3A           00891         movlw   0x3A                    ;send  :   colon
00066A 6E??           00892         movwf   temp_wr
00066C EC?? F???      00893         call    d_write 
MPASM  5.20                       P18DEMO.ASM   5-28-2008  15:51:06         PAGE 19


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

000670 D???           00894         bra     inc_mins
                      00895 
000672                00896 set_time_done
000672 A880           00897         btfss   scroll                  ;wait for RA4 button release
000674 D???           00898         bra     $-2
000676 D???           00899         bra     overflow
                      00900         
                      00901 ;---------------- Binary (8-bit) to BCD -----------------------
                      00902 ;               255 = highest possible result
000678                00903 bin_bcd
000678 6A??           00904         clrf    MSD
00067A 6A??           00905         clrf    MsD
00067C 6E??           00906         movwf   LSD             ;move value to LSD
00067E                00907 ghundreth       
00067E 0E64           00908         movlw   .100            ;subtract 100 from LSD
000680 5C??           00909         subwf   LSD,W
000682 A0D8           00910         btfss   STATUS,C        ;is value greater then 100
000684 D???           00911         bra     gtenth          ;NO goto tenths
000686 6E??           00912         movwf   LSD             ;YES, move subtraction result into LSD
000688 2A??           00913         incf    MSD,F           ;increment hundreths
00068A D???           00914         bra     ghundreth       
00068C                00915 gtenth
00068C 0E0A           00916         movlw   .10             ;take care of tenths
00068E 5C??           00917         subwf   LSD,W
000690 A0D8           00918         btfss   STATUS,C
000692 D???           00919         bra     over            ;finished conversion
000694 6E??           00920         movwf   LSD
000696 2A??           00921         incf    MsD,F           ;increment tenths position
000698 D???           00922         bra     gtenth
00069A                00923 over                            ;0 - 9, high nibble = 3 for LCD
00069A 50??           00924         movf    MSD,W           ;get BCD values ready for LCD display
00069C 0A30           00925         xorlw   0x30            ;convert to LCD digit
00069E 6E??           00926         movwf   MSD
0006A0 50??           00927         movf    MsD,W
0006A2 0A30           00928         xorlw   0x30            ;convert to LCD digit
0006A4 6E??           00929         movwf   MsD
0006A6 50??           00930         movf    LSD,W
0006A8 0A30           00931         xorlw   0x30            ;convert to LCD digit
0006AA 6E??           00932         movwf   LSD
0006AC 0C00           00933         retlw   0
                      00934 
                      00935 ;---------------- Binary (16-bit) to BCD -----------------------
                      00936 ;               xxx = highest possible result
0006AE                00937 bin16_bcd
                      00938                                ; Takes number in NumH:NumL 
                      00939                                 ; Returns decimal in 
                      00940                                 ; TenK:Thou:Hund:Tens:Ones 
0006AE 38??           00941         swapf   NumH,W 
0006B0 0B0F           00942         andlw   0x0F
0006B2 0FF0           00943         addlw   0xF0
0006B4 6E??           00944         movwf   Thou 
0006B6 26??           00945         addwf   Thou,F 
0006B8 0FE2           00946         addlw   0xE2 
MPASM  5.20                       P18DEMO.ASM   5-28-2008  15:51:06         PAGE 20


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0006BA 6E??           00947         movwf  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -