Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- list p=16F887, r=dec, w=-302
- include <P16F887.INC>
- __config _CONFIG1,_LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _PWRTE_ON & _WDT_OFF & _INTOSCIO
- __config _CONFIG2,_WRT_HALF & _BOR21V
- #define LED0 PORTD,0
- cblock 0x20
- COUNT1
- COUNT2
- endc
- cblock 0x70
- W_TEMP
- STATUS_TEMP
- PCLATH_TEMP
- endc
- org 0x000 ;reset vector
- goto START
- org 0x004 ;interrupt vector
- movwf W_TEMP ;push W
- swapf STATUS,W ;push STATUS
- banksel 0x00 ;default to bank 0
- movwf STATUS_TEMP
- movfw PCLATH ;push PCLATH
- movwf PCLATH_TEMP
- btfsc INTCON,T0IF ;is it a tmr0 interrupt?
- goto TIMER ;yes
- goto ExitISR ;no, exit interrupt handler
- TIMER movlw b'00000001'
- xorwf PORTD,F
- clrf TMR0 ;reset tmr0
- bcf INTCON,T0IF ;clear tmr0 interrupt flag
- goto ExitISR
- ExitISR movfw PCLATH_TEMP ;pop PCLATH
- movwf PCLATH
- swapf STATUS_TEMP,W ;pop STATUS
- movwf STATUS
- swapf W_TEMP,F ;pop W
- swapf W_TEMP,W
- retfie ;done, exit interrupt
- START clrf PORTA ;init ports
- clrf PORTB
- clrf PORTC
- clrf PORTD
- clrf PORTE
- banksel ANSEL ;bank 3
- movlw b'00000000' ;all ports digital I/O
- movwf ANSEL
- movwf ANSELH
- banksel TRISA ;bank 1
- movlw b'00000000' ;all ports output
- movwf TRISA
- movwf TRISB
- movwf TRISC
- movwf TRISD
- movwf TRISE
- movlw b'11010111'
- movwf OPTION_REG
- banksel 0x00 ;bank 0
- clrf TMR0 ;init tmr0
- bcf INTCON,T0IF ;clear tmr0 interrupt flag
- bsf INTCON,T0IE ;enable tmr0 interrupts
- bsf INTCON,GIE ;enable unmasked interrupts
- goto $
- end ;end of file
Add Comment
Please, Sign In to add comment