Hola:
alguien puede explicarme que me falta en el codigo que cuando desborda TMR1 no va a la
rutina de Interrupt:
list p=16f877, f=inhx8m ;Enter device name
;printed on the probe
;connected to your pod.
include <P16f877.INC>
; *** DEVICE Fuses Definitions
__CONFIG _HS_OSC & _CP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _WRT_ENABLE_ON & _DEBUG_OFF & _CPD_OFF & _LVP_OFF
ERRORLEVEL -306, -302
NOEXPAND
CBLOCK 0x20
W_SAVE
STATUS_SAVE
ENDC
;-----------------------------------------------------------------------------
;Macros to select the register bank
;Many bank changes can be optimised when only one STATUS bit changes
Bank0 MACRO ;macro to select data RAM bank 0
BCF STATUS,RP0 ; clear bank select bits
BCF STATUS,RP1
BCF STATUS,IRP ; clear indirect adressing bit
ENDM
Bank1 MACRO ;macro to select data RAM bank 1
BSF STATUS,RP0 ;
BCF STATUS,RP1 ;
BCF STATUS,IRP ; clear indirect adressing bit
ENDM
Bank2 MACRO ;macro to select data RAM bank 2
BCF STATUS,RP0 ;
BSF STATUS,RP1
BSF STATUS,IRP ; set bit for indirect adressing
ENDM
Bank3 MACRO ;macro to select data RAM bank 3
BSF STATUS,RP0 ;
BSF STATUS,RP1
BSF STATUS,IRP ; set bit for indirect adressing
ENDM
;
;
; Baud Rate = 19200, No Parity, 8 bits & 1 Stop Bit
;
; -------------
; PROGRAM START
; -------------
;
org 0 ; startup = 0000H
goto BootStart
org 4
MOVWF W_SAVE ; save W { save(ACCU);
SWAPF STATUS, W ; save STATUS
MOVWF STATUS_SAVE
BCF STATUS, RP0 ; be sure we are in bank 0
bcf INTCON,7
btfss PIR1,0
;------------------
; rutinas
;-----------
sale
BCF INTCON,1
BCF INTCON,2
bcf PIR1,TMR1IF ; ensure flag is reset
bsf INTCON,7
SWAPF STATUS_SAVE, W
MOVWF STATUS ; restore W and STATUS
SWAPF W_SAVE, F
SWAPF W_SAVE, W ; }}}}}}}}} restore(ACCU);
retfie
; --------------------------------------------------
; SET UP THE PORTS TO SUIT YOUR CIRCUIT REQUIREMENTS
; --------------------------------------------------
;
BootStart
Bank0 ; bank0
movlw b'00000111'
movwf ADCON1 ; porta inputs = digital not analog
;
movlw b'00000000' ; tmr0 preescaler 1:2
movwf OPTION_REG
Bank0
MOVLW b'11010100' ; con tmr0
MOVWF INTCON
;__________________________________
empieza
clrf CCP1CON
clrf CCP2CON
call init_timer1
BSF PIE1,0 ; 1 = ENABLE - 0=DISABLE TMR1 INTERRUPT
loop
nop
nop
nop
goto loop
init_timer1
banksel T1CON ; select SFR bank
bcf T1CON,1 ;' 1 = External clock from pin RC0/T1OSO/T1CKI (on the rising edge)
;' 0 = Internal clock (FOSC/4)
bsf T1CON,2 ;' 1 = Do not synchronize external clock input
;' 0 = Synchronize external clock input
;' When T1CON.1 = 0;
;' this bit is ignored. Timer1 uses the internal clock when TMR1CS = 0.
bcf T1CON,4 ;' 11 = 1:8 prescale value
bcf T1CON,5 ;' 10 = 1:4 prescale value
;' 01 = 1:2 prescale value
;' 00 = 1:1 prescale value
movlw 0xFF ;
movwf TMR1H ; initialize Timer1 high
movlw 0xF5 ;
movwf TMR1L ; initialize Timer1 low
bcf PIR1,TMR1IF ; ensure flag is reset
bsf T1CON,TMR1ON ; turn on Timer1 module
return ; return from subroutine
END
Gracias