单片机KEIL编程时这样定义table:unsigned char table;但后来的P0=table[key];错了
错误是errorC216:subscriptonnon-arrayortoomanydimensions,是我定义不对了吗,要怎样改...
错误是error C216: subscript on non-array or too many dimensions,是我定义不对了吗,要怎样改
展开
3个回答
展开全部
楼上以正解,我就来说说为什么要用code这个标准C没有的关键字,总的来说单片机有两个地方存东西一个是Fash.一个是Ram, Fash是用来存你写的程序的,RAM就是内存,用来放变量之类的,这一点和一般的电脑PC机不同,PC的程序都是放在RAM中运行的。这样做是因为51的RAM很小,比如STC89s51的RAM只有512字节,能给你用的更加少,只有128字节左右,所以定义一个数组,或者定义多个变量的时候一定要想想内存够不够用! 如果这个数组里的东西你不用去改变的话你就要用code 这个关键字,这样一来这个数组就会放到Flash里面去,Flash有8k。一但你把数组放到FLASH,你就不能去改变它的值,比如table[0] = 1;这是不行的。那有没有能改变值又是很大的数组呢,没有!这就是51单片机的局限性,内存太小!
展开全部
unsigned char table[];
P0=table[key];
改成这样!
P0=table[key];
改成这样!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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,-|,-,无,|- ,_
数码管编程时这样定义
数码管编程时这样定义
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询