;
LIST P=PIC16F84
INCLUDE "P16F84.INC"
__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF
;2001,5,27 7
BYTE0 EQU 0CH
BYTE1 EQU 0DH
BYTE2 EQU 0EH
BAND EQU 0FH
DIGIT12 EQU 11H
DIGIT34 EQU 12H
BLANK EQU 15H
CNT1 EQU 16H
CNT2 EQU 17H
CNT3 EQU 18H
CNT4 EQU 19H
COLUM EQU 15H
LPCNT1 EQU 1AH
LPCNT2 EQU 1BH
OVRFLW EQU 1CH
SHIFT EQU 1DH
GATE EQU 1EH
TEMP EQU 1FH
WORK1 EQU 20H
WORK2 EQU 21H
ORG 0
;********************************************
;MAIN
;********************
MAIN
BSF STATUS,RP0 ;
MOVLW 018H ;4.3
MOVWF TRISA
CLRF TRISB
MOVLW 057H
MOVWF OPTION_REG
BCF STATUS,RP0
CLRF PORTB
MAINLP
CALL LOWBAND
CALL MESURE
CALL LOW1
CALL LCD_INI
CALL DISP
CALL GET_7SEG
GOTO MAINLP
;****************************
LOWBAND BCF BAND,0
BSF STATUS,RP0
MOVLW 068H
MOVWF OPTION_REG
BCF STATUS,RP0
RETURN
;*************0.1
MESURE
BCF PORTB,0
CLRF BYTE0
CLRF BYTE1
CLRF BYTE2
CLRF TMR0
BTFSC GATE,0
GOTO SHORT
;*******100MSEC 0,3
SHORT
BCF PORTB,0
CLRF OVRFLW
BSF PORTB,0
CALL MESLOOP
CALL MESLOOP
CALL MESLOOP
BCF PORTB,0
short1 RETURN
;*******1SEC
LONG
BSF PORTB,0
CLRF OVRFLW
MOVLW 05H
MOVWF TEMP
LONGLP CALL MESLOOP
DECFSZ TEMP,F
GOTO LONGLP
CALL MESLOOP
CALL MESLOOP
CALL MESLOOP
CALL MESLOOP
CALL MESLOOP
NOP
BCF PORTB,0
RETURN
;*******************319,997
MESLOOP MOVLW 08DH
MOVWF LPCNT1
;+++++++++++++++++++
MESLP1
MOVLW 088H
MOVWF LPCNT2
;*******************
MESLP2 BTFSS INTCON,T0IF
GOTO DUMY1
BCF INTCON,T0IF
MOVLW 1
GOTO NEXT
DUMY1 NOP
NOP
MOVLW 0
NEXT ADDWF BYTE1,F
RLF BYTE1,W
ANDLW 1
ADDWF BYTE2,F
DECFSZ LPCNT2,F
GOTO MESLP2
;**********************
NOP
MESLP3 DECFSZ LPCNT1,F
GOTO MESLP1
;**********************
RETURN
;************
;CONVRT
; BTFSC BAND,0
; GOTO WIDE
;****************
LOW1
MOVF TMR0,W
MOVWF BYTE0
GOTO BCD
RETURN
LCD_INI
BTFSC COLUM,3
GOTO DGIT34
BTFSC COLUM,2
GOTO DGIT12
DGIT34
MOVF DIGIT34,W
CALL DISP
MOVLW 06H
MOVWF COLUM
DGIT12
MOVF DIGIT12,W
CALL DISP
MOVLW 04H
MOVWF COLUM
GOTO MAINLP
;********************
DISP
MOVWF TEMP
SWAPF TEMP,W
ANDLW 0FH
CALL GET_7SEG
MOVWF PORTB
MOVF COLUM,W
MOVWF PORTA
BCF STATUS,C
RRF COLUM,F
CALL TIME5M
CLRF PORTA
MOVF TEMP,W
ANDLW 0FH
CALL GET_7SEG
MOVWF PORTB
MOVF COLUM,W
MOVWF PORTA
CALL TIME5M
CLRF PORTA
RETURN
;******************************
BCD
BCF STATUS,C
MOVLW 018H
MOVWF SHIFT
CLRF DIGIT12
CLRF DIGIT34
;********************
LOOP
RLF BYTE0,F
RLF BYTE1,F
RLF BYTE2,F
RLF DIGIT12,F
RLF DIGIT34,F
DECFSZ SHIFT,F
GOTO ADJST
RETURN
;******BCD
ADJST
MOVF DIGIT12,W
CALL ADJBCD
MOVWF DIGIT12
MOVF DIGIT34,W
CALL ADJBCD
MOVWF DIGIT34
GOTO LOOP
;************************
ADJBCD
MOVWF WORK1
MOVLW 3
ADDWF WORK1,W
MOVWF WORK2
BTFSC WORK2,3
MOVWF WORK1
MOVLW 030H
ADDWF WORK1,W
MOVWF WORK2
BTFSC WORK2,7
MOVWF WORK1
MOVF WORK1,W
RETURN
;************7
GET_7SEG
BTFSS BLANK,0
GOTO NOTBLNK
ANDLW 0FH
BTFSC STATUS,Z
RETLW 0
BCF BLANK,0
NOTBLNK
ANDLW 0FH
ADDWF PCL,F
RETLW B'01111110'
RETLW B'00001100'
RETLW B'10110110'
RETLW B'10011110'
RETLW B'11001100'
RETLW B'11011010'
RETLW B'11111010'
RETLW B'00001110'
RETLW B'11111110'
RETLW B'11001110'
RETLW B'00000000'
RETLW B'00000000'
RETLW B'00000000'
RETLW B'00000000'
RETLW B'00000000'
RETLW B'00000000'
;**************************
;****************TIMER
TIME100
MOVLW 9H
MOVWF CNT1
T_LP1 CALL TIME10
DECFSZ CNT1,F
GOTO T_LP1
RETURN
TIME10 MOVLW 7H
MOVWF CNT2
T_LP2
DECFSZ CNT2,F
GOTO T_LP2
RETURN
;**********************************
TIME1M MOVLW 0AH
MOVWF CNT3
T_LP3 CALL TIME100
DECFSZ CNT3,F
GOTO T_LP3
RETURN
TIME5M
MOVLW 38H
MOVWF CNT4
T_LP4 CALL TIME100
DECFSZ CNT4,F
GOTO T_LP4
RETURN
END