找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1550|回复: 7
收起左侧

求解答,编译出现这个错误是什么原因2 交通灯.c(24): error C129: missing ';' be...

[复制链接]
ID:776635 发表于 2020-6-12 08:40 | 显示全部楼层 |阅读模式
#include<reg52.h>
#include<delay.h>


/*************************函数声明**************************/
void show();          //显示函数
void init();
/************************端口定义**************************/
sbit k1=P3^7;         //        K1  时间加
sbit k2=P3^6;         //        K2  时间减
sbit k3=P3^5;         //        K3  暂停,确认

sbit led_red_a=P2^0;         //       
sbit led_red_b=P2^2;         //
sbit led_green_a=P2^1;         //       
sbit led_green_b=P2^3;         //

sbit WX_a_1=P2^4;             //       
sbit WX_a_2=P2^5;             //
sbit WX_b_1=P2^6;             //       
sbit WX_b_2=P2^7;             //
/************************变量定义**************************/
char temp1 = 30;          // 初始红绿灯时间
uchar temp2;         //产生1秒 计数变量...........................................................这个出错
uchar temp4=30;          //存储时间更改变量

uchar flag1=0;                  //a,b,两个方向红路灯切换标志
uchar flag2=0;                  //暂停标志
/**********************数组定义***************************/
uchar tab_dx[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴,不带小数点

/************************显示**************************/
void show()
{       
         
          if(flag1==0)                         //a  红灯亮 绿灯灭       b        红灯灭 绿灯亮
           {  
              led_red_a=0;               
          led_red_b=1;         
          led_green_a=1;         
          led_green_b=0;         
           }
          else                                   //a  红灯灭 绿灯亮        b        红灯亮 绿灯灭
           {
              led_red_a=1;               
          led_red_b=0;         
          led_green_a=0;         
          led_green_b=1;
           }
                       

          if(flag1==0)
          {
                 WX_a_1=1;            
             WX_a_2=1;            
             WX_b_1=1;                    
             WX_b_2=0;
                                                       
         P0=tab_dx[temp1%10];
             delayxms(3);
             P0=0x00;

                 WX_a_1=1;            
             WX_a_2=1;            
             WX_b_1=0;                    
             WX_b_2=1;

         P0=tab_dx[temp1/10];
             delayxms(3);
             P0=0x00;
          }       
          else
          {
               WX_a_1=1;            
             WX_a_2=0;            
             WX_b_1=1;                    
             WX_b_2=1;
                                                       
         P0=tab_dx[temp1%10];
             delayxms(3);
             P0=0x00;

                 WX_a_1=0;            
             WX_a_2=1;            
             WX_b_1=1;                    
             WX_b_2=1;

         P0=tab_dx[temp1/10];
             delayxms(3);
             P0=0x00;
         }                       
}
/************************显示1**************************/
void show_1()
{       
                 static uchar kk;
         kk++;

             led_red_a=0;               
         led_red_b=0;         
         led_green_a=1;         
         led_green_b=1;         

                 WX_a_1=1;            
             WX_a_2=1;            
             WX_b_1=1;                    
             WX_b_2=0;
                                                       
         P0=tab_dx[temp4%10];
             delayxms(kk/126);
             P0=0x00;

                 WX_a_1=1;            
             WX_a_2=1;            
             WX_b_1=0;                    
             WX_b_2=1;

         P0=tab_dx[temp4/10];
             delayxms(kk/126);
             P0=0x00;
          
               WX_a_1=1;            
             WX_a_2=0;            
             WX_b_1=1;                    
             WX_b_2=1;
                                                       
         P0=tab_dx[temp4%10];
             delayxms(kk/126);
             P0=0x00;

                 WX_a_1=0;            
             WX_a_2=1;            
             WX_b_1=1;                    
             WX_b_2=1;

         P0=tab_dx[temp4/10];
             delayxms(kk/126);
             P0=0x00;               
}

/************************按键检测**************************/
void key()
{               
                  if(k1==0)           //时间加
           {
                 delayxms(10);
                 while(k1==0) ;
                 temp4++;
                 temp1=temp4;
                 if(temp4==91)
                  {
                   temp4=0;
                  }
           }

                   if(k2==0)         //          时间减
           {
                 delayxms(10);
                 while(k2==0);
                 temp4--;
                 temp1=temp4;
                 if(temp4==-1)
                  {
                   temp4=90;
                  }
           }

           if(k3==0)                     // 暂停,确认
           {
                 delayxms(10);
                 while(k3==0);
                 flag2=~flag2;
           }
}

/************************中断初始化**************************/
void init()
{
      TMOD=0x11;              //设置定时器0,1为工作方式1
          TH0=(65536-50000)/256;  //初值
          TL0=(65536-50000)%256;
//          TH1=(65536-50000)/256;  //初值
//          TL1=(65536-50000)%256;
          EA=1;                   //打开中断总开关
          ET0=1;                  //开定时器0中断
//          ET1=1;                                  //开定时器1中断
          TR0=1;                  //启动定时器0   
          EX0 = 1;                /* 允许外部中断0中断 */
      PX0 = 1;                /* 外部中断0为高优先级 */
}
/************************************************************
                   主函数
*************************************************************/
void main()
{
   init();  

   while(1)
        {
           key();

           if(flag2==0)
           {   
               TR0=1;
                      show();  //显示函数
           }

           else
           {
               TR0=0;
                      show_1();  //显示函数
           }
          }
}

/* ----------------- t0中断函数 ----------------- */
void time1() interrupt 1                                               
{

  TH0=(65536-50000)/256;  //
  TL0=(65536-50000)%256;

  temp2++;
  if(temp2 == 20)
  {         
     temp2=0;
         temp1=temp1-1;
         if(temp1==-1)  
         {
                 temp1=temp4;
                 flag1=~flag1;
         }
   }  

}

/* ----------------- 外部中断函数 ----------------- */
int0_srv( ) interrupt 0 using 2
  {
    uchar a,b,c,d;

    int i;
        for (i = 0;i<10000;i++);

        if ( INT0 ==0)
        {
         a=led_red_a;                 //保留指示灯状态
         b=led_red_b;         
         c=led_green_a;         
         d=led_green_b;
           while(INT0==0)
           {         
             led_red_a=0;               
         led_red_b=0;         
         led_green_a=1;         
         led_green_b=1;              /* 使两边亮起红灯 */

           if(flag1==0)
          {
                 WX_a_1=1;            
             WX_a_2=1;            
             WX_b_1=1;                    
             WX_b_2=0;
                                                       
         P0=tab_dx[temp1%10];
             delayxms(3);
             P0=0x00;

                 WX_a_1=1;            
             WX_a_2=1;            
             WX_b_1=0;                    
             WX_b_2=1;

         P0=tab_dx[temp1/10];
             delayxms(3);
             P0=0x00;
          }       
          else
          {
               WX_a_1=1;            
             WX_a_2=0;            
             WX_b_1=1;                    
             WX_b_2=1;
                                                       
         P0=tab_dx[temp1%10];
             delayxms(3);
             P0=0x00;

                 WX_a_1=0;            
             WX_a_2=1;            
             WX_b_1=1;                    
             WX_b_2=1;

         P0=tab_dx[temp1/10];
             delayxms(3);
             P0=0x00;
         }                                 
       }               
         led_red_a=a;                 
         led_red_b=b;         
         led_green_a=c;         
         led_green_b=d;                              /* 恢复指示灯状态  */
    }
  }



回复

使用道具 举报

ID:776635 发表于 2020-6-12 08:42 | 显示全部楼层
2  交通灯.c(24): error C129: missing ';' before 'temp2'
这是错误的全部
回复

使用道具 举报

ID:776954 发表于 2020-6-12 09:57 | 显示全部楼层
你有定义过uchar吗
例如
#define uchar unsigned char
不写的话怎么能使用uchar
回复

使用道具 举报

ID:739545 发表于 2020-6-12 10:58 | 显示全部楼层
uchar 没有宏定义
回复

使用道具 举报

ID:24758 发表于 2020-6-12 11:00 | 显示全部楼层
里面的uchar 没有定义过,前面缺了#define  uchar  unsigned char
回复

使用道具 举报

ID:452950 发表于 2020-6-12 11:12 | 显示全部楼层
uchar未定义
回复

使用道具 举报

ID:584814 发表于 2020-6-12 11:39 | 显示全部楼层
Keil 5 表示编译通过
回复

使用道具 举报

ID:342822 发表于 2020-6-12 11:56 | 显示全部楼层
#include<delay.h>没有地雷文件吗
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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