打印
[AVR单片机]

挂接仿真器调试时正常. 下载到单片机中,不正常..

[复制链接]
1634|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Batistuta_|  楼主 | 2008-10-26 12:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机为ATMEGA162,仿真器为MKII,编译环境为IAR 4.20A.

程序为在液晶上显示几个汉字和一条直线.

在仿真器挂接时,现实正常. 如果下载到单片机中,则不正常: 有直线,没有要显示的汉字,屏幕上无规律的显示一些东西,有的是ASCII码字符(程序中有两个表格,一个是ASCII码表格,一个是几个汉字的现实码),有的看不出是什么东西.

直线能画出来,说明LCD驱动程序没有问题. 
下载到单片机后,其他部分程序都正常,就是一个显示几个汉字的子程序有问题,这段程序也没有涉及变量初始化的问题.
不知道问题可能处在哪里..

请大家帮俺分析,问题出在哪里?

相关帖子

沙发
xwj| | 2008-10-26 12:45 | 只看该作者

很可能是操作过快所致

液晶屏的现因速度是很慢的,要适当延时

使用特权

评论回复
板凳
Batistuta_|  楼主 | 2008-10-26 13:09 | 只看该作者

显示直线没有问题啊,说明LCD的驱动时序没有问题吧




使用特权

评论回复
地板
ldyeah| | 2008-10-26 15:49 | 只看该作者

re

接仿真器的那几个口线要接上拉电阻
不然仿真器一取掉,那几个口线就浮空在那里

使用特权

评论回复
5
Batistuta_|  楼主 | 2008-10-27 07:52 | 只看该作者

昨晚查看了编译器的.MAP .lst文件,晕.....

见下面各图.

用字符串直接做参数的方法是网上一个程序这么做的.在这里却出了问题:

使用特权

评论回复
6
Batistuta_|  楼主 | 2008-10-27 07:53 | 只看该作者

main.lst

使用特权

评论回复
7
Batistuta_|  楼主 | 2008-10-27 07:54 | 只看该作者

lcd.lst

使用特权

评论回复
8
Batistuta_|  楼主 | 2008-10-27 07:54 | 只看该作者

main.lst

使用特权

评论回复
9
Batistuta_|  楼主 | 2008-10-27 07:55 | 只看该作者

eluosi.map

使用特权

评论回复
10
Batistuta_|  楼主 | 2008-10-27 08:00 | 只看该作者

用字符串直接做参数调用,

编译器把字符串定义在了EEPROM中.  参数调用时,把首地址传递了过去...


但是,俺的字符串显示函数中,怎么知道传递的地址是CODE还是EEPROM还是DATA?

用C就心虚..........

使用特权

评论回复
11
xwj| | 2008-10-27 08:46 | 只看该作者

一直对AVR的编译器的存储应用方式很不满

可以说没有一个是很好用的

1、不同编译器定义、使用不同存储段的方法完全不同,同一程序换个编译器要做很多改动(特别是GCC)
2、不同内存段都没有个统一的编址规则,换个地方存储又得伤脑筋(特别是混编程)
3、对字符串常量的应用都有问题,用Print("字符串");来输出CODE区产量基本上都有问题;就更别说Print(*Str); 用Str来指向任意空间了

使用特权

评论回复
12
Batistuta_|  楼主 | 2008-10-27 09:28 | 只看该作者

带仿真器调试时,又为什么对呢?

仿真器调试有什么区别? 没有把字符串放在EEPROM?

使用特权

评论回复
13
dudongdao| | 2008-10-27 14:11 | 只看该作者

能看看你的设置吗

你的C/C++compiler选项下的CODE是怎么设置的呀~   能发出来看看吗~
   MEMORY选项的前两个如果选了的话应该没问题的呀。

使用特权

评论回复
14
Batistuta_|  楼主 | 2008-10-27 15:14 | 只看该作者

hehe

照楼上所说,选上前两项就好了.  

谢谢各位了.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

61

主题

777

帖子

0

粉丝