您的位置 首页 产品

Proteus环境下Avr I/O电平重复改变(看门狗复位)

学习了一个月的avr单片机了,从点亮一个二极管到通信部分,以前都是直接上硬件,下载验证,昨天开始下载了Proteus使用仿真,下载地址是ht

学习了一个月的avr单片机了,从点亮一个二极管到通讯部分,曾经都是直接上硬件,下载验证,昨日开端下载了Proteus运用仿真,下载地址是 http://www.verycd.com/topics/2733851/ 发现点亮一个简略的二极管都不成功,cvavr下的程序如下:

#include

void main()

{

DDRB=0XFF;

PORTB=0X00;

while(1);

}

但是便是这么简略的一个程序得到的仿真成果是:

一会高一会低,十分抑郁,学了这么长期,竟然让一个灯常亮都不行了……所以群里问……惋惜没人答复

总算,查找中找到了以下是原文:

这个问题首要会呈现在用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中应带这么编写:

#include

void main()

{

#asm(“WDR”)

WDTCR=0x10;

WDTCR=0x00;

DDRB=0XFF;

PORTB=0X00;

while(1);

}

成果仿真成功。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/chanpin/256662.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部