📄 3in1so.asm
字号:
RETURN
DISP_1 BCF INTCON,7;BSF PORTA,1
MOVF R1,0
CALL TABLE
MOVWF PORTC
BSF INTCON,7
BCF PORTB,4
CALL DELAY5MS
BSF PORTB,4
BCF INTCON,7
MOVF R2,0
CALL TABLE
MOVWF PORTC
BSF INTCON,7
BCF PORTB,5
;BSF PORTC,3
CALL DELAY5MS
BSF PORTB,5
;BCF PORTC,3
BCF INTCON,7
MOVF R3,0
CALL TABLE
MOVWF PORTC
BSF INTCON,7
BCF PORTA,2
CALL DELAY5MS
BSF PORTA,2
BCF INTCON,7
MOVF R4,0
CALL TABLE
MOVWF PORTC
BCF INTCON,7
BCF PORTA,1
CALL DELAY5MS
BSF PORTA,1
RETURN
DISP_2 BCF INTCON,7
MOVF R1,0
CALL TABLE
MOVWF PORTC
BSF INTCON,7
BCF PORTB,4
CALL DELAY5MS
BSF PORTB,4
BCF INTCON,7
MOVF R2,0
CALL TABLE
MOVWF PORTC
BSF INTCON,7
BCF PORTB,5
BSF PORTC,3
CALL DELAY5MS
BSF PORTB,5
BCF PORTC,3
BCF INTCON,7
MOVF R3,0
CALL TABLE
MOVWF PORTC
BSF INTCON,7
BCF PORTA,2
CALL DELAY5MS
BSF PORTA,2
;BCF INTCON,RABIF
BCF INTCON,7
MOVF R4,0
CALL TABLE
MOVWF PORTC
BSF INTCON,7
BCF PORTA,1
CALL DELAY5MS
BSF PORTA,1
;BCF INTCON,RABIF
;BSF INTCON,7
RETURN
DELAY5MS MOVLW 0X04
MOVWF 0X70
MOVWF 0X71
DEL1 NOP
NOP
DECFSZ 0X70,1
GOTO DEL1
MOVLW 0X02
SUBWF 0X71,0
BTFSS STATUS,0
RETURN
DECF 0X71,1
MOVLW 0XFF
MOVWF 0X70
GOTO DEL1
;=========================F-CELIANG==========================
F_CL ; CLRWDT
; BTFSS PORTA,0
; GOTO F_CL0
F_CL1 ; CLRWDT
; BTFSC PORTA,0
; GOTO F_CL1
;GOTO F_CL2
F_CL0 ;CLRWDT
; BTFSS PORTA,0
; GOTO F_CL0
BCF T1CON,TMR1ON
BCF INTCON,7
CLRF TMR1H
CLRF TMR1L
CLRF FTH
CLRF FTL
MOVLW 0X27
MOVWF FTH
MOVLW 0X10
MOVWF FTL
;MOVF PORTA,0
;MOVWF PORTA
;MOVLW 0X4E
; MOVWF FTH
; MOVLW 0X20
; MOVWF FTL
F_CL2 BSF T1CON,TMR1ON
; BSF STATUS,RP1
; BCF STATUS,RP0
; BCF ANSEL,0
BCF STATUS,RP1
BSF STATUS,RP0
CLRF IOCA
CLRF IOCB
BSF IOCA,0
BSF TRISA,0
BSF WPUA,0
BCF PCON,5
BCF STATUS,RP0
MOVF PORTA,0
BSF INTCON,RABIE
BSF INTCON,GIE
BCF 0X77,1
BCF 0X77,2
BCF 0X77,3
F_CL33 BTFSC 0X77,2
GOTO F_SSH
BTFSC 0X77,3
GOTO F_SSL
CALL F_JS
F_CL30 CALL DISP_2
MOVLW 0XA1
SUBWF TMR1H,0
BTFSC STATUS,0
GOTO F_SSL1
RETURN;GOTO F_CL33
F_SSH MOVLW 0X11
MOVWF R1
MOVWF R2
MOVWF R3
MOVWF R4
CALL DISP_2
BCF 0X77,2
RETURN;GOTO F_SSH
RETURN
F_SSL MOVLW 0X10
MOVWF R1
MOVWF R2
MOVWF R3
MOVWF R4
CALL DISP_2
BCF 0X77,3
RETURN;GOTO F_SSL
RETURN
F_SSL1 BCF INTCON,7
BCF T1CON,TMR1ON
CLRF TMR1H
CLRF TMR1L
BSF T1CON,TMR1ON
BSF INTCON,7
RETURN; GOTO F_SSL
;=====================================F_JS=============================
F_JS BCF 0X77,2
BCF 0X77,3
BCF INTCON,7
MOVLW 0X16
SUBWF FTH,0
BTFSC STATUS,0
GOTO F_JS1
BSF 0X77,2
GOTO F_END
F_JS1 MOVLW 0XA0
SUBWF FTH,0
BTFSS STATUS,0
GOTO F_JS2
BSF 0X77,3
GOTO F_END
F_JS2 MOVLW 0X4C
MOVWF BUF2
MOVLW 0X4B
MOVWF BUF1
MOVLW 0X40 ;4C4B40H=5000000
MOVWF BUF0
MOVF FTH,0
MOVWF LDIVH
MOVF FTL,0
MOVWF LDIVL
BSF INTCON,7
CALL DIV2
MOVF BUF1,0
MOVWF CCL
MOVF BUF0,0
MOVWF DDH
CALL VOL_BCD
RETURN
F_END BSF INTCON,7
RETURN
;================================ZD_F===========================================
KSZD_F BCF INTCON,7
BCF T1CON,TMR1ON
MOVWF W_TEMP
SWAPF STATUS,0
CLRF STATUS
MOVWF ST_TEMP
; MOVF PCLATH,0
; MOVWF ZZ_HH
MOVF TMR1H,0
MOVWF FTH
MOVF TMR1L,0
MOVWF FTL
CLRF TMR1L
CLRF TMR1H
BSF T1CON,TMR1ON
; MOVLW 0X27
;MOVWF FTHH
;MOVLW 0X20
;MOVWF FTLL
BTFSS 0X77,1
GOTO GG1
BCF 0X77,1
GOTO GG2
GG1 BSF 0X77,1
GG2 MOVF PORTA,0
MOVWF PORTA
BCF INTCON,RABIF
; BSF STATUS,RP0
; BCF IOCA,0
; BCF STATUS,RP0
; MOVF ZZ_HH,0
; MOVWF PCLATH
SWAPF ST_TEMP,0
MOVWF STATUS
SWAPF W_TEMP,1
SWAPF W_TEMP,0
BSF INTCON,7
; MOVLW 0X44
; MOVWF PORTC
; BSF PORTA,1
; BSF PORTA,2
; BSF PORTB,5
; BCF PORTB,4
;MAS GOTO MAS
RETFIE
;================================================================================
DIV2
CLRF BUF3
MOVLW 0X10
MOVWF MUL
AGAIN_DIV
CALL RT_SUB_DIV ;调用移位除法子程序
DECFSZ MUL,1 ;16次完成则结束
GOTO AGAIN_DIV ;未完成则继续
RETURN
RT_SUB_DIV
BCF STATUS,0;c标志清0
RLF BUF0,1;被除数左移1位
RLF BUF1,1
RLF BUF2,1
RLF BUF3,1
BTFSC STATUS,0
GOTO RT3_DIV ;c标志为1则直接相减
MOVF BUF3,0 ;c标志为0则先比较大小
MOVWF MULH ;
MOVF BUF2,0
MOVWF MULL
MOVF LDIVH,0 ;先比较高位
SUBWF MULH,1
BTFSC STATUS,2
GOTO RT1_DIV ;高位相减跳RT1比较低位
GOTO RT2_DIV ;高位不等跳RT2
RT1_DIV
MOVF LDIVL,0 ;比较低位
SUBWF MULL,1
BTFSC STATUS,2
GOTO RT3_DIV ;低位也相等则跳RT3,相减,上1
RT2_DIV
BTFSS STATUS,0
RETURN ;减数大则返回,减数小则相减,上1
RT3_DIV
BSF BUF0,0;上1
CALL SUB_2B_DIV ;调2字节减法子程
RETURN
SUB_2B_DIV
MOVF LDIVH,0 ;高字节相减
SUBWF BUF3,1
MOVF LDIVL,0 ;低字节相减
SUBWF BUF2,1
BTFSC STATUS,2
RETURN ;低字节相等,无借位,返回
BTFSC STATUS,0
RETURN ;无借位,返回
DECF BUF3,1 ;低字节相减有借位,高字节结果减1
RETURN
;==========================wr_eerom===================
WRI_ ;写子程序
bsf STATUS,RP1
bsf STATUS,RP0 ;bank3
btfsc EECON1,WR
goto $-1
bcf STATUS,RP0
bcf STATUS,RP1 ;bank0
movf ADDR,W
bsf STATUS,RP1 ;bank2
movwf EEADR
bcf STATUS,RP1 ;bank0
movf VALU,W
bsf STATUS,RP1 ;bank2
movwf EEDATA
bsf STATUS,RP0 ;bank3
bcf EECON1,EEPGD ;to data memory
bsf EECON1,WREN
bcf INTCON,GIE
movlw 55h
movwf EECON2
movlw 0aah
movwf EECON2
bsf EECON1,WR
btfsc EECON1,WR
goto $-1
bsf INTCON,GIE
bcf EECON1,WREN
bcf STATUS,RP0
bcf STATUS,RP1 ;bank0
return
;===============read_ee=====================
READ_ ;读子程序
bcf STATUS,RP1
bcf STATUS,RP0 ;bank0
movf ADDR,W
bsf STATUS,RP1 ;bank2
movwf EEADR
bsf STATUS,RP0 ;bank3
bcf EECON1,EEPGD
bsf EECON1,RD
bcf STATUS,RP0 ;bank2
movf EEDATA,W
bcf STATUS,RP1 ;bnak0
;movwf INDF ;存读出值
return
;-----------TIME=====================================
TIME_T ;BCF INTCON,7
CLRF TMR0
BCF INTCON,T0IF
MOVWF W_TEMP
SWAPF STATUS,0
CLRF STATUS
MOVWF ST_TEMP
; MOVF PCLATH,0
; MOVWF ZZ_HH
MOVLW 0X98
SUBWF XT1,0
BTFSC STATUS,0
GOTO TIM_1
INCF XT1,1
;MOVF ZZ_HH,0
; MOVWF PCLATH
SWAPF ST_TEMP,0
MOVWF STATUS
SWAPF W_TEMP,1
SWAPF W_TEMP,0
RETFIE
TIM_1 CLRF XT1
MOVLW 0X24
SUBWF XT2,0
BTFSC STATUS,0
GOTO TIM_11
INCF XT2,1
SWAPF ST_TEMP,0
MOVWF STATUS
SWAPF W_TEMP,1
SWAPF W_TEMP,0
RETFIE
TIM_11 CLRF XT2
MOVLW 0X09
SUBWF RR1,0
BTFSC STATUS,0
GOTO TIM_2
INCF RR1,1
; MOVF ZZ_HH,0
; MOVWF PCLATH
SWAPF ST_TEMP,0
MOVWF STATUS
SWAPF W_TEMP,1
SWAPF W_TEMP,0
RETFIE
TIM_2 CLRF RR1
MOVLW 0X09
SUBWF RR2,0
BTFSC STATUS,0
GOTO TIM_3
INCF RR2,1
; MOVF ZZ_HH,0
; MOVWF PCLATH
SWAPF ST_TEMP,0
MOVWF STATUS
SWAPF W_TEMP,1
SWAPF W_TEMP,0
RETFIE
TIM_3 CLRF RR2
MOVLW 0X09
SUBWF RR3,0
BTFSC STATUS,0
GOTO TIM_4
INCF RR3,1
; MOVF ZZ_HH,0
; MOVWF PCLATH
SWAPF ST_TEMP,0
MOVWF STATUS
SWAPF W_TEMP,1
SWAPF W_TEMP,0
RETFIE
TIM_4 CLRF RR3
INCF RR4,1
; MOVF ZZ_HH,0
;MOVWF PCLATH
SWAPF ST_TEMP,0
MOVWF STATUS
SWAPF W_TEMP,1
SWAPF W_TEMP,0
RETFIE
;=========================================================================
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -