#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之中,程序运行中无法修改,所以会提示你那个错误。怀疑设置问题,你可以考虑下,在[]之间加个空格,改为[ ],养成好习惯了。
程序后面还没写完,我想是没后面没加;号(刚加上去就好了)
还有就是我把code换成data也没事,不知道这是为什么
code换成data一般没事,除非你RAM空间爆了。code含义是该变量放在代码区,也就是Flash ROM区,data含义是数据区,RAM区。如果不需要修改字符串行数据,建议用code,因为ROM区一般比RAM区大很多。
程序后面还没写完,我想是没后面没加;号(刚加上去就好了)
还有就是我把code换成data也没事,不知道这是为什么
code 是说数据放在ROM中
data 是放在RAM中,的直接数据区
单片机c语言程序中,数组最多能有几个元素?为什么我定定义了一个全局的...
但在单片机c语言程序中,实际上还是有限制的,原因在于单片机的存储空间是有限的,数组最多能有几个元素取决于单片机型号。你定义了一个全局的数组,unsigned char型的数组,最多只能有93个元素,说明你还有其他变量占用存储空间。如果需要一个512个元素的数组,用的单片机是stc15f2k60s2,可在定义数组时...
单片机c语言的一些疑问
aqq[23]={1,2,3};还有就是c语言的变量不是需要内存吗,单片机是怎么分配内存的,是把写好的程序放进单片机让后用程序指针一条一条的指,答:单片机分配内存实际上很复杂:定义的数据不同,分配内存的方式就不同。比如Int\/ char \/long int等数据类型,定义时看似简单,事实上编译器要化很多代码为...
单片机C语言中如何做一个函数判断一个数组的大小?
可以在函数中借用sizeof运算符,来获取数组大小。1 获取数组a整体占用空间可以使用 sizeof(a)该值为这个数组占用的总内存值,单位为字节。2 获取数组元素个数可以用 sizeof(a)\/sizeof(a[0])该值为数组开辟的元素个数。
单片机 C语言 移位问题请教!!
首先定义了一个包含两个元素的数组,arrya[0]=0x12,arrya[1]=0x34,然后把”arrya[0]=0x12“赋值给新建变量temp,然后temp(0x12)左移8位,变为0x1200,注意:因为temp是short类型,所以有32位,如果是8位的话,左移8位就都变为0啦!左移后再加arrya[1],也就是0x1234,然后再把0x1234赋...
单片机C语言中char转换成char[]数组的问题请教
示范一下,供参考 uchar * chang(uchar dat){ uchar b[8],i;for(i=0;i<8;i++){ if(dat&0x01)b[i]=1;else b[i]=0;dat>>=1;} return(b);} 至于x=1234之类的可以调用<stdlib.h>中的 atof(char *str)来实现。
编写简单的单片机c语言程序 1、指定数组找最大值 2、排序
defineNR10\/\/数组元素个数 \/*从主函数开始*\/ intmain(intargc,char**argv){ intar[NR];inti;fprintf(stdout,"请输入%d个整数:\\n",NR);\/*获取并检查用户输入*\/ while(1){ \/*循环获取NR个数据*\/ for(i=0;i<NR;i++){ if(fscanf(stdin,"%d",&ar[i])!=1){ fprintf(stdout,"输入...
单片机C语言数组,十六进制转十进制
是单片机的,不是电脑上的VC程序,楼下的又是scanf又是printf的。。。可以定义个int 变量来存储。int temp;temp = (ZFC[1] - '0')<<8+(ZFC[2] - '0')<<7+(ZFC[3] - '0')<<6+(ZFC[4] - '0')<<5+(ZFC[5] - '0')<<4;这样变换之后,temp就是十进制的62235了。也可以...
单片机程序中数组中的值怎么实现位左(右)移?(C语言)
data = nBitmapDot[i] >> 1; \/\/ nBitmap[i]右移一个二进制位,与 data = nBitmapDot[i] \/ 2; 同效。data = nBitmapDot[i] << 1; \/\/ nBitmap[i]左移一个二进制位,与 data = nBitmapDot[i] * 2; 同效。要说明的是移位操作(<< 或 >>)效率更高。
单片机C语言数组赋值求助
uchar fasong[6]={0xAA,0x55,0x01,0x00,0x55,0xAA}; \/\/使用strcmp和strcpy需要定义好数组长度char jieshou[3];\/\/接收字符串存放处 8是字符串位 可根据实际更改 初始数组有\\0空字符\/\/此小程序就是串口助手发送8位字符串数据给单片机 单片机接收到与固定字符串对比,如果对就将接受到的数据再发送个串口...
ICCAVR单片机C语言关于二维数组的问题?
ASCII是一个指向二维数组的指针常量。声明uchar (*ip2)[2]数组指针(看过有些书称之为行指针),ip2=ASCII;这样就可以通过编译并引用ASCII数组了。二维数组在函数调用时可以做实参进行参数传递。被调函数可以这样声明 void exmpl_fun(uchar (*pAryASCII)[2]);;也可以这样void exmpl_fun(uchar pAry...