STC 单片机 存储器 类别

liuchang910781261 2015-01-23 12:58:29
我使用的是STC12c5a60s2单片机 ,我看datasheet上说:60K片内程序存储器,1280字节片内RAM数据存储器
问题1:那我是不是可以理解该单片机没有片外程序存储器和片外数据存储器(可是我使用uchar xdata Frame[256];程序并没有报错)
问题2:我的理解是data,xdata是指数据的大小,那就是放在数据存储器里,code是指程序的大小,是存储在程序存储器里的,也就是存储在单片机flash中的,请问大神:我这样理解对吗?
问题3:那生成的hex大小可认为就是程序+数据的总大小吗?
如下为keil编译
...全文
216 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
worldy 2015-02-04
  • 打赏
  • 举报
回复
引用 5 楼 liuchang910781261 的回复:
大神,那dstasheet上所说的1280字节片内ram存储器,我该怎么理解么? 还是说,针对用户来说,我不需要区分它到底是片内,还是片外,那如果这样理解的话,使用data和xdata关键字不就没有实际意义了吗?请大神指教!
当然有意义,data生成的是mov指令,可以直接用于add之类中;xdata生成的是movx指令(movx之前还的有麻烦的地址处理),如果对xdata数据执行运算,必定需要先使用movx
liuchang910781261 2015-01-24
  • 打赏
  • 举报
回复
大神,那dstasheet上所说的1280字节片内ram存储器,我该怎么理解么?
还是说,针对用户来说,我不需要区分它到底是片内,还是片外,那如果这样理解的话,使用data和xdata关键字不就没有实际意义了吗?请大神指教!
liuchang910781261 2015-01-24
  • 打赏
  • 举报
回复
大神,那dstasheet上所说的1280字节片内ram存储器,我该怎么理解么?
还是说,针对用户来说,我不需要区分它到底是片内,还是片外,那如果这样理解的话,使用data和xdata关键字不就没有实际意义了吗?请大神指教!
worldy 2015-01-23
  • 打赏
  • 举报
回复
STC12c5a60s2这个芯片 内存1280(128+128+1024),前2个128同8052,后1024相当于片外RAM,STC系列逻辑上,作为外部ram处理,之所以这么分,是因为访问不同区域的数据必须使用不同的指令,LZ好好研究一下8051的寻址方式 程序存储器:60K keilc中,使用data 、idata、xdata....等和单片机并没有直接的关系,但是生成的代码有关,这些类型用于指明一个变量如何生成代码,因此,即使你用到了2K的xdata,但芯片只有1K编译也不会错误,只是运行会错。但data 、idata是固定范围的,如果超过,应该就会编译出错
liuchang910781261 2015-01-23
  • 打赏
  • 举报
回复
引用 1 楼 w22net 的回复:
问题1:60K片内程序存储器,1280字节片内RAM数据存储器 都在片内,data,xdata 是51的256字节外的ram 1280超过256 所以没错。 问题2:我也是这么理解的 问题3:hex的大小应该不是程序+数据的大小 这个你自己可以验证 看hex文件的大下是不是等于code+data+data 验证了麻烦也告诉我下,
大神:请问下,你说片内数据存储器超过256,那是说它属于片外数据存储器了,是这个意思吗?谢谢啊
w22net 2015-01-23
  • 打赏
  • 举报
回复
问题1:60K片内程序存储器,1280字节片内RAM数据存储器 都在片内,data,xdata 是51的256字节外的ram 1280超过256 所以没错。 问题2:我也是这么理解的 问题3:hex的大小应该不是程序+数据的大小 这个你自己可以验证 看hex文件的大下是不是等于code+data+data 验证了麻烦也告诉我下,

27,373

社区成员

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

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