找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 815|回复: 7
打印 上一主题 下一主题
收起左侧

单片机程序查错error C141: syntax error near '}'

[复制链接]
跳转到指定楼层
楼主
100黑币
麻烦大家帮我检查一下程序程序,运行结果是这样的
compiling 123.c...
123.C(34): error C141: syntax error near '}'
123.c - 1 Error(s), 0 Warning(s).
程序如下
#include <reg51.h>
#include <intrins.h>
#include <math.h>
#define uchar unsigned char
#define uint  unsigned int
sbit E=P2^0;
sbit RW=P2^1;
sbit RS=P2^2;
sbit key=P1^0;
sbit key1=P1^1;
sbit key2=P1^2;
sbit key3=P1^3;
sbit key4=P1^4;
sbit key5=P1^5;
sbit key6=P1^6;
uchar code tab1[]="H2:056 CH4:061";
uchar code tab2[]="C2H2:031 C2H4:032";
uchar code tab3[]="C2H6:075 CO:000";
uchar code tab4[]=" BI:0-1-0   ";
uchar code tab5[]="wendu:028";
uchar code tab6[]="dianliu:10";
uchar code tab7[]="dianya:205";
uint wendu=28;
uint dianliu=10;
uint dianya=205;
moshi=0;

sbit beer=P2^6;
//蜂鸣器-
void beerc()
{
beer=0; _delay_ms();
beer=1;_delay_ms();
}
sbit led1=P1^7;
sbit led2=P3^7;
void led()
{
  while(1);
  led1=0;led2=1;
   led1=1;led2=0;
  delay()
  }
void main()
{
uint n=0;
key=1;  moshi=0;
key=~key; moshi=1;
key1=0; wendu=wendu+3;
key2=0;wendu=wendu-3;
key3=0; dianya=dianya+2;
key4=0; dianya=dianya-2;
key5=0; dianliu=dianliu+1;
key5=0; dianliu=dianliu-1;
if(wendu<=0&&wendu>=55)
if(dianya<=180&&dianya>=250)
if(dianliu<=6&&dianliu>=16)
moshi=1;beer=0;case0;  
}
void xianshi()
{
if(key=~key)
  moshi=1;
  uchar code tab1[]="H2:056 CH4:061";
  uchar code tab2[]="C2H2:031 C2H4:032";
  uchar code tab3[]="C2H6:075 CO:000";
  uchar code tab4[]=" BI:0-1-0 ";
  if(key=1)
  moshi=0;
  uchar code tab5[]="wendu:028";
  uchar code tab6[]="dianliu:10";
  uchar code tab7[]="dianya:205";
}
void delay(uint del)
{
        uint i,j;
        for(i=0;i<del;i++)
            for(j=0;j<=168;j++);
}
void writecmd(uchar com)
{
        E=0;
        RS=0;   //写入命令
        RW=0;
        P0=com;
        delay(2);
        E=1;
        delay(2);
        E=0;
}
void writedata(uchar dat)
{
        E=0;
        RS=1;     //写入数据
        RW=0;
        P0=dat;
        delay(2);
        E=1;
        delay(2);
        E=0;
}
void init(void)
{
        writecmd(0x38);    //设置16*4显示,5*7点阵,8位数据接口
        writecmd(0x0c);    //显示开,关光标
        writecmd(0x06);    //移动光标
        writecmd(0x01);    //清除LCD的显示内容
}
void main(){
        uchar j;
        init();
        writecmd(0x80);
        for(j=0;j<13;j++)
        {
                writedata(tab1[j]);
                delay(2);
        }
        writecmd(0x80+0x40);
        for(j=0;j<16;j++)
        {
                writedata(tab2[j]);
                delay(2);
        }
        writecmd(0x90);
        for(j=0;j<13;j++)
        {
                writedata(tab3[j]);
                delay(2);
        }
        writecmd(0x90+0x40);
        for(j=0;j<16;j++)
        {
                writedata(tab4[j]);
                delay(2);
        }
        while(1);
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:883242 发表于 2023-4-21 09:22 | 只看该作者
只有支持C99标准的编译器在打开C99开关后才可以随用随定义变量遗憾的是KeilC51并不支持C99标准。
回复

使用道具 举报

板凳
ID:743654 发表于 2023-4-21 09:42 | 只看该作者
怎么有两个main() 函数?
回复

使用道具 举报

地板
ID:743654 发表于 2023-4-21 09:43 | 只看该作者
双击error处,看会指到哪一行,那一行就有错。
回复

使用道具 举报

5#
ID:570727 发表于 2023-4-21 09:53 来自手机 | 只看该作者
定义变量的时候,moshi是什么类型的变量?
回复

使用道具 举报

6#
ID:101869 发表于 2023-4-21 11:42 来自手机 | 只看该作者
两个 main  delay没有声明
回复

使用道具 举报

7#
ID:807182 发表于 2023-4-21 14:49 | 只看该作者
你看看是不是这里,并且,一般先定义delay函数,在进行调用

51hei.png (184.59 KB, 下载次数: 6)

51hei.png
回复

使用道具 举报

8#
ID:584814 发表于 2023-4-21 17:37 | 只看该作者
error C141: syntax error near '}'
可按E文的原意理解找问题,也可以将
sbit led1=P1^7;
sbit led2=P3^7;
调整到void beerc()之前试试。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表