我正在尝试在我的 ATmega328p 上组装一个闪烁的 LED。我正在使用 8 位定时器来尝试实现这一点。现在计时器设置为超快移动,以便我可以在 Atmel Studio 中对其进行测试。当程序继续运行时,我观察了字节,并注意到中断标志已设置,但我的中断函数没有执行。帮忙吗?
LDI r16, (1 << DDB0)
OUT DDRB, r16
LDI r16, (1 << WGM01) ;set CTC mode
OUT TCCR0A, r16 ;set data to the TCCR0A register
LDI r16, 0x10
OUT OCR0A, r16 ;set tick amount
SEI ;global interrupt enable, CLI to disable
LDI r16, (1 << OCIE0A)
STS TIMSK0, r16
LDI r16, (1 << CS00); | (1 << CS02) ;select prescaler
OUT TCCR0B, r16; set data to TCCR0B register and start timer
rjmp MAIN
.org 0x001C
rjmp TIMER_INTERRUPT
MAIN:
rjmp MAIN
TIMER_INTERRUPT:
IN r16, PORTB
LDI r17, (1 << PORTB0)
EOR r16, r17
OUT PORTB, r16
reti
我尝试在每条指令后检查所有位,以确保我的设置正确,这似乎没有带来明显的错误。