社区
单片机/工控
帖子详情
讨论一个奇怪的问题,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
打赏
收藏
讨论一个奇怪的问题,data与xdata程序运行效果不一。
我在keil.uVision4里面用C语言开发一个程序,利用STC89C58RD+控制一个LCD小屏幕。 当我在工程设置里面把变量闲置在data范围内(RAM地址0x0000~0x00FF)时,一切正常。当我把变量优先放在xdata范围内(RAM地址0x1000~0xFFFF)时,液晶屏幕显示的文字边全是乱码。所有程序没有改变。 请问为什么呢?不解。
复制链接
扫一扫
分享
转发到动态
举报
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]
内存分配时没问题的。
keil中
data
,x
data
,code指的是什么?
code=20412B保存在ROM,注:(code要小于EEROM+Flash)ROM 存储固化程序 (存放指令代码和固定数值,
程序运行
后不可改动)RAM
程序运行
中数据的随机存取(掉电丢失数据)1.
data
,x
data
,code指的是什么呢?FLASH 存储编写的程序和永久保存的数据。2.单片机ROM,RAM,FLASH的功能。注意:EEROM+Flash=总rom大小。
data
=191.3B保存在片内RAM。x
data
可寻址片外RAM。x
data
=650B保存在片外RAM。..
【keil】keil中
data
,x
data
,code指的是什么,51单片机选型
小知识 byte和bit的区别:
一个
bit是
一个
0或1,中文叫做
一个
二进制位。
一个
Byte是8个bit,中文名称叫
一个
字节。 ROM:存储固化程序【存放指令代码和固定数值,
程序运行
后不可改动】 RAM:
程序运行
中数据的随机存取【掉电丢失数据】 FLASH:存储编写的程序和永久保存的数据 关于 内存的介绍(RAM,ROM,SRAM,DDR) 点击这里 先看keil编译后的结果 以Keil为例,首先我们在编译结束后,会得到如下提示(单位为字节Byte)
data
:可寻址片内ram x
data
:可
keil
data
x
data
const code
Keil 编译后出现 Program Size:
data
=19.5 x
data
=481 const=1312 code=21064 需要分析 每个类目代表什么意思。 1、
data
表示芯片的内部RAM 2、x
data
表示外部RAM 3、code 表示程序大小 存储类型与存储区关系
data
—> 可寻址片内ram b
data
—> 可位寻址的片内ram i
data
—> 可寻址片内ram,允许访问全部内部ram p
data
—> 分页寻址片外ram (MOVX..
关于
data
,x
data
,i
data
等的用法区别
data
:指定数据存储在内部低128字节的数据存储器内,即(0x00-0x7f)地址范围内,在定义变量时不指定存储区域,则默认为
data
类型,这部分存储区可片内直接寻址,速度最快。由于空间较小,所以只有频繁用到或者对访问速度要求很高的变量才可以放在
data
区内,比如for循环中的计数值。局部变量(静态局部变量除外)可放在
data
区,因为局部变量的空间...
关于keil软件编译后的
data
x
data
和code的说明
在对51单片机的程序进行编译的时候,在编译的最后会提示Program Size:
data
= xx x
data
=xx code=xx那么,这些存储时根据什么计算的呢?并且根据这个如何判断单片机内部的存储空间是否够用呢? 那么首先
data
x
data
code分别代表什么意思呢?
data
表示使用的内部RAM,x
data
表示使用的是外部RAM,code表示的是程序的大小。那么这些大小和程
单片机/工控
27,511
社区成员
28,797
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章