我正在用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秒的间隔内重置看门狗。 我还检查了WDTCR寄存器,执行WDR后它没有改变。