讨论一个奇怪的问题,data与xdata程序运行效果不一。

0深水蓝0 2010-08-18 11:42:33
我在keil.uVision4里面用C语言开发一个程序,利用STC89C58RD+控制一个LCD小屏幕。

当我在工程设置里面把变量闲置在data范围内(RAM地址0x0000~0x00FF)时,一切正常。当我把变量优先放在xdata范围内(RAM地址0x1000~0xFFFF)时,液晶屏幕显示的文字边全是乱码。所有程序没有改变。

请问为什么呢?不解。
...全文
282 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
myeven 2010-08-26
  • 打赏
  • 举报
回复
晕,你都keil4了,我才刚换上keil3
0深水蓝0 2010-08-23
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 great_bug 的回复:]
89C58RD+........大约是1K的XRAM吧,地址范围是0-0x3ff,根本不到0x1000-0xffff
[/Quote]

不是这个问题,整个程序也没用到1K的RAM。

现在问题解决了。一个自增的变量i++在两次使用前没有初始化为0。

可能是由于在data内存空间里面编译器把我不同函数里面的i分配到不同的内存地址上,所以没出问题。
Great_Bug 2010-08-21
  • 打赏
  • 举报
回复
89C58RD+........大约是1K的XRAM吧,地址范围是0-0x3ff,根本不到0x1000-0xffff
yangweiliang567 2010-08-21
  • 打赏
  • 举报
回复
STC做的每个型号的XDATA不一样大 你没用超吧?
Great_Bug 2010-08-19
  • 打赏
  • 举报
回复
当我把变量优先放在xdata范围内(RAM地址0x1000~0xFFFF)......这地址范围内没有RAM吧?
xichen 2010-08-19
  • 打赏
  • 举报
回复
1 你确认你有xdata空间吗?
2 你确定0x1000~0xFFFF 没有被其他器件占用?
lbing7 2010-08-19
  • 打赏
  • 举报
回复
有XDATA吗???
schlafenhamster 2010-08-19
  • 打赏
  • 举报
回复
XDATA中的数据采取时间长,调整一下等待时间(即XDATA存取周期数)
zhenxing2000 2010-08-19
  • 打赏
  • 举报
回复
LCD显示异常,是不是中断造成的?如果有中断,检查一下中断程序,很有可能你修改变量的XDATA只是一个表面现象。
0深水蓝0 2010-08-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xichen 的回复:]
1 你确认你有xdata空间吗?
2 你确定0x1000~0xFFFF 没有被其他器件占用?
[/Quote]

内存分配时没问题的。

27,511

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