单片机 C语言 关于数组的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机 C语言 关于数组的问题相关的知识,希望对你有一定的参考价值。
#include <reg52.h>
#define uchar unsigned char //声明uchar就是unsigned char
#define uint unsigned int //声明uint就是unsigned int
uchar code table1[]="I LOVE YOU!";
uchar code table2[]=" 51-MIC.";
/* uchar code table3[]="Hello everyone!"
uchar code table4[]="Welcome to here!" */
sbit lcden=P2^2; //1602 E脚
sbit lcdrs=P2^0; // RS脚
sbit lcdrw=P2^1; // R/W脚
uchar num ;
这个程序把table3,table4注释掉后没什么问题,不释掉就会报 error C183: unmodifiable lvalue
请问这是为什么
程序太长不能全部上传,以上只是最前面一部分
不是这个问题,在百度找了相关问题,我刚把code写成data就没事了,为什么
刚加了;号也可以,这又是为什么
加code意味着你是把程序存放于rom之中,程序运行中无法修改,所以会提示你那个错误。怀疑设置问题,你可以考虑下,在[]之间加个空格,改为[ ],养成好习惯了。
参考技术A table3和table4定义后面没有分号;定义没有什么问题,提示是不能修改的左值,是不是你程序里面使用到了table3和table4?修改了table3和table4里面的数据?追问
程序后面还没写完,我想是没后面没加;号(刚加上去就好了)
还有就是我把code换成data也没事,不知道这是为什么
code换成data一般没事,除非你RAM空间爆了。code含义是该变量放在代码区,也就是Flash ROM区,data含义是数据区,RAM区。如果不需要修改字符串行数据,建议用code,因为ROM区一般比RAM区大很多。
参考技术B 后面少“;”追问程序后面还没写完,我想是没后面没加;号(刚加上去就好了)
还有就是我把code换成data也没事,不知道这是为什么
code 是说数据放在ROM中
data 是放在RAM中,的直接数据区
以上是关于单片机 C语言 关于数组的问题的主要内容,如果未能解决你的问题,请参考以下文章
有关于单片机C语言,小问题,下面这段程序有个num参数,前面没有赋值,后面直接num++,是否num默认为0