打印

数据存储区和程序存储区

[复制链接]
3620|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
46621295|  楼主 | 2009-2-21 11:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序中需要定义一个字库,下面代码我目前使用的方式,
#pragma romdata txtCode=0x1b000
rom unsigned char SnNumberCode[]={"20081234  "};
//还有其他字符图画定义
#pragma romdata
把字库定义在了程序存储区。
我想问的是,这个是不是不能定义在数据存储区?如果定义在数据存储区是不是每次掉电时就丢失了?谢谢!
沙发
xieyuanbin| | 2009-2-21 14:00 | 只看该作者

你的理解不错

数据区大概有两个,一个是易失性存储器,即MCU的内存,掉电后数据消失。另一个是非易失性存储器,即MCU的EEPROM,掉电后不消失。但并不是每个MCU都有EEPROM。
一般的常量都放在程序区。

使用特权

评论回复
板凳
46621295|  楼主 | 2009-2-21 18:31 | 只看该作者

我用的18F6720有EEPROM

我用MCU是有EEPROM的,同时我还扩展了外部数据存储芯片24LC515。当前程序里读取写入外部数据存储空间时用的I2C,过程很耗时。我想问如果我想把数据库定义在MCU的EEPROM,是不是直接将romdata改成udata就可以了?即,
#pragma idata txtCode=0x1b000
unsigned char SnNumberCode[]={"20081234  "};
//还有其他字符图画定义
#pragma idata

使用特权

评论回复
地板
46621295|  楼主 | 2009-2-21 18:54 | 只看该作者

我刚才试了一下

如果要定义在MCU自带的EEPROM内也是可以的,但字库不能大于一页的大小,对我的应用不满足要求。而直接定义在程序存储区好像就没有一页大小限制的问题。

使用特权

评论回复
5
xieyuanbin| | 2009-2-22 11:04 | 只看该作者

你看看数据手册

EEPROM一般是1K的容量。

使用特权

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

本版积分规则

56

主题

100

帖子

1

粉丝