;


    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