用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); //返回该值
} 展开
#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); //返回该值
} 展开
展开全部
我编译出来反正是没问题了!不知道还有没有其他问题
你有一些子函数没有在前面声明,不想声明就把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() ;
}
}
}
你有一些子函数没有在前面声明,不想声明就把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() ;
}
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询