搜索
bottom↓
回复: 17

求帮助,ATmega16源代码在Proteus上不能仿真,我的编译器是AS6.

[复制链接]

出0入0汤圆

发表于 2014-11-17 11:26:38 | 显示全部楼层 |阅读模式
我最近在拜读彭伟老师编著的《单片机C语言程序设计实训100例—基于AVR+Proteus仿真》。基本上就是原封不动的抄录书上的源代码,编译后看在Proteus上的运行情况。进入到《第四章 硬件运用》的第14个实验——《4.14 1602 LCD字符液晶测试程序》的时候,发现编译可以正常通过,但是无法在Proteus上运行。随书的资料中的hex文件就可以运行。源代码基本上市原封不动抄的,就改动了一处,改动原因在源代码中有说明。我的编译环境是AS6。希望哪位大神能帮我看看问题到底出在什么地方。谢谢!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2014-11-17 11:35:46 | 显示全部楼层
LZ字体真大

出0入0汤圆

 楼主| 发表于 2014-11-17 17:09:05 | 显示全部楼层

沙发的感觉不错吧?不能提点建设性的意见吗?

出0入0汤圆

发表于 2014-11-17 17:26:51 | 显示全部楼层
柱子哥 发表于 2014-11-17 17:09
沙发的感觉不错吧?不能提点建设性的意见吗?

LZ可以看看友情提示
另外,我认为有建设的建议是,仿真的结果和实际有出入

出0入0汤圆

发表于 2014-11-18 06:53:21 | 显示全部楼层
加大延时,就别BUSY检测了;

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-11-18 08:23:30 来自手机 | 显示全部楼层
以前用仿真时一样加大延时就好

出0入0汤圆

 楼主| 发表于 2014-11-18 08:26:36 来自手机 | 显示全部楼层
yklstudent 发表于 2014-11-18 06:53
加大延时,就别BUSY检测了;

你的回答很有帮助,弱弱的问一下,为什么buay检测程序就不往下走了?是逻辑上的问题还是其他什么的?

出0入0汤圆

 楼主| 发表于 2014-11-18 08:29:23 来自手机 | 显示全部楼层
yklstudent 发表于 2014-11-18 06:53
加大延时,就别BUSY检测了;

我发现,即使不加大延时,只要不busy检测,程序还是能正常运行的。奇怪啊,我的这个语句应该是没有问题的。

出0入0汤圆

发表于 2014-11-18 19:08:21 | 显示全部楼层
柱子哥 发表于 2014-11-18 08:29
我发现,即使不加大延时,只要不busy检测,程序还是能正常运行的。奇怪啊,我的这个语句应该是没有问题的 ...

不加延时,你确认能完全正常运行???

出0入0汤圆

 楼主| 发表于 2014-11-18 19:10:49 来自手机 | 显示全部楼层
yklstudent 发表于 2014-11-18 19:08
不加延时,你确认能完全正常运行???

就是我原来的源代码,只是把检测busy位的那句去掉,可以运行。

出0入0汤圆

 楼主| 发表于 2014-11-18 19:52:23 来自手机 | 显示全部楼层
yklstudent 发表于 2014-11-18 19:08
不加延时,你确认能完全正常运行???

重大发现,只要把原来busy检测中的while语句改成
while( PINC7==1);程序就可以走下去了。

出0入0汤圆

发表于 2014-11-18 19:58:28 | 显示全部楼层
1602只管写数据就可以了,不用管busy的

出0入0汤圆

发表于 2014-11-18 20:35:29 | 显示全部楼层
柱子哥 发表于 2014-11-18 19:52
重大发现,只要把原来busy检测中的while语句改成
while( PINC7==1);程序就可以走下去了。 ...

#define PINC    _SFR_IO8(0x13)
#define PINC0   0
#define PINC1   1
#define PINC2   2
#define PINC3   3
#define PINC4   4
#define PINC5   5
#define PINC6   6
#define PINC7   7

看看PINC7是甚么再说,别高兴的太早了

出0入0汤圆

 楼主| 发表于 2014-11-18 22:11:31 来自手机 | 显示全部楼层
yklstudent 发表于 2014-11-18 20:35
#define PINC    _SFR_IO8(0x13)
#define PINC0   0
#define PINC1   1

原来如此。

出0入0汤圆

 楼主| 发表于 2014-11-18 22:14:46 来自手机 | 显示全部楼层
yubo2007 发表于 2014-11-18 19:58
1602只管写数据就可以了,不用管busy的

但是我用51的单片机,在Keil+proteus环境下,仿真1602是成功的,而且也是检测了busy位的。在AS+proteus下,只要检测busy位,仿真电路里看到的就是高电平。

出0入0汤圆

发表于 2014-11-18 22:18:00 | 显示全部楼层
弱弱的问下AS是AVR Studio的简称吗?

出0入0汤圆

 楼主| 发表于 2014-11-20 06:19:21 来自手机 | 显示全部楼层
Gallen.Zhang 发表于 2014-11-18 22:18
弱弱的问下AS是AVR Studio的简称吗?

不是,现在叫ATMEL Studio 6

出0入0汤圆

 楼主| 发表于 2014-12-7 09:19:12 来自手机 | 显示全部楼层
怎么没人了啊?是不是帖子沉底了?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 06:27

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表