; original File = Z:\timer.hex processor 16F84 #include __config _CP_OFF & _PWRTE_OFF & _WDT_OFF & _HS_OSC ; 0x3FFA ; RAM-Variable LRAM_0x0C equ 0x0C LRAM_0x0D equ 0x0D LRAM_0x0E equ 0x0E LRAM_0x0F equ 0x0F LRAM_0x10 equ 0x10 LRAM_0x11 equ 0x11 LRAM_0x12 equ 0x12 LRAM_0x13 equ 0x13 LRAM_0x14 equ 0x14 LRAM_0x15 equ 0x15 LRAM_0x16 equ 0x16 LRAM_0x17 equ 0x17 LRAM_0x18 equ 0x18 LRAM_0x19 equ 0x19 LRAM_0x1A equ 0x1A LRAM_0x1B equ 0x1B LRAM_0x1C equ 0x1C LRAM_0x1D equ 0x1D LRAM_0x1E equ 0x1E LRAM_0x1F equ 0x1F STATUS_SAVE equ 0x20 PCLATH_SAVE equ 0x21 PCLATH_SAVE equ 0x22 LRAM_0x23 equ 0x23 LRAM_0x24 equ 0x24 COUNTER_LO equ 0x25 COUNTER_HI equ 0x26 LRAM_0x27 equ 0x27 LRAM_0x28 equ 0x28 LRAM_0x29 equ 0x29 LRAM_0x2A equ 0x2A LRAM_0x2B equ 0x2B LRAM_0x2C equ 0x2C LRAM_0x2D equ 0x2D LRAM_0x2E equ 0x2E LRAM_0x2F equ 0x2F LRAM_0x30 equ 0x30 LRAM_0x31 equ 0x31 LRAM_0x32 equ 0x32 LRAM_0x33 equ 0x33 LRAM_0x34 equ 0x34 LRAM_0x35 equ 0x35 LRAM_0x36 equ 0x36 LRAM_0x37 equ 0x37 LRAM_0x38 equ 0x38 LRAM_0x39 equ 0x39 LRAM_0x3A equ 0x3A LRAM_0x3B equ 0x3B W_SAVE equ 0x4F ; Program Org 0x0000 ; Reset-Vector GOTO START Org 0x0004 ; Interrupt-Vector MOVWF W_SAVE SWAPF STATUS,W BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select MOVWF STATUS_SAVE SWAPF PCLATH,W ; !!Bank Program-Page-Select MOVWF PCLATH_SAVE SWAPF FSR,W MOVWF PCLATH_SAVE BCF PCLATH,3 ; !!Bank Program-Page-Select BCF PCLATH,4 ; !!Bank Program-Page-Select GOTO INT_TEST Org 0x0010 COUNTER BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select MOVF COUNTER_LO,F MOVF COUNTER_HI,F INCF COUNTER_LO,F BTFSC STATUS,Z INCF COUNTER_HI,F MOVLW 0x03 ; b'00000011' d'003' SUBWF COUNTER_HI,W BTFSS STATUS,Z GOTO LADR_0x001C MOVLW 0xE8 ; b'11101000' d'232' SUBWF COUNTER_LO,W LADR_0x001C BTFSS STATUS,C RETURN BTFSC COUNTER_HI,7 RETURN CLRF COUNTER_LO CLRF COUNTER_HI MOVF LRAM_0x27,F MOVF LRAM_0x28,F INCF LRAM_0x27,F BTFSC STATUS,Z INCF LRAM_0x28,F MOVF LRAM_0x28,W XORLW 0x80 ; b'10000000' d'128' MOVWF LRAM_0x3B MOVLW 0x80 ; b'10000000' d'128' SUBWF LRAM_0x3B,W BTFSS STATUS,Z GOTO LADR_0x0030 MOVLW 0x3C ; b'00111100' d'060' "<" SUBWF LRAM_0x27,W LADR_0x0030 BTFSS STATUS,C RETURN MOVF LRAM_0x29,F MOVF LRAM_0x2A,F INCF LRAM_0x29,F BTFSC STATUS,Z INCF LRAM_0x2A,F CLRF LRAM_0x27 CLRF LRAM_0x28 CLRF COUNTER_LO CLRF COUNTER_HI RETURN LADR_0x003C MOVLW 0xC0 ; b'11000000' d'192' BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select MOVWF TMR0 ; !!Bank!! TMR0 - OPTION_REG LADR_0x003F MOVLW 0x01 ; b'00000001' d'001' BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select IORWF PORTA,W ; !!Bank!! PORTA - TRISA MOVWF PORTA ; !!Bank!! PORTA - TRISA MOVLW 0x01 ; b'00000001' d'001' BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select ANDWF PORTA,W ; !!Bank!! PORTA - TRISA MOVWF LRAM_0x36 CLRF LRAM_0x35 DECF LRAM_0x36,W BTFSC STATUS,Z INCF LRAM_0x35,F MOVF LRAM_0x35,F BTFSS STATUS,Z GOTO LADR_0x005F BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select BCF TMR0,5 ; !!Bank!! TMR0 - OPTION_REG BSF TMR0,4 ; !!Bank!! TMR0 - OPTION_REG MOVLW 0xF0 ; b'11110000' d'240' ANDWF TMR0,W ; !!Bank!! TMR0 - OPTION_REG BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select MOVWF LRAM_0x36 MOVLW 0x01 ; b'00000001' d'001' IORWF LRAM_0x36,W BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select MOVWF TMR0 ; !!Bank!! TMR0 - OPTION_REG BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select BSF INTCON,GIE BSF INTCON,T0IE MOVLW 0x01 ; b'00000001' d'001' MOVWF LRAM_0x34 GOTO LADR_0x003F LADR_0x005F CLRF LRAM_0x37 MOVLW 0x02 ; b'00000010' d'002' SUBWF LRAM_0x29,W MOVF LRAM_0x2A,W BTFSC STATUS,C GOTO LADR_0x0067 BTFSC STATUS,Z GOTO LADR_0x0068 LADR_0x0067 BTFSC LRAM_0x2A,7 LADR_0x0068 INCF LRAM_0x37,F CLRF LRAM_0x36 DECF LRAM_0x34,W BTFSC STATUS,Z INCF LRAM_0x36,F MOVF LRAM_0x36,W ANDWF LRAM_0x37,W BTFSC STATUS,Z GOTO LADR_0x007D MOVLW 0xFD ; b'11111101' d'253' BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select ANDWF PORTB,W ; !!Bank!! PORTB - TRISB MOVWF PORTB ; !!Bank!! PORTB - TRISB MOVLW 0xFD ; b'11111101' d'253' BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select ANDWF PORTB,W ; !!Bank!! PORTB - TRISB MOVWF LRAM_0x3A MOVLW 0x02 ; b'00000010' d'002' IORWF LRAM_0x3A,W MOVWF PORTB ; !!Bank!! PORTB - TRISB GOTO LADR_0x0085 LADR_0x007D MOVLW 0xFD ; b'11111101' d'253' BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select ANDWF PORTB,W ; !!Bank!! PORTB - TRISB MOVWF PORTB ; !!Bank!! PORTB - TRISB MOVLW 0xFD ; b'11111101' d'253' BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select ANDWF PORTB,W ; !!Bank!! PORTB - TRISB MOVWF PORTB ; !!Bank!! PORTB - TRISB LADR_0x0085 CLRF LRAM_0x39 MOVLW 0x03 ; b'00000011' d'003' SUBWF LRAM_0x29,W MOVF LRAM_0x2A,W BTFSC STATUS,C GOTO LADR_0x008D BTFSC STATUS,Z GOTO LADR_0x008E LADR_0x008D BTFSC LRAM_0x2A,7 LADR_0x008E INCF LRAM_0x39,F CLRF LRAM_0x38 DECF LRAM_0x34,W BTFSC STATUS,Z INCF LRAM_0x38,F MOVF LRAM_0x38,W ANDWF LRAM_0x39,W BTFSC STATUS,Z GOTO LADR_0x00A3 MOVLW 0xFB ; b'11111011' d'251' BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select ANDWF PORTB,W ; !!Bank!! PORTB - TRISB MOVWF PORTB ; !!Bank!! PORTB - TRISB MOVLW 0xFB ; b'11111011' d'251' BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select ANDWF PORTB,W ; !!Bank!! PORTB - TRISB MOVWF LRAM_0x3A MOVLW 0x04 ; b'00000100' d'004' IORWF LRAM_0x3A,W MOVWF PORTB ; !!Bank!! PORTB - TRISB GOTO LADR_0x003F LADR_0x00A3 MOVLW 0xFB ; b'11111011' d'251' BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select ANDWF PORTB,W ; !!Bank!! PORTB - TRISB MOVWF PORTB ; !!Bank!! PORTB - TRISB MOVLW 0xFB ; b'11111011' d'251' BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select ANDWF PORTB,W ; !!Bank!! PORTB - TRISB MOVWF PORTB ; !!Bank!! PORTB - TRISB CLRF LRAM_0x29 CLRF LRAM_0x2A CLRF COUNTER_LO CLRF COUNTER_HI CLRF LRAM_0x27 CLRF LRAM_0x28 CLRF LRAM_0x34 BCF INTCON,T0IE GOTO LADR_0x003F START MOVLW 0xD5 ; b'11010101' d'213' BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select MOVWF LRAM_0x0C MOVLW 0xC4 ; b'11000100' d'196' MOVWF LRAM_0x0D MOVLW 0xBB ; b'10111011' d'187' MOVWF LRAM_0x0E MOVLW 0xDC ; b'11011100' d'220' MOVWF LRAM_0x0F CLRF LRAM_0x10 CLRF LRAM_0x11 CLRF LRAM_0x12 CLRF LRAM_0x13 CLRF LRAM_0x14 CLRF LRAM_0x15 CLRF LRAM_0x16 CLRF LRAM_0x17 CLRF LRAM_0x18 CLRF LRAM_0x19 CLRF LRAM_0x1A CLRF LRAM_0x1B CLRF LRAM_0x2E CLRF LRAM_0x2F CLRF LRAM_0x23 CLRF LRAM_0x24 CLRF LRAM_0x30 CLRF LRAM_0x31 CLRF LRAM_0x32 CLRF LRAM_0x33 CLRF LRAM_0x1C CLRF LRAM_0x1D CLRF LRAM_0x1E CLRF LRAM_0x1F CLRF LRAM_0x2C CLRF LRAM_0x2D CLRF LRAM_0x2B CLRF LRAM_0x34 CLRF LRAM_0x27 CLRF LRAM_0x28 CLRF LRAM_0x29 CLRF LRAM_0x2A CLRF LRAM_0x35 BCF PCLATH,3 ; !!Bank Program-Page-Select BCF PCLATH,4 ; !!Bank Program-Page-Select GOTO LADR_0x003C INT_TEST BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select BTFSS INTCON,T0IF GOTO INT_END BTFSS INTCON,T0IE GOTO INT_END CALL COUNTER BCF INTCON,T0IF INT_END SWAPF PCLATH_SAVE,W MOVWF FSR SWAPF PCLATH_SAVE,W MOVWF PCLATH ; !!Bank Program-Page-Select SWAPF STATUS_SAVE,W MOVWF STATUS SWAPF W_SAVE,F SWAPF W_SAVE,W RETFIE End