打印

单片机机的内存模式问题

[复制链接]
2502|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bmfw|  楼主 | 2010-11-15 21:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天用AT89C51编了个程序,在程序中要查表,为什么表中的数据个数只有大约一百个才能编译通过,如果多了就通不过,改变了内存模式就行?
const uchar Font2[]={
/*--  文字:  0  --*/
/*--  宋体18;  此字体下对应的点阵为:宽x高=12x24   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=16x24  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,
0x30,0xC0,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
0x60,0x60,0x30,0xC0,0x30,0xC0,0x19,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,
0x30,0xC0,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
0x60,0x60,0x30,0xC0,0x30,0xC0,0x19,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,
0x30,0xC0,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
0x60,0x60,0x30,0xC0,0x30,0xC0,0x19,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};

相关帖子

沙发
ayb_ice| | 2010-11-15 21:17 | 只看该作者
const uchar code Font2[]即可
单片机RAM极其宝贵啊,51不同的RAM空间大小不一,访问方法,效率也不一样
DATA空间128字节
SFR空间128字节
IDATA空间256字节,其中128与DATA重叠
XDATA空间64K字节
PDATA空间256字节,共256页,与XDATA重叠
...
不同的编译模式将变量定位在不同的空间(除非特别指定),如果超过相应空间限制自然会出错了
...

使用特权

评论回复
板凳
dong_abc| | 2010-11-15 22:19 | 只看该作者
好好研究一下楼上所说的东西吧

使用特权

评论回复
地板
月下狂想曲| | 2010-11-16 19:35 | 只看该作者
之前也搅了个大头佛出来,定义了code 就行了,听说这样是放在flash里面的,

const 是一个常量吧,直接定义是放在那里的?放在RAM中吗?

使用特权

评论回复
5
bmfw|  楼主 | 2010-11-17 10:21 | 只看该作者
const:表示定义常量code:表示数据存储在程序存储器中,相当于汇编的DB,昨天才看见的,呵呵

使用特权

评论回复
6
ayb_ice| | 2010-11-17 10:44 | 只看该作者
const只是表明是常量,不可改变,并不表示放在什么空间

使用特权

评论回复
7
tianm| | 2010-11-17 12:25 | 只看该作者
书上都有写

使用特权

评论回复
8
zhiyonghe| | 2010-11-17 12:55 | 只看该作者
该用 code 还是要用

使用特权

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

本版积分规则

24

主题

86

帖子

0

粉丝