OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5353|回复: 11

程序找错,高人指点

[复制链接]

18

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2013-11-5
在线时间
0 小时
发表于 2013-11-11 15:14:20 | 显示全部楼层 |阅读模式

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit key0=P0^0;
sbit key1=P0^1;
sbit key2=P0^2;
sbit key3=P0^3;
sbit b1=P0^4;
sbit k1=P2^4;
sbit k2=P2^3;
sbit k3=P2^2;
sbit k4=P2^1;
sbit k5=P2^0;
void delay_ms (uint z)
{
 uint x,y;
 for (x=z;x>0;x--)
  for (y=110;y>0;y--);
}
void timer()
{
 TMOD|=0x01;
 TH0=0xd8;
 TL0=0xf0;
 IE=0X82;
 ET0=1;
 TR0=1;
 }
uchar ControlFlag=0;
   void EXTI1_IRQHandler(void)

  uchar data i;
 delay_ms(30);//消抖
 if(key0 == 1)
 {
#ifdef _DEVICEFLAG_ 
  
 for(i=0;i<2;i++)
 {
  delay_ms(1000);
 }
 if(key0 == 0)  //按键2
 {
  ControlFlag = 2;
 }
 else if(key0 == 1)
 {
  ControlFlag = 1;
 }  
#else
 if(key0 == 1)
 {
  ControlFlag = 1;
 }
#endif
}
 TL0=0;  //清除LINE1上的中断标志位 
}
//外部中断2服务程序  复位开关2
void EXTI2_IRQHandler(void)
{ uchar data i;
 delay_ms(30);
 if(key1 == 1)
 {
 for(i=0;i<2;i++)
 {
  delay_ms(1000);
 }
 if(key1 == 0)
 {
  ControlFlag = 6;
 }
 else if (key1 == 1)
 {
  ControlFlag = 5; 
 }
 }
 TL0=0;  //清除LINE2上的中断标志位
}
//外部中断3服务程序 复位开关1
void EXTI3_IRQHandler(void)
{ uchar data i;
 delay_ms(30);
 if(key2 == 1)
 {
 for(i=0;i<2;i++)
 {
  delay_ms(1000);
 }
 if(key2 == 0)
 {
  ControlFlag = 4;
 }
 else if(key2 == 1)
 {
  ControlFlag = 3;
 }
 }
 TL0=0;  //清除LINE3上的中断标志位
}
main()
{
    k1=0;
    k2=0;
    k3=0;
    k4=0;
    k5=0;

 while(1)
 {
#ifdef _DEVICEFLAG_           
 if((b1==1)||(key3 == 1))
 {
  k5 = 1;
 }
 else if ((b1 == 0)&&(key3 == 0))
 {
  k5 = 0;
 }
/*************************************************************
*************************************************************/
#ifdef _DEVICEFLAG_   
       case 1:         //机器总开关长按
       if(key3 == 0)      //服务器+5V为0时
     {
         if(b1 == 0)     //K1断开时
      {
       k1 = 1;
       k4 = 1;
       delay_ms(1000);
       k4 = 0;
      }
        else if (b1== 1)                   //K1闭合时
        {
          k1 = 0;
        }
     }
     else if(key3 ==1)       //服务器+5V为1时
     {
        if(b1 == 0)                    //K1断开时
        {
          k4 =1;
        delay_ms(1000);
       delay_ms(1000);
       delay_ms(1000);
       delay_ms(1000);
       k4 = 0;

        }
        else if(b1 ==1)                         //K1闭合时  
        {
          k4 = 1;
       delay_ms(1000);
       delay_ms(1000);
       delay_ms(1000);
       k1= 0;
       delay_ms(1000);
       k4 = 0; 
        }
     }
     ControlFlag = 0;          
     break;
   case 2:                //机器总开关短按
     if(key3 == 0)      //服务器+5V为0时
     {
      if(b1 ==0)     //K1为断开时
      {
       k1 = 1;
       k4 = 1;
       delay_ms(1000);
       k4 = 0;
      }
        else if (b1 == 1)                  //K1为闭合时
        {
          k4 = 1;
       delay_ms(1000);
       k4 = 0;
        }
     }
     else if(key3 ==1)      //服务器+5V为1时
     {
        if(b1 == 0)                   //K1断开时
        {
          k1 = 1;                 

        }
        else if(b1 ==1)                       //K1闭合时                
        {
       ; 
        }
     }
     ControlFlag = 0;
     break;
   case 3:              //复位开关1长按
     if(b1 == 1)                             //K1闭合时
     {
      k2 = 1;
      delay_ms(1000);
      delay_ms(1000);
      delay_ms(1000);
      k2 = 0;   
     }
     ControlFlag = 0;
     break;
   case 4:               //复位开关1短按
     if(b1 == 1)                              //K1闭合时
     {
      k1 = 0;
      delay_ms(1000);
      k1 = 1;
     }
     ControlFlag = 0;
     break;
   case 5:                            //复位开关2长按
     if(key3== 1)
     {
      k3= 1;
      delay_ms(1000);
      k3 = 0;
     }
     ControlFlag = 0;       
     break;
   case 6:                                                //复位开关2短按
           if(key3 == 1)
     {
      k3 = 1;
      delay_ms(1000);
      k3 = 0;
     }
     ControlFlag = 0;
     break;
 }
}

