;/////////////////////
ORG 0x000 ;Vector Power up/Reset
;/////////////////////
call 0x3FE ;Llamar a subrutina de calibracion de oscilador interno
movwf OSCCAL ;Y guardar el valor en el registro de calibracion
bcf STATUS, RP0 ;volver al banco 0
goto INICIO ;Saltar a INICIO de programa
;/////////////////////
ORG 0x004 ;Vector de Interrupciones.
;/////////////////////
goto ISR
INICIO
clrf INTCON
bsf STATUS,RP0 ;banco 1
bcf DataS
bcf ClockS
bcf StrobeS
bsf TRISIO, 3
bcf TRISIO, 4
bsf TRISIO, 5 ;Contador Timer1
bcf STATUS,RP0 ;banco 0
clrf GPIO ;Limpiar latches
movlw PrimeraRAM ;w = primera posicion RAM válida para este uC
call LIMPIARRAM ;Limpiar toda la RAM banco 0
incf Periodo, F ;inicializar Periodo = 1
;Config TIMER0
bsf STATUS, RP0 ;banco 1
bcf OPTION_REG, T0CS ;contador interno
bcf OPTION_REG, T0SE ;Incrementar en flanco bajo a alto
bcf OPTION_REG, PSA ;Preescaler asociado al Timer0
bcf OPTION_REG, PS2 ;Preescaler 1:8
bsf OPTION_REG, PS1 ;Preescaler 1:8
bcf OPTION_REG, PS0 ;Preescaler 1:8
bcf STATUS, RP0 ;banco 0
call ResetTimer0 ;setear valores iniciales de los registros del Timer1
;Config TIMER1
clrf TMR1L ;limpiar contadores timer
clrf TMR1H
bcf T1CON, TMR1GE ;Activar Timer1 (6)
bcf T1CON, T1CKPS1 ; Preescaler 1:1 (5)
bcf T1CON, T1CKPS0 ; Preescaler 1:1 (4)
bcf T1CON, T1OSCEN ;oscilador LP apagado (3)
bsf T1CON, NOT_T1SYNC ;No sincronizar pulso externo con clock interno (2)
bsf T1CON, TMR1CS ;Contador asociado a pulsos externos en GP5 (1)
bsf T1CON, TMR1ON ;Encender Timer1 (0)
;Config INTERRUPCIONES
bcf INTCON, T0IF ;Limpiar flag Timer0
bsf INTCON, T0IE ;activar interrupcion Timer0
;Interr Globales
bsf INTCON, GIE ;Activar interrupciones globales
goto $
;//////////////////////////////////////
;// ISR //
;//////////////////////////////////////
ISR
nop ;aca ya no me incrementa