; 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