求助51单片机C程序code问题

麻烦各位大仙们,请教一下哈,没有正式的学过C语言,只是自己自学的一些。

现在写了一个光立方的程序,用到了code语句。
uchar code cube1[] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00, //0

0x00,0x00,0x00,0x00,0x0f,0x00,0xf0,0x00,
0x00,0x00,0x0f,0x00,0xf0,0x00,0x00,0x0f,
......这里还有很多没办法打出来

};
为什么在code数组中,前256个数据读取完就回到开始了呢?
是不是code中数据的个数要有限制啊?

求高人指点呀~我正在学习单片机,有兴趣的可以交个朋友哈

如果定义在code也就是rom区(硬盘),数组里的个数就跟硬盘的大小有关系,如果说你的ROM足够大,可以存很多个。

至于为什么读到255就回到开始,那么这个取决于你读取数据的方法。可能定义的变量为unsigned char型。那么刚好最大就是255.追问

定义的unsigned int型变量啊。用的片子就是基本的89C52

追答

你把程序全部贴出来。

追问

#include
#define uchar unsigned char
#define uint unsigned int
uchar code cube1[] ={0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00, //0
,......还有很多,这是前面的部分,字数超过最大允许值了

追答

主要是读取~

追问

太多了,贴不完,我发你球球吧%>_<%

追答

贴秋秋要被屏蔽!你发到你的空间我来看!

追问

嗯嗯,我解决好了,确实是你说的问题,多谢啦

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-19
code没有限制,如果我所料不错,是你的读的程序有问题。
比如,你这样读:
unsigned char i;
用这个i作为标志来读,那么,就只能读256个,因为i的类型是unsigned char 的。
如果你这样定义
unsigned short i;
那么,就可以读全部的code的空间了。追问

对的,像你说的一样,我定义变量做标志去读的,
但是变量定义的是unsigned int型的啊,检查过几次了,还是不知道原因啊

第2个回答  2013-08-19
我觉得是因为 code默认放在片内的rom中,而51单片机的片内只有 0 - 255个字节,你要是想存放更多的元素,把 uchar code 改成 uchar xcode 放到片外应该就够用了。我好久不碰了,回答的不一定对,你试试可以。
相似回答