完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#define uchar unsigned char #define uint unsigned int ***it key0=P0^0; ***it key1=P0^1; ***it key2=P0^2; ***it key3=P0^3; ***it b1=P0^4; ***it k1=P2^4; ***it k2=P2^3; ***it k3=P2^2; ***it k4=P2^1; ***it 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). 究竟哪点错了啊 |
|
相关推荐
11个回答
|
|
可是,显示的是最后一行程序得下一行有错误,关键是那一行啥都没有啊,不知怎么会有错误
|
|
|
|
要不是非法字符,可能中英文问题;要不就是少括号多括号。另外,case可以没有switch吗?
|
|
|
|
可以没有switch啊,但是我也没找到非法字符啊
|
|
|
|
额,那你查查括号吧
|
|
|
|
|
|
你这里那个分号那里是不是空执行,如下
else if(b1 ==1) //K1闭合时 { ; } } ControlFlag = 0; break; case 3: //复位开关1长按 看你那里的报错应该是非法字符,你把switch加上去编译一下看下有没报错什么的 |
|
|
|
好的,谢啦
|
|
|
|
这里面少了两个#endif
|
|
|
|
谢谢啊
|
|
|
|
不客气
|
|
|
|
先把程序清空了,一块一块往里放,到时候你就知道哪里出错了
|
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2951 浏览 16 评论
3455 浏览 1 评论
8984 浏览 16 评论
4045 浏览 18 评论
1096浏览 3评论
567浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
564浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2299浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1855浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 13:35 , Processed in 1.330882 second(s), Total 100, Slave 81 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号