这是错误:

compiling 112.c...
112.C(32): warning C280: 'i': unreferenced local variable
112.c(234): warning C316: unterminated conditionals
112.C(234): error C141: syntax error near ''
112.c - 1 Error(s), 2 Warning(s).
究竟哪点错了啊

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2013-11-11 15:39:07 | 显示全部楼层
回复【楼主位】我的世界123:
---------------------------------
直接双击错误不就调到代码相对应的地方了么
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

18

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2013-11-5
在线时间
0 小时
 楼主| 发表于 2013-11-11 15:48:32 | 显示全部楼层
回复【2楼】Badu_Space:
---------------------------------
可是,显示的是最后一行程序得下一行有错误,关键是那一行啥都没有啊,不知怎么会有错误
回复 支持 反对

使用道具 举报

54

主题

1008

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2382
金钱
2382
注册时间
2012-11-22
在线时间
403 小时
发表于 2013-11-11 15:59:36 | 显示全部楼层
要不是非法字符,可能中英文问题;要不就是少括号多括号。另外,case可以没有switch吗?
态度决定一切
回复 支持 反对

使用道具 举报

18

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2013-11-5
在线时间
0 小时
 楼主| 发表于 2013-11-11 16:05:31 | 显示全部楼层
回复【4楼】冰封嗜魔:
---------------------------------
可以没有switch啊,但是我也没找到非法字符啊
回复 支持 反对

使用道具 举报

54

主题

1008

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2382
金钱
2382
注册时间
2012-11-22
在线时间
403 小时
发表于 2013-11-11 16:17:14 | 显示全部楼层
额,那你查查括号吧
态度决定一切
回复 支持 反对

使用道具 举报

18

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2013-11-5
在线时间
0 小时
 楼主| 发表于 2013-11-11 16:56:14 | 显示全部楼层
回复【6楼】冰封嗜魔:
---------------------------------
好的
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2013-11-11 17:18:50 | 显示全部楼层
回复【7楼】我的世界123:
---------------------------------
你这里那个分号那里是不是空执行,如下

else if(b1 ==1)                       //K1闭合时                 
        {
       ; 
        }
     }
     ControlFlag = 0;
     break;
   case 3:              //复位开关1长按

看你那里的报错应该是非法字符,你把switch加上去编译一下看下有没报错什么的
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

18

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2013-11-5
在线时间
0 小时
 楼主| 发表于 2013-11-12 08:50:34 | 显示全部楼层
回复【8楼】Badu_Space:
---------------------------------
好的,谢啦
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2013-11-16
在线时间
1 小时
发表于 2013-11-16 11:45:31 | 显示全部楼层

这里面少了两个#endif

回复 支持 反对

使用道具 举报

18

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2013-11-5
在线时间
0 小时
 楼主| 发表于 2013-11-18 11:02:27 | 显示全部楼层
回复【10楼】wuxin999:
---------------------------------
谢谢啊
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2013-11-16
在线时间
1 小时
发表于 2013-11-21 09:39:02 | 显示全部楼层
回复【11楼】我的世界123:
---------------------------------
不客气
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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