标题:
写了个单片机中断的程序总是出错请大家看一下c141 syntax error near')'
[打印本页]
作者:
工控新鸟
时间:
2019-10-25 18:11
标题:
写了个单片机中断的程序总是出错请大家看一下c141 syntax error near')'
#include"reg51.h"
#define uchar unsigned char
uchar cishu;
void delay(void)
{
uchar a, b, c;
for (a = 0, a < 5, a++)
{
for (b = 0, b < 200, b++)
{
for (c = 0, c < 200, c++)
{
;
}
}
}
}
void delay10ms(void)
{
uchar a, b;
for (a = 0, a < 5, a++)
{
for (b = 0, b < 200, b++)
{
;
}
}
}
void cswx()
{
uchar i;
i = 0x01;
for (i = 0, i < 8, i++)
{
i <<= 1;
P1 = ~i;
}
delay;
}
void cxws ()
{
uchar i;
i = 0x80;
for (i = 0, i < 8, i++)
{
i >>= 1;
P1 = ~i;
}
delay;
}
void cwwl()
{
uchar huayang[4] {0x81, 0x42, 0x24, 0x18};
uchar i;
for (i = 0, i < 4, i++)
{
P1 = ~huayang[i];
}
delay;
}
void main(void)
{
EA = 1;
EX0 = 1;
IT0 = 1;
switch (cishu)
{
case cishu=1: cswx(); break;
case cishu=2: cxws(); break;
case cishu=3: cwwl(); break;
}
}
void int_0 () interrupt 0
{
delay10ms();
if (INT0 == 0)
{
cishu++;
if (cishu > 3)
{
cishu = 1;
}
}
}
复制代码
总是提示错误代码c141 syntax error near')'
c211 non-constant case/dim expressio怎么解决??
作者:
angmall
时间:
2019-10-26 21:23
程序有问题,
void main(void)
{
EA = 1;
EX0 = 1;
IT0 = 1;
switch (cishu)
{
//case cishu=1: cswx(); break; //这里错了
//给你改了
case 1: cswx(); break;
case 2: cxws(); break;
case 3: cwwl(); break;
}
}
作者:
wulin
时间:
2019-10-27 07:23
根据程序判断,楼主是想写一个按键外部中断切换花样流水灯,但程序错误太多,有点离谱。
按楼主的意图,修改好了,可以满足楼主意图,做了详细注释,楼主可以比对犯了那些错误。
#include"reg51.h"
#define uchar unsigned char
uchar cishu;
bit flag=0;//增加中断标志,提供跳出循环条件
void delay(void)
{
uchar a, b, c;
for (a = 0; a < 5; a++)//循环中的符号是";"不是",",下同
for (b = 0; b < 200; b++)
for (c = 0; c < 200; c++);
}
void delay10ms(void)
{
uchar a, b;
for (a = 0; a < 5; a++)
for (b = 0; b < 200; b++);
}
void cswx()
{
uchar i,j;//增加一个变量,下同
j = 0x01;//"i"在循环中不可随意更改,否则循环乱套,下同
for (i = 0; i < 8; i++)
{
if(flag==1)//判断是否切换,下同
{
flag=0;//标志清0,下同
break; //跳出循环,下同
}
P1 = ~j;//赋值在先,下同
delay();//延时放在循环中,下同
j <<= 1;//移位在后,下同
}
}
void cxws ()
{
uchar i,j;
j = 0x80;
for (i = 0; i < 8; i++)
{
if(flag==1)
{
flag=0;
break;
}
P1 = ~j;
delay();
j >>= 1;
}
}
void cwwl()
{
uchar huayang[4]={0x81, 0x42, 0x24, 0x18};//缺少"="
uchar i;
for (i = 0; i < 4; i++)
{
if(flag==1)
{
flag=0;
break;
}
P1 = ~huayang[i];
delay();
}
}
void main(void)
{
EA = 1;
EX0 = 1;
IT0 = 1;
while (1)//必须设置死循环,程序约束在主循环中运行
{
switch (cishu)
{
case 1: cswx(); break;//多分枝判断条件不可以用赋值方式
case 2: cxws(); break;
case 3: cwwl(); break;
}
}
}
void int_0 () interrupt 0
{
delay10ms();
if (INT0 == 0)
{
cishu++;
if (cishu > 3)
{
cishu = 1;
}
}
flag=1;//发生按键切换的需求
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1