我正在使用 AVRASM 编译器在 Proteus 8 中使用 atmega16 测试一些汇编代码,似乎 WDR 指令无法正常工作。
根据数据表,WDR 必须只重置看门狗计数器。因此,如果我将看门狗定时器设置为在两秒时重置 MCU 并执行 WDR 指令,那么看门狗定时器应该再给我两秒。
main:
cbi DDRD, 5
sbi PORTD, 5
ldi r17, 0b00001111
out WDTCR, r17
loop:
in r16, PIND
sbrs r16, 5
wdr
rjmp loop
但是在上面的代码中,似乎在通过为 PIND5 提供 0 来执行 WDR 之后,看门狗定时器将永远不会再次工作,因此我没有在 2 秒的 inetravls 时重置看门狗。我还检查了 WDTCR 寄存器,执行 WDR 后它没有改变。