单片机KEIL编程时这样定义table:unsigned char table;但后来的P0=table[key];错了

错误是errorC216:subscriptonnon-arrayortoomanydimensions,是我定义不对了吗,要怎样改... 错误是error C216: subscript on non-array or too many dimensions,是我定义不对了吗,要怎样改 展开
 我来答
LYQGXH
2012-12-30 · TA获得超过409个赞
知道小有建树答主
回答量:314
采纳率:100%
帮助的人:228万
展开全部
楼上以正解,我就来说说为什么要用code这个标准C没有的关键字,总的来说单片机有两个地方存东西一个是Fash.一个是Ram, Fash是用来存你写的程序的,RAM就是内存,用来放变量之类的,这一点和一般的电脑PC机不同,PC的程序都是放在RAM中运行的。这样做是因为51的RAM很小,比如STC89s51的RAM只有512字节,能给你用的更加少,只有128字节左右,所以定义一个数组,或者定义多个变量的时候一定要想想内存够不够用! 如果这个数组里的东西你不用去改变的话你就要用code 这个关键字,这样一来这个数组就会放到Flash里面去,Flash有8k。一但你把数组放到FLASH,你就不能去改变它的值,比如table[0] = 1;这是不行的。那有没有能改变值又是很大的数组呢,没有!这就是51单片机的局限性,内存太小!
黄石佳诚家电维修
2012-12-30 · TA获得超过1427个赞
知道小有建树答主
回答量:1559
采纳率:93%
帮助的人:585万
展开全部
unsigned char table[];
P0=table[key];
改成这样!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huwqly
2012-12-30 · TA获得超过493个赞
知道小有建树答主
回答量:646
采纳率:20%
帮助的人:185万
展开全部
code unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x40,0x00};//0,1,2,3,4,5,6,7,8,9,-|,-,无,|- ,_
数码管编程时这样定义
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式