_1100A 2022-05-13 17:44 采纳率: 0%
浏览 223
已结题

keil单片机编译错误 syntax error near ';'

哪位高人帮忙解答一下问题,哪错了,怎么错了。希望能得到有用的回答。有些文字说明没改。

#include "reg51.h"
#include "string.h"
#include "stdio.h"
#include "lcd.h"
#include "key.h"
#include "adc.h"
#include "time.h"
/**********************************
变量定义
**********************************/
sbit relay=P2^3;                    //继电器控制位
uchar disp_buff[16];              //电量百分比
uchar i=0;                         //中间变量
uchar key_num = 0;                                //按键扫描标志位变量            
uchar flag_display = 0;          //显示界面标志位变量
uint temp_max = 45;                //温度最大值变量
uint temp_min = 15;                    //温度最小值变量
uint time_jishi = 0;                            //10ms计时变量                   
/**********************************
函数声明
**********************************/
void Delay_function(uint x);            //延时函数(ms)
void Key_function(void);                    //按键函数
void Monitor_function(void);            //监测函数
void Display_function(void);            //显示函数
void Manage_function(void);                //处理函数

/****
*******    主函数 
*****/
void main()
{
    Lcd1602_Init();                                 //LCD1602初始化
    Delay_function(50);                        //延时50ms
    lcd1602_clean();                            //清屏
    Delay_function(50);                        //延时50ms
    Timer0_Init();                                //定时器0初使化函数
    Delay_function(50);                        //延时50ms
    
    while(1)
    {
        Key_function();                            //按键函数
        Monitor_function();                    //监测函数
        Display_function();                    //显示函数
        Manage_function();                    //处理函数
        Delay_function(10);                    //延时10ms
        time_jishi++;                                //计时变量+1
        if(time_jishi >= 5000)
        {
            time_jishi = 0;
        }
    }
}

/****
*******    延时 x ms函数
*****/
void Delay_function(uint x)
{
    uint m,n;
    for(m=x;m>0;m--)
    for(n=110;n>0;n--);
}
/****
*******按键函数
*****/
void Key_function(void)
{
    key_num =Keyboard_Scan();    //按键扫描
    if(key_num!=0)                     //有按键按下
    {
        switch(key_num)
        {
      case 1:                                                    //按键1,切换设置界面
                flag_display++;
                if(flag_display >=3)
                    flag_display = 0;
                lcd1602_clean();                            //清屏
            break;
          case 2;
                if(flag_display==2)
                {
                switch(key_num)
                {
                     case 1:                                                    //按键1,切换设置界面
                flag_display++;
                if(flag_display >=3)
                    flag_display = 0;
                lcd1602_clean();
            case 1:                                                    //按键2
                if(flag_display ==2)                    //界面1:温度最小值+1
                {
                    if(temp_min < 999)
                        temp_min++;
                }
                
                if(flag_display == 1)                    //界面2:温度最大值+1
                {
                    if(temp_max < 99)
                        temp_max++;
                }
            break;

            case 3:                                                    //按键3
                if(flag_display == 2)                    //界面1:温度最小值-1
                {
                    if(temp_min > 0)
                        temp_min--;
                }
                
                if(flag_display == 3)                    //界面2:温度最大值-1
                {
                    if(temp_max > 0)
                        temp_max--;
                }
            break;
        default:
        break;
            }
        }
            break;
                case 3;                                                    //按键3,切换设界面
                if(flag_display ==3)
                lcd1602_clean();
                break;
        default:
        break;
            }
         }
        }
/****
*******显示函数
*****/            
void Display_function(void)
{
    switch(flag_display)                                                        //根据不同的显示模式标志位,显示不同的界面
    {

        case 0:        //界面0
        lcd1602_display_str(1,0,"predict:");
        lcd1602_display_str(1,11,"h");
        lcd1602_display_str(1,14,"m");
    lcd1602_display_predict(1,9,"predict_h");
        lcd1602_display_predict(1,12,"predict_m");
        lcd1602_display_predict(1,15,"predict_s");
        i=(uint)voltage*16/256;
        memset(disp_buff[16],'\xFF',i);
        memset(disp_buff[16]+i,'\xDB',16-i);
        lcd1602_display_str(2,0,disp_buff[16]);
        break;
        
        case 1;
         lcd1602_display_str(1,0,"Temperature:");                            //界面1:显示温度
            lcd1602_display_temp(2,3,temp);
        break;

        case 2:            //界面2:显示设置温度最小值
        {
            switch(flag_display)
            case 1;
            lcd1602_display_str(1,0,"Temp_Min=");
            lcd1602_display_str(2,0,"Temp_Max=");
            if(time_jishi % 20 == 0)
            {
                lcd1602_display_num(1,9,"temp_min");
                lcd1602_display_num(2,9,"temp_max");
            }
            if(time_jishi % 40 == 0)
            {
                lcd1602_display_str(1,9,"    ");
            }
        break;

        case 2:                                                                                //界面3:显示设置温度最大值
            lcd1602_display_str(1,0,"temp_Min=");
            lcd1602_display_str(2,0,"Temp_Max=");
            if(time_jishi % 20 == 0)
            {
                lcd1602_display_num(1,9,temp_min);
                lcd1602_display_num(2,9,temp_max);
            }
            if(time_jishi % 40 == 0)
            {
                lcd1602_display_str(2,9,"    ");
            }
        break;
            
            case 3;
             lcd1602_display_str(1,0,"Temperature:");                            //界面1:显示温度
            lcd1602_display_temp(2,3,temp);
            break;
            
        default:
        break;
    }
    }
}
/****
*******处理函数
*****/
void Manage_function()
{
    if(voltage>=5||temp_min>=temp||temp_max<=temp)
        {      
            delay_funtion()
            relay=0;
        }
    else
    relay=1;
}


img

  • 写回答

2条回答 默认 最新

  • qllaoda 2022-05-13 17:55
    关注

    80行 case 2后面应该带冒号,不是分号,后面122,152行也是,你自己再检查一下还有没有别的地方也是。
    问题太多了,你自己按编译器错误提示去找吧

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月13日
  • 修改了问题 5月13日
  • 修改了问题 5月13日
  • 创建了问题 5月13日

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算