c语言在编译的时候,到底哪里错了??? 11.C(9): error C129: missing ';' before 'keydown' 50
#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintuns...
#include<reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f, 0x40,0x00}; // 共阴数码管 0-9
//键盘扫描程序
void keyscan();
Enum keydown kdwn ;
P1=oxff;
If((p1&oxff)!=ox1f)
{
delay(1000)
{ ;// 延时10ms 消抖
If((p1&ox1f)!=ox1f)
{
Kdwn=p1&ox1f
Switch(kdwn)
{
Case clckws:clokwise( );break;//正转
Case antclckws: anticlokwise( );break;//反转
Case mstsp: motorstop( );break;//急停
Case spdp: speedup( ); break;//加速
Case spdwn: speeddown( ); break;//减速
}
}
}
While((p1&ox1f)!=ox1f);
}
;//T0中断程序
void time0_int(void) interrupt 1
{
time++;
TH0 = 0xec;
TL0 = 0x78;
if(change == 0)
{
PWM2 = 1;
if(time == high)
PWM1=0;
else if(time == period)
{
PWM1 = 1;
time = 0;
}
}
else
{ PWM1 = 1;
if(time == high)
PWM2=0;
else if(time == period)
{
PWM2 = 1;
time = 0;
}
}
}
//数码管显示程序
Void ledshow(unsigned int i)
{
disdata[0]=i/1000; //百位数
disdata[1]=i%1000/100; //十位数
disdata[2]=i%100/10; //个位数
disdata[3]=i%10; //小数位
P2=0xf7;P0=0x00;
P0=table[ disdata[3]];
delay(20);
P2=0xfb;P0=0x00;
P0=table1[ disdata[2]];
delay(20);
P2=0xfd;P0=0x00;
P0=table[ disdata[1]];
delay(20);
P2=0xfe;P0=0x00;
P0=table[ disdata[0]];
delay(20);
}
void delay_20() // 延时20uS
{ uchar bt ;
for(bt=0;bt<100;bt++);
}
//主程序
Void main (void)
{
TMOD=OX01 ;//定时器0设为16位定时
TH0=(65536-pulsewidth)
TL0= (65536-pulsewidth)
EA=1 ;//开CPU中断
ET=0 ;// ;开T0中断
}
TR=0 ;// ;启动定时器T0
While(1)
{
ledshow() ;//数码管显示
keyscan() ;//键盘扫描
} 展开
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f, 0x40,0x00}; // 共阴数码管 0-9
//键盘扫描程序
void keyscan();
Enum keydown kdwn ;
P1=oxff;
If((p1&oxff)!=ox1f)
{
delay(1000)
{ ;// 延时10ms 消抖
If((p1&ox1f)!=ox1f)
{
Kdwn=p1&ox1f
Switch(kdwn)
{
Case clckws:clokwise( );break;//正转
Case antclckws: anticlokwise( );break;//反转
Case mstsp: motorstop( );break;//急停
Case spdp: speedup( ); break;//加速
Case spdwn: speeddown( ); break;//减速
}
}
}
While((p1&ox1f)!=ox1f);
}
;//T0中断程序
void time0_int(void) interrupt 1
{
time++;
TH0 = 0xec;
TL0 = 0x78;
if(change == 0)
{
PWM2 = 1;
if(time == high)
PWM1=0;
else if(time == period)
{
PWM1 = 1;
time = 0;
}
}
else
{ PWM1 = 1;
if(time == high)
PWM2=0;
else if(time == period)
{
PWM2 = 1;
time = 0;
}
}
}
//数码管显示程序
Void ledshow(unsigned int i)
{
disdata[0]=i/1000; //百位数
disdata[1]=i%1000/100; //十位数
disdata[2]=i%100/10; //个位数
disdata[3]=i%10; //小数位
P2=0xf7;P0=0x00;
P0=table[ disdata[3]];
delay(20);
P2=0xfb;P0=0x00;
P0=table1[ disdata[2]];
delay(20);
P2=0xfd;P0=0x00;
P0=table[ disdata[1]];
delay(20);
P2=0xfe;P0=0x00;
P0=table[ disdata[0]];
delay(20);
}
void delay_20() // 延时20uS
{ uchar bt ;
for(bt=0;bt<100;bt++);
}
//主程序
Void main (void)
{
TMOD=OX01 ;//定时器0设为16位定时
TH0=(65536-pulsewidth)
TL0= (65536-pulsewidth)
EA=1 ;//开CPU中断
ET=0 ;// ;开T0中断
}
TR=0 ;// ;启动定时器T0
While(1)
{
ledshow() ;//数码管显示
keyscan() ;//键盘扫描
} 展开
4个回答
展开全部
Enum keydown kdwn ;
我看你的代码,这里似乎是你已经定义过了一个叫keydown的枚举,现在想定义一个这个枚举的变量kdwn。如果是这样的话,不需要加enum这个标志的。
enum是用来定义一个枚举的,而定义一个枚举类的变量,只需要用枚举类名字就行了。
如果你没有定义这个枚举类的话,这么写:
enum keydown
{
clckws 0,
antclckws 1,
....
};
我看你的代码,这里似乎是你已经定义过了一个叫keydown的枚举,现在想定义一个这个枚举的变量kdwn。如果是这样的话,不需要加enum这个标志的。
enum是用来定义一个枚举的,而定义一个枚举类的变量,只需要用枚举类名字就行了。
如果你没有定义这个枚举类的话,这么写:
enum keydown
{
clckws 0,
antclckws 1,
....
};
展开全部
{ ;// 延时10ms 消抖
If((p1&ox1f)!=ox1f)
{
Kdwn=p1&ox1f //这里少了分号。
Switch(kdwn)
报错的是:
error C129: missing ';'
If((p1&ox1f)!=ox1f)
{
Kdwn=p1&ox1f //这里少了分号。
Switch(kdwn)
报错的是:
error C129: missing ';'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这一句话有错 :Enum keydown kdwn ;
注意enum的大小写,枚举变量的定义。
注意enum的大小写,枚举变量的定义。
追问
改了,错的更多了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
关键字 首字母都大写了,系统无法识别,象If ,Case,Enum都是
oxff也不对头,估计是0xff
oxff也不对头,估计是0xff
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
更多回答(2)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询