We could speeding the timer by pre-loading TCNT0 with a value between 0 and 255, so TCNT0’ll start count at our own value instead of zero.
We have to pre-load the TCNT0 at the init subroutine, and pre-load again after flag is set, so we write the command at the timer subroutine.
So, our code now will look like this
.include "../tn13Adef.inc"
.def a=r16
.org 0000
rjmp init
.org 0003
rjmp timer
init:
sbi ddrb,0 ; pin b0 output
ldi a,0b00000101 ; prescaler 1024
out TCCR0B,a
ldi a,0b00000010 ; enable OVF
out TIMSK0,a
ldi a, 64 ; preload TCNT0
out TCNT0,a
sei ; enable interrupts globally
main:
rjmp main
timer:
sbi pinb,0 ; flip pin B0 bit
ldi a,64 ; preload again
out TCNT0,a
reti
No comments:
Post a Comment