Sync LED blink behaviour to timer0
This commit is contained in:
+26
@@ -0,0 +1,26 @@
|
|||||||
|
#define __SFR_OFFSET 0
|
||||||
|
#include <avr/io.h>
|
||||||
|
|
||||||
|
blink_led:
|
||||||
|
clr r16 ; Clear register
|
||||||
|
out TCNT0, r16 ; Reset Counter to 0
|
||||||
|
sbi PORTB, PB0 ; Set LED on
|
||||||
|
|
||||||
|
ldi r16, (1<<OCF0A)
|
||||||
|
out TIFR0, r16 ; Clear timer0 status
|
||||||
|
|
||||||
|
ldi r16, (1 << CS02) | (1 << CS00) ; Load prescaler value (00000101 = prescaler 1024)
|
||||||
|
out TCCR0B, r16 ; Enable clock source
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
blink_delay:
|
||||||
|
in r16, TIFR0 ; Read Interrupt Flag Register
|
||||||
|
sbrs r16, OCF0A ; If OCF0A = 1 skip jump
|
||||||
|
rjmp wait_loop ; Else loopback
|
||||||
|
|
||||||
|
clr r16 ; Cleanup register
|
||||||
|
out TCCR0B, r16 ; Stop timer0 by clearing prescaler
|
||||||
|
|
||||||
|
cbi PORTB, PB0 ; Set LED off
|
||||||
|
ret
|
||||||
Reference in New Issue
Block a user