📄 p18demo.lst
字号:
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 + -