so to clarify
this is the version i know of
i use it on a 64mhz osc - giving TIPS = 4 from memory for a 2.5ms tick
Code:; -------------- calc timer reload Constants ------------------------------- ASM T1PS = 1 ; start with 1:1 postscaler TimerConst = ((OSC*1000000)/4/100) ; how many timer ticks will it take while TimerConst > 65400 ; if it's more than the timer can count T1PS = T1PS * 2 ; double the postscaler TimerConst = TimerConst / 2 ; halve the count endw TimerConst = 65536 - TimerConst +8 ; add the 8 cycles to constant ; ----------------- ADD TimerConst to TMR1H:TMR1L ------------------------- ADD2_TIMER macro BCF T1CON,TMR1ON, 0 ; 1 Turn off timer MOVLW LOW(TimerConst) ; 1 ADDWF TMR1L,F, 0 ; 1 BTFSC STATUS,C ; 1/2 INCF TMR1H,F, 0 ; 1 MOVLW HIGH(TimerConst) ; 1 ADDWF TMR1H,F, 0 ; 1 endm ; ----------------- ADD TimerConst to TMR1H:TMR1L and restart TIMER1 ------ RELOAD_TIMER macro ADD2_TIMER BSF T1CON,TMR1ON, 0 ; 1 Turn TIMER1 back on (8 cycles) endm ; ----------------- Load TimerConst into TMR1H:TMR1L ---------------------- LOAD_TIMER macro MOVE?CT 0, T1CON,TMR1ON MOVE?CB 0, TMR1L MOVE?CB 0, TMR1H ADD2_TIMER endm ENDASM




Bookmarks