找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3375|回复: 5
收起左侧

求大神指点 红色部分怎么改啊 p.c(35): error C129: missing ';' before '...

[复制链接]
ID:187110 发表于 2017-4-7 14:21 | 显示全部楼层 |阅读模式
#include <reg52.h>          //调用单片机头文件
#define uchar unsigned char  //无符号字符型 宏定义  变量范围0~255
#define uint  unsigned int  //无符号整型 宏定义 变量范围0~65535  
#include <intrins.h>              //数码管段选定义 0     1    2    3    4    5 6  7  8 9
uchar code smg_du[]={0x14,0x27,0x1c,0x45,0x27,0x81,0x84,0x57,0x24,0x05, //        A B  C   D    E   F 不显示         
0x06,0xa4,0x9c,0x64,0x8c,0x8e,0xff};  //断码  //数码管位选定义
sbit smg_we1 = P2^0;     //数码管位选定义
sbit smg_we2 = P2^2;
sbit smg_we3 = P2^4;
sbit smg_we4 = P2^6;
uchar dis_smg[8] = {0};
sbit SCL=P1^2;  //SCL定义为P1口的第3位脚,连接ADC0832SCL脚
sbit DO=P1^3;  //DO定义为P1口的第4位脚,连接ADC0832DO脚
sbit CS=P1^0;  //CS定义为P1口的第4位脚,连接ADC0832CS脚  
uchar shidu;     //湿度等级
uchar s_high = 70,s_low = 25; //湿度报警参数  
sbit dianji = P3^5;     //电机IO定义
void delay_1ms(uint q)
{
       uint i,j;
       for(i=0;i<q;i++)  
       for(j=0;j<120;j++);
}
void smg_we_switch(uchar i)
{
    switch(i)  
  {   
case 0: smg_we1 = 0;  smg_we2 = 1; smg_we3 = 1;  smg_we4 = 1; break;  
case 1: smg_we1 = 1;  smg_we2 = 0; smg_we3 = 1;  smg_we4 = 1; break;  
case 2: smg_we1 = 1;  smg_we2 = 1; smg_we3 = 0;  smg_we4 = 1; break;   
case 3: smg_we1 = 1;  smg_we2 = 1; smg_we3 = 1;  smg_we4 = 0; break;
   }
}  
uchar flag_200ms
uchar key_can;   //按键值的变量
uchar menu_1;        //菜单设计的变量  
void display()
{
static uchar i;     
   i++;  
   if(i >= 4)   
   i = 0;   
   P0 = 0xff;    //消隐   
   smg_we_switch(i);   //位选
   P0 = dis_smg;   //段选         
   delay_1ms(1);
}
unsigned char ad0832read(bit SGL,bit ODD)
{  
unsigned char i=0,value=0,value1=0;     
    SCL=0;   
    DO=1;   
    CS=0;  //开始   
    SCL=1;  //第一个上升沿   
    SCL=0;   
    DO=SGL;   
    SCL=1;   //第二个上升沿   
    SCL=0;   
    DO=ODD;   
    SCL=1;     //第三个上升沿   
    DO=1;   
    for(i=0;i<8;i++)   
    {   
      SCL=1;   
      SCL=0; //开始从第四个下降沿接收数据   
      value<<=1;
        if(DO)     
         value++;         
}   
for(i=0;i<8;i++)   
{                   //接收校验数据   
value1<<=1;   
if(DO)     
value1+=0x80;   
SCL=1;   
SCL=0;   
}   
CS=1;   
SCL=1;   
if(value==value1)    //与校验数据比较,正确就返回数据,否则返回0   
     return value;  
return 0;
}
uchar key_can;  //按键值  
void key()  //独立按键程序
{  
static uchar key_new;  
key_can = 20;                   //按键值还原  
P1 |= 0xf0;  
if((P1 & 0xf0) != 0xf0)  //按键按下  
{   
delay_1ms(1);       //按键消抖动   
if(((P1 & 0xf0) != 0xf0) && (key_new == 1))   
{               //确认是按键按下   
key_new = 0;   
switch(P1 & 0xf0)
{     
case 0xe0: key_can = 1; break;    //得到k2键值     
case 0xb0: key_can = 2; break;    //得到k3键值     
case 0x70: key_can = 3; break;    //得到k4键值   
}      
     }     
}  
else   
key_new = 1;
}
void key_with()
{  
if(menu_1 == 0)  
{   if(key_can == 3)   //手动打开电机   
dianji = 0;     //打开电机   
if(key_can == 2)   
dianji = 1;     //关闭电机  
}   
if(key_can == 1)  //设置键  
{   
menu_1 ++;   
if(menu_1 >= 3)   
{   
menu_1 = 0;   
}  
}  
if(menu_1 == 1)   //设置湿度上限
{   
if(key_can == 2)   
{   
s_high ++   //湿度上限值加1     
if(s_high > 99)     
s_high = 99;   
}   
if(key_can == 3)
{   
s_high --   //湿度上限值减1     
if(s_high <= s_low)     
s_high = s_low + 1   
}   
dis_smg[0] = smg_du[s_high % 10];            //取个位显示   
dis_smg[1] = smg_du[s_high / 10 % 10];  //取十位显示   
dis_smg[2] = 0xef;      
dis_smg[3] = 0x26;  //H  0010 0110   
}   
if(menu_1 == 2)   //设置湿度下限  
{  
if(key_can == 2)   
{   
s_low ++    //湿度下限值加1     
if(s_low >= s_high)     
s_low = s_high - 1;   
}   
if(key_can == 3)   
{   
s_low --;   //湿度下限值减1     
if(s_low <= 1)     
s_low = 1;   
}   
dis_smg[0] = smg_du[s_low % 10];            //取个位显示   
dis_smg[1] = smg_du[s_low / 10 % 10];  //取十位显示   
dis_smg[2] = 0xef;      
dis_smg[3] = 0xBC;  //L  
}  
}
void dianji_kongzi()
{  
static uchar value,value1;  
if(shidu <= s_low)  
{   
value ++;   
if(value >= 2)   
{   
value = 10;   
dianji = 0;       //打开电机   
}  
}  
else

  value = 0;  
if(shidu >= s_high)  
{   
value1 ++;   
if(value1 >= 2)   
{   
value1 = 10;   
dianji = 1;       //关机电机   
}  
}else   
value1 = 0;
}
void main()
{  
delay_1ms(100);  
P0 = P1 = P2 = P3 = 0xff;   //初始化IO口  
while(1)  
{   
key();     //独立按键程序   
if(key_can < 10)   
{   
key_with();   //按键按下要执行的程序  
}
flag_200ms ++;   
if(flag_200ms >= 200)   
{      
flag_200ms = 0;      
P0 = 0xff;    //消隐     
if(menu_1 == 0)   
{     
shidu = ad0832read(1,0); //读出湿度     
shidu = shidu * 99 / 255;
dis_smg[0] = 0xff;  //     
dis_smg[1] = smg_du[shidu % 10]; //取湿度的个位显示     
dis_smg[2] = smg_du[shidu / 10 % 10]     //取湿度的十位显示     
dis_smg[3] = 0XFF;
}   
dianji_kongzi();  //电机控制函数   
}   
display();   //数码管显示函数   
delay_1ms(1);  
}
}

回复

使用道具 举报

ID:180800 发表于 2017-4-7 16:12 | 显示全部楼层
uchar flag_200ms
uchar key_can;   //按键值的变量
uchar menu_1;        //菜单设计的变量  

提示很明显了啊,uchar flag_200ms少个分号
回复

使用道具 举报

ID:187110 发表于 2017-4-7 16:57 | 显示全部楼层
但是加上后错误更多
回复

使用道具 举报

ID:187110 发表于 2017-4-7 17:01 | 显示全部楼层
tenacity2012 发表于 2017-4-7 16:12
uchar flag_200ms
uchar key_can;   //按键值的变量
uchar menu_1;        //菜单设计的变量  

但是加上后错误更多   求指点啊
回复

使用道具 举报

ID:82765 发表于 2017-4-7 17:18 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

ID:187110 发表于 2017-4-7 17:29 | 显示全部楼层
cjjcjj1 发表于 2017-4-7 17:18
1、少了分号
2、变量重复定义

没重复定义啊   而且加了分号后 一堆错误
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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