51单片机编程错误 1.C(20): error C141: syntax error near 'void'

51单片机编程错误 1.C(20): error C141: syntax error near 'void',第1张

首先就是上面说的你把main函数中的延时函数调用前的void去掉

其次

把 sbit D1=P1^0; //位 *** 作放到函数声明 void yanshi(); 前面

所有的变量定义、位定义,都不能出现在中间,要放在最前面

就这个程序而言,就纯在这几个错误,只要是有错误就无法编译成功

错误一、按键检测函数内,赋值语句被你写成判断语句了,如下图这里

就是说多写了一个等于号,并且这几个按键的检测部分否存在此错误,另外还有第一行的if判断语句也要使用方括号

错误二、中断函数部分,在中断内不能使用局部变量的声明,否则相当于每次进入中断都重新声明一个变量,之后再累加,始终是从0到1的变化,还有一点是,中断内不要使用工作方式设定TMOD=0x01;,这个只需要设定一次即可,就是在主函数中设定一次就可以了,如图

解决办法是,将temp的变量声明语句移到函数外,使其成为全局变量

错误三、既然程序的前端有各个函数的定义部分,那就要吧主函数放在最上端,不需要经常修改的函数放在最下端,虽然这不是强制性的,但这是一个良好的编程习惯

先改正以上错误吧!

#include "reg52h"

#include "stringh"

unsigned char flag,i,put=0;

unsigned char table[2];

unsigned char str[2]={"aa"};

unsigned char code req[]="OK";

void mcu_51_uart_init()

{

TMOD=0x20; //M1 0010 M2 0000

TH1=0xfd; //波特率9600 定时器初值

TL1=0xfd; //波特率9600 定时器初值

TR1=1; // 启动定时器1

REN=1; //允许串口接收

SM0=0; //设定串口工作方式1

SM1=1; //同上

EA=1; //开总中断

ES=1; //开串口中断

}

void mcu_51_uart_send()

{

if(flag==1&&strcmp(table,str)==0)

{

ES=0;

for(i=0;i<2;i++)

{

SBUF=req[i]; //发送

while(!TI);

TI=0;

}

ES=1;

flag=0;

}

}

void main()

{

mcu_51_uart_init();

while(1)

{

mcu_51_uart_send();

}

}

void ser() interrupt 4

{

if(RI)

{

RI=0;

table[put]=SBUF;

if((put==0)&&(table[0]=='a'))put++;

put&=2;

if(put==0)flag=1;

}

}

以上就是关于51单片机编程错误 1.C(20): error C141: syntax error near 'void'全部的内容,包括:51单片机编程错误 1.C(20): error C141: syntax error near 'void'、单片机调试的时候出错了 求大神、单片机程序错误 strcmp等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9285499.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存