include <p16f887.inc>
LIST p = 16f887
__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF &_BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
__CONFIG _CONFIG2, _WRT_OFF & _BOR21V
CBLOCK 0x20
ENDC
CBLOCK 0x70
W_temp
STATUS_temp
ENDC
ORG 0x000
GOTO start
ORG 0x004
GOTO isr
start:
BANKSEL OPTION_REG
MOVLW 0x02
MOVWF OPTION_REG
CLRF INTCON
BANKSEL OSCCON
CLRF OSCCON
BSF INTCON, INTE
BSF INTCON, T0IE
BSF INTCON, GIE
BANKSEL ANSELH ;
CLRF ANSELH ; Turn off ADC on PORTB!!!
BANKSEL TRISB
MOVLW 0x01
MOVWF TRISB
BANKSEL TRISD
CLRF TRISD
BANKSEL PORTD
CLRF PORTD
loop:
;SLEEP
GOTO loop
isr:
MOVWF W_temp
SWAPF STATUS, W
MOVWF STATUS_temp
BANKSEL PORTD
BTFSS INTCON, INTF
INCF PORTD, F
BCF INTCON, INTF
BTFSS INTCON, T0IF
CLRF PORTD
BCF INTCON, T0IF
MOVLW 0x3C
SUBWF PORTD, W
BTFSC STATUS, C
CLRF PORTD
SWAPF STATUS_temp, W
MOVWF STATUS
SWAPF W_temp, F
SWAPF W_temp, W
RETFIE
END