关于51单片机编程错误C242和C187的问题!!这是一个DS1302和12864LCD可调式中文电子日历的程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于51单片机编程错误C242和C187的问题!!这是一个DS1302和12864LCD可调式中文电子日历的程序相关的知识,希望对你有一定的参考价值。

void DateTime_Adjust(char x)

INT8U d;
switch (Adjust_Index)

case6:
if(x == 1 && DateTime[6] < 99)DateTime[6]++;
if(x == -1 && DateTime[6] > 0)DateTime[6]--;
if(DateTime[4]==2&&DateTime[3]==29)DateTime[3]=28;
RefreshWeekDay();
break;
case4:
if(x==1&&DateTime[4]<12)DateTime[4]++;
if(x==-1&&DateTime[4]>1)DateTime[4]--;
if(DateTime[4]==2&&DateTime[3]==29)DateTime[3]=28;
RefreshWeekDay();
break;
case3:
d=M_Days[DateTime[4]];
if(DateTime[4]==2&&isLeapYear(2000+DateTime[6]))d=29;
if(x==1&&DateTime[3]<d)DateTime[3]++;
if(x==-1&&DateTime[3]>1)DateTime[3]--;
RefreshWeekDay();
break;
case2:
if(x==1&&DateTime[2]<23)DateTime[2]++;
if(x==-1&&DateTime[2]>0)DateTime[2]--;
break;
case1:
if(x==1&&DateTime[1]<59)DateTime[1]++;
if(x==-1&&DateTime[1]>0)DateTime[1]--;
break;
case0:
if(x==1&&DateTime[1]<59)DateTime[0]++;
if(x==-1&&DateTime[1]>0)DateTime[0]--;
break;


这个里面老是提示关于if的错误C187!

还有前面KTS.C(23): error C242: 'scalar': too many initializers提示这一句,问题是我前面没有关于scalar的定义啊!

程序不全,无法判断,

error C242是初始化对象时的数量超过你的定义,可能是初始化数组时中的数量超过你数组定义的数量。
参考技术A 朋友,
你看一下你的数组有没有定义错误。数组名前面有没有加code呀,还有就是你的keil有没有破解呀,没有破解的keil编写的程序大小受限。需要先破解keil。追问

已经破解了。。数组前面加code了。。但是我加和不加都是一个错误

本回答被提问者和网友采纳
参考技术B error C242: 'scalar': too many initializers,,,是不是定义数组时例如:tab[ ]=0x00,0x01时忘加了这个数组符号[ ]了 参考技术C 有没有定义数组,是不是数组里的成员太多了。
用的什么编译软件,双击错误提示一般会跳到错误代码行附近追问

用的keil4,应该不是数组的事

参考技术D 要给就给出错行相关的代码啊
你这问题可能是数组定义错误

单片机初学者编程经常会碰到的问题及处理办法

在刚开始接触单片机学习的时候,尤其是C语言基础比较薄弱的老铁们,经常会碰到很多比较低级的错误,程序编译错误一大堆,但不知道如何解决!

一、程序开发经常容易出现的问题汇总:

①忘记写分号,或分号输入错误,导致程序编译错误。

基本上每个C语言初学者都会碰到这个问题,忘记写分号,或者分号的输入格式错误。

C语言中的每条语言结束都是以分号为标志的,而且分号必须是英文输入模式下的输入。

②大括号不对等,导致编译不通过

C语言程序编程,大括号的左括号和右括号必须一一对应,否则编译提示错误。

③函数未声明,编译提示函数功能违法。

C语言中编程种,调用代码后面书写的函数,必须要先在文件的前面声明,再调用,否则就会报错,如果是调用前面的函数,可以不声明。

为了养成良好的习惯,C文件的所有函数最好都可以在对应的.H文件或本文件的前面声明一下。

④语法错误,“=”和“==”混淆,“&”和“&&”,“|”和“||”用法不能区分。

初学者,对C语言的符号理解不够透彻,导致程序编写逻辑错误。

⑤没有将.C文件加到工程中,导致编译无法通过。

⑥打开工程,.h文件提示感叹号。

从其他地方下载或拷贝的工程,.h经常会提示感叹号,出现这个问题只需要重新编译,感叹号就会消失。

⑦其他问题,没有增加.h文件,没有写main函数,备注格式错误等。

二、如何处理这些问题

每一个软件程序开发者,刚开始学习软件编程的时候,都会出现这些零零碎碎的问题,但大家别慌,出现这些问题都是很正常的,软件开发学习过程都会有这样的经历,当我们敲的代码多了,自然而然就会掌握经验,避免这些问题。

刚开始学习编程,如何处理这些问题?

编译错误的处理办法:

处理方法1:双击提示的错误信息,光标会自动跳转到错误提示处。

在光标跳转到的位置,仔细检查问题,是不是大括号不对应?是不是分号写成了中文输入格式?是不是“|”写成了”||”.

这个是程序编程过程中最常用的方法。

处理方法2: 将编译的错误提示,点击右键复制,然后百度搜索相关信息。

这个办法适合于处理一些较复杂的问题

处理方法3: 向一些有经验的老工程请教。

这种方法是必须是要有人帮助你的情况下才能实现。

我们在单片机学习的过程中,经常会因为一些小的问题很久不能解决和处理而放弃单片机的学习,如果大家没有这样的资源,可以关注无际单片机编程,得到帮助。

三、单片机程序开发,养成良好的编程习惯

①掌握单片机C语言基础

C语言是单片机程序开发的基础,所以单片机开发首先要学习单片机C语言基础。关于C语言开发必须要掌握的知识点如下所示:

这块入门的系统教程可以到无际单片机编程拿,很多零基础的看了反馈都还不错。

②层次分明,大括号对应

1).大括号需要一一对应

2).被包含的大括号内的程序需要右移一个tab按键字符

3).如蓝色框,同一个括号内的程序需要左对齐书写

程序开发逻辑一定要分明,这样不仅方便我们阅读程序代码,也方便我们查找代码程序的错误和警告

④统一的变量定义格式

在C语言编程种,虽然对变量的名词,函数名,端口的定义没有严格的要求,但我们在程序种的变量名称,函数名的格式要尽量统一。

1).变量的定义: 习惯变量的头字母大写,后面字母小写,变量的名称尽量和对应的英文字母一致

例如:unsigned char KeyState;/// 按键的状态

2).端口的定义: 端口定义,名称全部大写  

例如:sbit LED1 = P3^0;  //定义LED1对应的IO是P3.0

3).函数名的书写:

函数的名称一般根据函数的功能来定义的,方便大家阅读,如下:

⑤增加规范的程序备注说明。

对功能比较重要,逻辑较复杂的函数,我们一定要做好程序的备注说明,这不仅方便别人阅读,也方便自己查看,自己写的程序放的时间太久了也容易忘记。

以上是关于关于51单片机编程错误C242和C187的问题!!这是一个DS1302和12864LCD可调式中文电子日历的程序的主要内容,如果未能解决你的问题,请参考以下文章

关于基于C语言的单片机keil编程问题.

关于keil单片机编程中的data,idata,xdata,pdata,code数据类型

关于QT串口编程与单片机通信的问题,单片机为STM32

51单片机编程sprintf怎么用?

51单片机实验(关于定时器计数器)

51单片机C语言秒表程序报错误和警告(程序如下)