学习了一个月的avr单片机了,从点亮一个二极管到通讯部分,曾经都是直接上硬件,下载验证,昨日开端下载了Proteus运用仿真,下载地址是
{
}
这个问题首要会呈现在用CVAVR来编译的程序中。
之前学AVR有用到proteus仿真,我用的是proteus7.4,拿一个ATMega16出来,用AVR编译出来的一些简略的程序,底子不能正常的运转,这把我搞的适当的抑郁,后
来在仿真日志中发现本来是看门狗一直都开着,我又没喂狗,因而一直都把处理器复位了,这回我更抑郁,我又没开看门狗,又没装备fuse,为什么自己会开呢,搞了N久后,发
现有这个或许,一个CVAVR自身编译之后在proteus仿真中,默许开了看门狗(实际上我并没有开啊!!!并且在什物中,要装备fuse才能开的吧?)经过讲究后发现,本来真的
是CVAVR给开了,由于我问了其它的师兄说他们的proteus没问题),所以试着手动显式关掉看门狗,封闭的办法如下:
1.先喂狗;
2.把WDTCR寄存器中的WDTOE位先置1,然后在接下来立刻把WDE方位0;
3.能够了.
具本的C言语代码能够这样写(CVAVR编译器下经过):
#asm(“WDR”)
WDTCR=0x10;
WDTCR=0x00;
OK,就能够啦,这回在proteus中的仿真日志中就不会再看到比如“看门狗溢出,处理器被重置”这样憎恶的信息了,如果是在仿真中学习AVR的话,主张在主程序一开端就把看门
狗给关掉,究竟这跟什物不一样的。
期望这能让其他人少走弯路。
以上的状况是在运用CVAVR编译器中呈现的,运用%&&&&&%CAVR形似没有这个问题。
即在cvavr中应带这么编写:
{
}