用keil编程出现error C141: syntax error near '}'怎么改?

#include<reg52.h>#defineucharunsignedchar#defineuintunsignedint#definedelay50ucharkey... #include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define delay 50
uchar keyscan(void);
void huayang1();
void delayt(uint t);
main()
{
uchar key;
P1=0xff;
while(1)
{ key=keyscan();
switch(key)
{case 0x7e:{huayang1();delayt(delay)};break;
case 0x7d:{huayang2();delayt(delay)};break;
case 0x7b:{huayang3();delayt(delay)};break;
case 0x77:{huayang4();delayt(delay)};break;
case 0xbe:{huayang5();delayt(delay)};break;
default: quanmie() ;
}
}
}
/********************/
/*延时子程序*/
/********************/
void delayt(uint t)
{uint i,j;

for(i=t;i>0;i--)

for(j=110;j>0;j--);

}

/********************/
/*彩灯花样1子程序*/
/********************/
void huayang1()

{

uchar i,led=0xff; //申明变量 i,led

for(i=8;i>0;i--) //从左至右点亮灯柱

{

led=led<<1;

P1=led;

delayt(delay); //延时函数

}

for(i=8;i>0;i--) //从左至右熄灭灯柱

{

led=led<<1;

led=led+0x01;

P1=led;

delayt(delay); //延时函数

}

}
/**********************/

/* 彩灯花样2子程序 */

/**********************/

void huayang2()

{

uchar i,led=0xff; //申明变量 i led

for(i=8;i>0;i--) //从右至左点亮灯柱

{

led=led>>1;

P1=led;

delayt(delay); //延时函数

}

for(i=8;i>0;i--) //从右至左熄灭灯柱

{

led=led>>1;

led=led+0x80;

P1=led;

delayt(delay); //延时函数

}

}
/**********************/

/* 彩灯花样3子程序 */

/**********************/

void huayang3()

{

uchar i; //申明变量 i

uchar code sled[8]={0xe7,0xc3,0x81,0x00,0x18,0x3c,0x7e,0xff};//申明数组sled

for(i=0;i<8;i++) //从内至外点亮灯柱从内至外熄灭灯柱

{

P1=sled;

delayt(delay); //延时函数

}

}
/**********************/

/* 彩灯花样4子程序 */

/**********************/

void huayang4()

{

uchar i; //申明变量 i

uchar code sled[8]={0x7e,0x3c,0x18,0x00,0x81,0xc3,0xe7,0xff};//申明数组sled

for(i=0;i<8;i++) //从外至内点亮灯柱从外至内熄灭

{

P1=sled;

delayt(delay); //延时函数

}

}
/********************/
/*彩灯花样5子程序*/
/*******************/
void huayang5()
{
uchari,led=0x01; //声明变量i,led
for(i=0;i<8;i++)//8个灯逐个闪动
{
p1=~led;
delayt(delay);//延时函数
led=led<<1;
}
}
/********************/
/*灯全灭*/
/********************/
void quanmie()
{
p1=0xff;
delayt(delay)
}
/********************/
/*按键扫描子程序*/
/********************/
uchar keyscan(void)//键盘扫描函数,使用行列反转扫描法
{
uchar cord_h,cord_l;//行列值
P3=0x0f; //行线输出全为0
cord_h=P3&0x0f; //读入列线值
if(cord_h!=0x0f) //先检测有无按键按下
{
delay(100); //去抖
cord_h=P3&0x0f; //读入列线值
if(cord_h!=0x0f)
{

P3=cord_h|0xf0; //输出当前列线值
cord_l=P3&0xf0; //读入行线值
return(cord_h+cord_l);//键盘最后组合码值
}
}return(0xff); //返回该值
}
展开
 我来答
chentaijituan
2010-07-07 · TA获得超过284个赞
知道小有建树答主
回答量:428
采纳率:66%
帮助的人:187万
展开全部
我编译出来反正是没问题了!不知道还有没有其他问题
你有一些子函数没有在前面声明,不想声明就把main放到最后也可以!还有一些语法上的错误!
"test" - 0 Error(s), 0 Warning(s).

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define delay 50
uchar keyscan(void);
void huayang1();
void delayt(uint t);

/********************/
/*延时子程序*/
/********************/
void delayt(uint t)
{uint i,j;

for(i=t;i>0;i--)

for(j=110;j>0;j--);

}

/********************/
/*彩灯花样1子程序*/
/********************/
void huayang1()

{

uchar i,led=0xff; //申明变量 i,led

for(i=8;i>0;i--) //从左至右点亮灯柱

{

led=led<<1;

P1=led;

delayt(delay); //延时函数

}

for(i=8;i>0;i--) //从左至右熄灭灯柱

{

led=led<<1;

led=led+0x01;

P1=led;

delayt(delay); //延时函数

}

}
/**********************/

/* 彩灯花样2子程序 */

/**********************/

void huayang2()

{

uchar i,led=0xff; //申明变量 i led

for(i=8;i>0;i--) //从右至左点亮灯柱

{

led=led>>1;

P1=led;

delayt(delay); //延时函数

}

for(i=8;i>0;i--) //从右至左熄灭灯柱

{

led=led>>1;

led=led+0x80;

P1=led;

delayt(delay); //延时函数

}

}
/**********************/

/* 彩灯花样3子程序 */

/**********************/

void huayang3()

{

uchar i; //申明变量 i

uchar code sled[8]={0xe7,0xc3,0x81,0x00,0x18,0x3c,0x7e,0xff};//申明数组sled

for(i=0;i<8;i++) //从内至外点亮灯柱从内至外熄灭灯柱

{

P1=sled;

delayt(delay); //延时函数

}

}
/**********************/

/* 彩灯花样4子程序 */

/**********************/

void huayang4()

{

uchar i; //申明变量 i

uchar code sled[8]={0x7e,0x3c,0x18,0x00,0x81,0xc3,0xe7,0xff};//申明数组sled

for(i=0;i<8;i++) //从外至内点亮灯柱从外至内熄灭

{

P1=sled;

delayt(delay); //延时函数

}

}
/********************/
/*彩灯花样5子程序*/
/*******************/
void huayang5()
{
uchar i,led=0x01; //声明变量i,led
for(i=0;i<8;i++)//8个灯逐个闪动
{
P1=led;
delayt(delay);//延时函数
led=led<<1;
}
}
/********************/
/*灯全灭*/
/********************/
void quanmie()
{//
P1=0xff;
delayt(delay);//
}
/********************/
/*按键扫描子程序*/
/********************/
uchar keyscan(void)//键盘扫描函数,使用行列反转扫描法
{
uchar cord_h,cord_l;//行列值
P3=0x0f; //行线输出全为0
cord_h=P3&0x0f; //读入列线值
if(cord_h!=0x0f) //先检测有无按键按下
{
delayt(delay); //去抖
cord_h=P3&0x0f; //读入列线值
if(cord_h!=0x0f)
{

P3=cord_h|0xf0; //输出当前列线值
cord_l=P3&0xf0; //读入行线值
return(cord_h+cord_l);//键盘最后组合码值
}
}return(0xff); //返回该值
}

void main()
{
uchar key;
P1=0xff;
while(1)
{ key=keyscan();
switch(key)
{case 0x7e:
{huayang1();
delayt(delay);}
break;
case 0x7d:
{huayang2();
delayt(delay); }
break;
case 0x7b:
{huayang3();
delayt(delay);}
break;
case 0x77:
{huayang4();
delayt(delay);}
break;
case 0xbe:
{huayang5();
delayt(delay);}
break;
default: quanmie() ;
}
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式