LIST P=18F4420, F=INHX32 ;directive to define processor and file format
#include <P18F4420.INC> ;processor specific variable definitions
;******************************************************************************
;Reset vector
; This code will start executing when a reset occurs.
ORG 0x0000
goto Main ;go to start of main code
;******************************************************************************
;High priority interrupt vector
org 0x8
bra HighInt ;go to high priority interrupt routine
;******************************************************************************
;Low priority interrupt vector
org 0x18
bra LowInt ;go to low priority interrupt routine
;******************************************************************************
;High priority interrupt routine
; The high priority interrupt code is placed here.
HighInt:
bcf PIR1, TMR1IF ; Flag T1 deshabilitado
BSF PORTA,4
retfie FAST
;******************************************************************************
;Low priority interrupt routine
; The low priority interrupt code is placed here.
; This code can be removed if low priority interrupts are not used.
LowInt:
movff STATUS,STATUS_TEMP ;save STATUS register
movff WREG,WREG_TEMP ;save working register
movff BSR,BSR_TEMP ;save BSR register
;******************************************************************************
;Start of main program
; The main program code is placed here.
Main:
CLRF PORTA ; Initialize PORTA by
; clearing output
; data latches
CLRF LATA ; Alternate method
; to clear output
; data latches
MOVLW 0Fh ; Configure A/D
MOVWF ADCON1 ; for digital inputs
MOVWF 07h ; Configure comparators
MOVWF CMCON ; for digital input
MOVLW 0CFh
MOVWF TRISA ; Set RA<3:0> as inputs
; RA<5:4> as outputs
CLRF T1CON ; Stop Timer1, Internal Clock Source,
; T1 oscillator disabled,
; prescaler = 1:1
CLRF TMR1H ; Clear Timer1 High byte register
CLRF TMR1L ; Clear Timer1 Low byte register
CLRF INTCON ; Disable interrupts
CLRF PIE1 ; Disable peripheral interrupts
CLRF PIR1 ; Clear peripheral interrupts Flags
inicio
BCF PIR1, TMR1IF ; deshabilitación del flag por software
MOVLW 0xF0 ; Internal Clock source b'11110000'
; with 1:8 prescaler, habilito GIE i PEIE
MOVWF T1CON ; Timer1 is stopped and
; T1 osc is disabled
BSF T1CON, TMR1ON ; Timer1 starts to increment
BSF PIE1,TMR1IE
BSF INTCON,GIE
T1_OVFL_WAIT
BTFSS PIR1, TMR1IF ;quando PIR1=1 el timer1 se ha desbordado
GOTO T1_OVFL_WAIT
BSF PORTA,5
goto inicio
end