难道 英语是软件的问题,小弟刚学avr不久,...

21ic官方微信
后使用快捷导航没有帐号?
查看: 1889|回复: 6
急求解决AVR 在protues7.6中的仿真问题
&&未结帖(5)
主题帖子积分
中级技术员, 积分 165, 距离下一级还需 135 积分
中级技术员, 积分 165, 距离下一级还需 135 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
中级技术员, 积分 165, 距离下一级还需 135 积分
中级技术员, 积分 165, 距离下一级还需 135 积分
小弟刚接触AVR没几天,现在写了个数码管程序,编译没问题,在protues7.6中仿真,出现了几个问题:1.端口初始化若直接写在主函数中,数码管可以正常显示,若端口初始化写成独立的子函数,在主函数调用,用Protues仿真,单步运行时,函数一直在端口初始化函数中循环运行,无论循环函数中写什么指令,端口都没有输出,数码也不亮。
2.关于延时函数,在主函数调用延时时,程序也一直在延时函数中运行,跳不出延时函数,像是死循环!
对于以上两个问题,本人疑惑了很久,之前用过C51,没出现过这问题,请各位大侠指点! 下面附上本人刚才写的程序及仿真文件。
, , , , , ,
本帖子中包含更多资源
才可以下载或查看,没有帐号?
主题帖子积分
中级技术员, 积分 246, 距离下一级还需 54 积分
中级技术员, 积分 246, 距离下一级还需 54 积分
主题帖子积分
专家等级:结帖率:66%
主题帖子积分
中级技术员, 积分 246, 距离下一级还需 54 积分
中级技术员, 积分 246, 距离下一级还需 54 积分
你设置一下sp=4000;在试一下
主题帖子积分
中级技术员, 积分 246, 距离下一级还需 54 积分
中级技术员, 积分 246, 距离下一级还需 54 积分
主题帖子积分
专家等级:结帖率:66%
主题帖子积分
中级技术员, 积分 246, 距离下一级还需 54 积分
中级技术员, 积分 246, 距离下一级还需 54 积分
我以前使用M128A的时候遇到过不能从子程序正常返回的问题,一到返回就从main执行后来反复试验发现sp数据不对,检查确认是熔丝位设置的问题,M128A默认与103兼容,而103只有4000ram,128有4096ram,将sp改为4000就好了,后来在熔丝位设置中将兼容103的沟去掉也就好了。
主题帖子积分
中级技术员, 积分 165, 距离下一级还需 135 积分
中级技术员, 积分 165, 距离下一级还需 135 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
中级技术员, 积分 165, 距离下一级还需 135 积分
中级技术员, 积分 165, 距离下一级还需 135 积分
问题解决了!是ICCAVR芯片设置问题,之前设置成ATMEGA1281,后来改成ATMEGA128(Please see NOTES) 调试,就好 了。但又有疑问:ATMEGA1281 与ATMEGA128之间有什么差别呢?同样感谢zhu51231的回复!
主题帖子积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
zhu51231 发表于
你设置一下sp=4000;在试一下
我现在也遇到了这个问题,问一下sp在哪设置
主题帖子积分
中级技术员, 积分 246, 距离下一级还需 54 积分
中级技术员, 积分 246, 距离下一级还需 54 积分
主题帖子积分
专家等级:结帖率:66%
主题帖子积分
中级技术员, 积分 246, 距离下一级还需 54 积分
中级技术员, 积分 246, 距离下一级还需 54 积分
在主程序里一开始加一句:sp=4000;
主题帖子积分
实习生, 积分 0, 距离下一级还需 50 积分
实习生, 积分 0, 距离下一级还需 50 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 0, 距离下一级还需 50 积分
实习生, 积分 0, 距离下一级还需 50 积分
& & PORTD=0x00;
& & Delay_ms(1000);
& & for(k=0;k&8;k++)
& & & && &l=0b;
& & & && &m=l&&k;
& & & && &PORTD=0xff^m;
& & & && &Delay_ms(1000);&&
大神们,为什么我的while(1)里只执行了一次呢????
求解!!!!!!!!!!!!!
时间类勋章
技术奇才奖章
人才类勋章
时间类勋章
技术高手奖章
人才类勋章
热门推荐 /2→ ICC、GCC于AVR STUDIO软件之间的关系
&&共有<b style="color:#ff人关注过本帖主题:ICC、GCC于AVR STUDIO软件之间的关系
功能最强最全的AVR开发工具
(0)&(0)&(0)&
虽然已经老了,仍需活到老,学到老!
功能最强最全的AVR开发工具
(0)&(0)&(0)&
AVR入门学习首选
(0)&(0)&(0)&
功能最强最全的AVR开发工具
(0)&(0)&(0)&
AVR入门学习首选
(0)&(0)&(0)&
AVR入门学习首选
(0)&(0)&(0)&
AVR入门学习首选
(0)&(0)&(0)&
AVR工程师实验伴侣 电子大赛理想控制板
(0)&(0)&(0)&
功能最强最全的AVR开发工具
(0)&(0)&(0)&
AVR入门学习首选
(0)&(0)&(0)&
AVR工程师实验伴侣 电子大赛理想控制板
(0)&(0)&(0)&
AVR工程师实验伴侣 电子大赛理想控制板
(0)&(0)&(0)&
AVR工程师实验伴侣 电子大赛理想控制板
(0)&(0)&(0)&
AVR工程师实验伴侣 电子大赛理想控制板
(0)&(0)&(0)&
AVR入门学习首选
(0)&(0)&(0)&AVR单片机通过TWI总线读写24C02的问题,望高手解答,小弟感激不尽!!!!!!_百度知道
AVR单片机通过TWI总线读写24C02的问题,望高手解答,小弟感激不尽!!!!!!
&#47,然后再把它读出来;TWINT)));} &#47;
if((TWSR&0XF8)==0X28)
{TWDR=DATE;&&
while(;TWEN); TWCR=(1&lt程序如下;} &#47;&lt!(TWCR&(1&& &#47;while(1);while(1);}
while(;&void main(void){ TWI_INIT();&TWINT)));&TWINT)));TWEN);&*****************读取数据****************&#47;&#47;PORTC=0x99;发送读命令
else {DDRC=0XFF;#include& TWSR=0X00!(TWCR&(1&
if((TWSR&0XF8)==0X18)
{TWDR=0X00;&&若错误则PC端口输出数字11并停止程序;&}uchar DATE=0XAA;}
while(;TWINT)));&&lt,往下类似
TWCR=(1& &#47;&#47;while(1);&PORTC=0x77;}
TWCR=(1&TWINT)));&while(1);
TWCR=(1&TWEN);}&#47;} &#47;TWSTA)|(1&发送开始信号
while(;TWINT)|(1&&#47;&TWINT)|(1&TWINT)|(1&} &#47;读取数据
else {DDRC=0XFF!(TWCR&(1&TWEN)!;
TWCR=(1&lt!(TWCR&(1&&#47;TWINT)|(1&&&发送写地址
else {DDRC=0XFF;}
TWCR=(1&} &#47,其实挺简单的;&#47;
if((TWSR&0XF8)==0X10)
{TWDR=0XA1;&************写入数据***************&#47;TWEN),看看是哪里出了问题;}
TWCR=(1&while(1);&TWEN).h&TWEN);&#47;}
DDRC=0XFF;&#47!(TWCR&(1&&#47;&} &#47;TWINT)|(1&&&&#47;&若正确则发送写命令; TWCR=(1&lt!(TWCR&(1&& &#47;发送开始信号 while(!(TWCR&(1&&
if((TWSR&0XF8)==0X40)
{TWCR=(1&TWSTA)|(1& TWCR=0X00;
if((TWSR&0XF8)==0X28)
{TWCR=(1&PORTC=0x88!#include&发送数据
else {DDRC=0XFF;TWEN);PORTC=0x11; &#47!(TWCR&(1&while(1);PORTC=0x44;TWINT)|(1&
while(;&lt,往下类似 else {DDRC=0XFF;TWINT)));&#47;总线停止
else {DDRC=0XFF; &#47;TWSTO)|(1&&
if((TWSR&0XF8)==0X10)
{TWDR=0XA0,请高手指点指点;总线从新开始
else {DDRC=0XFF;&#47;TWSTO)|(1&TWINT)|(1&TWEN);&&&} &#47;&#47;&#47;TWINT)));总线初始化
&#47;} &#47;TWINT)|(1&while(1);
TWCR=(1&TWINT)|(1&TWINT)))!(TWCR&(1&TWEN);&#47;PORTC=0x66;&#47;&&#47;iom128v;
while(;PORTC=0x33;TWSTA)|(1&TWEN),可是调了好久还是没调出来.h&&&等待寄存器置位 if((TWSR&0XF8)==0X08) &#47;PORTC=0x22;&while(1);while(1);发送写地址
else {DDRC=0XFF;&&TWINT)));
if((TWSR&0XF8)==0X18)
{TWDR=0X00;TWEN);
while(;TWINT)|(1&&lt,快崩溃了;TWINT)|(1&&#47;&TWINT)));&lt!;TWEN)!(TWCR&(1&#define uint unsigned int#define uchar unsigned charvoid TWI_INIT(void){ TWBR=0X64;PORTC=0xAA;
if((TWSR&0XF8)==0X28)
{TWCR=(1&判断状态
{TWDR=0XA0;将读出数据送PC口显示
PORTC=TWDR;发送写命令
else {DDRC=0XFF;} &#47;TWINT)|(1&lt,就是往24C02里写一个数
而且单片机的C和一般的C不同,我相信从波形的角度来讲应该不会有什么问题。以上只是个人一些简单的调试思路,所以你简单地只把收发的代码贴上来,它涉及外设的配置等,再针对性的看一下程序这一块为什么跟波形对应不上,是地址位不对还是数据位不对,希望可以帮到你,用示波器测一下总线上的波形,然后再分开处理,如果总线上发的数据的波形不对你就进一步看一下是哪一部分不对,I2C总线波形还是比较好测量和观察的,这个时候你就不要看代码了。其实当你看代码看到实在没办法时,别人很难帮的到你,再查接收的波形;同样,一定可以解决的,我相信你只要静下心来顺着这个思路找原因,当这些数据都对的时候如果你程序还是接收不到数据,这是一个成熟的芯片,如果如果发送的波形对了,或者说数据不对,那你就要针对性的看一下接收的代码了,你要先确定一下是发的数据有问题还是收的数据有问题,但是同样你要看一下波形中的地址和数据是否正确,接收的波形从24C02发出来的,光看代码看到一定程序很难发现出问题不要崩溃
其他类似问题
为您推荐:
avr单片机的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁各位达人,小弟刚学单片机,选择了avr128入手,想请教一下对于初学者来说学好要多久?_百度知道
各位达人,小弟刚学单片机,选择了avr128入手,想请教一下对于初学者来说学好要多久?
提问者采纳
如C++。入门一个月就可以。想学好则需要;3.画原理图;4,还要学习上位机软件:1.代码学会容易,可连续工作.好多产品要涉及到上位机;2.祝你早日成功.对硬件知识的详细了解、PCB、VB、delphi..,学好难,最低的保证软件不死机
提问者评价
其他类似问题
为您推荐:
您可能关注的推广
达人的相关知识
其他1条回答
如果你有信心+努力,十天
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁刚开始学习AVR单片机,想用proteus仿真软件学习,请问还需安装Keil之类的软件才能开始仿真吗?_百度知道
刚开始学习AVR单片机,想用proteus仿真软件学习,请问还需安装Keil之类的软件才能开始仿真吗?
那么电脑中还缺什么软件,先利用proteus仿真软件来学习,所以对于一个像我这个的菜鸟来说由于还没买到AVR单片机的开发板
提问者采纳
因为是初学者嘛,用三个软件就行了,第一是程序编写软件avr gcc 第二个是电路仿真proteus,现在我也用电脑软件仿真,可以在百度上搜一个开发板的原理图没有开发板,你自己会画图吧,用来仿真,用的是天祥电子的avr 开发板原理图,把它画下来,我就是这样做的,我是有个开发板没有买到单片机。第三个软件就是avr stadio这个用来调试程序的!没有开发板的话用处不是太大
提问者评价
感谢大虾的帮助哈~~~~~~
其他类似问题
为您推荐:
其他3条回答
烧写软件,仿真软件,计算器,串口软件keil软件,LED段码软件
开发AVR有两种开发软件。IAR和GCC。官方推荐是GCC,下载AVR Stadio和winavr 编译器keil是开发51的。。。主要要搭建环境~  可以参考
楼下说得很详细了,我觉得再弄些书籍就再合适不过了
您可能关注的推广
avr单片机的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 难道 英语 的文章

 

随机推荐