keil c51编译时出错error c202,求教~~
程序是at89c51来控制pwm驱动电机的,源程序如下:#include<reg51.h>sbitMA=P3^0;sbitMB=P3^1;sbitPWM=P3^7;bit...
程序是at89c51来控制pwm驱动电机的,源程序如下:
#include<reg51.h>
sbit MA = P3^0;
sbit MB = P3^1;
sbit PWM = P3^7;
bit KeyFree;
unsigned char PWM_OUT;
void Delay(unsigned char); //声明延时函数
unsigned char KeyScan(void);
void keyProcess(unsigned char);
main()
{
TMOD = 0x01;
TH0 = - 50000 /256;
TL0 = - 50000 % 256;
IE = 0x82;
TR0 = 1;
while (1)
{
keyProcess(KeyScan());
}
}
void T0_INT () interrupt 1 //定时器函数控制PWM输出
{
TH0 = -5000 / 256;
TL0 = -5000 % 256;
PWM=1; //设置PWM输出
Delay(PWM_OUT);
PWM=0;
Delay(100-PWM_OUT);
}
void Delay(unsigned char x)
{
这里38 uchar i;
这里39 while(x--) for(i = 0;i < 200; i++);
}
unsigned char KeyScan(void)
{
P1|=0x1f;
if((P1&0x1f)!=0x1f)
{
Delay(10); //延时去抖
if((P1&0x1f)!=0x1f)
{
return P1&0x1f;
}
}
return P1&0x1f;
}
这里59 void keyProcess(uint key)
{
if(key==0x1f) /*******************/
{ /* */
KeyFree=1; /* 软件松手检测 */
} /* */
else /* */
{ /* */
if(KeyFree==1) /* */
{ /*******************/
KeyFree=0;
/*******************************************/
switch (key)
{
case 0x1e : {
MA=1;
MB=0;
break;}
case 0x1d : {
MA=0;
MB=1;
break;}
case 0x1b : {
PWM_OUT =0;
break;}
case 0x17 : {
if(PWM_OUT!=90){
PWM_OUT+=30;}
break;}
case 0x0f : {
if(PWM_OUT!=30&&PWM_OUT!=0){
PWM_OUT-=30;}
break;}
}
/*******************************************/
}
}
}
出错:
compiling pwm.c...
PWM.C(38): error C202: 'uchar': undefined identifier
PWM.C(38): error C141: syntax error near 'i'
PWM.C(39): error C202: 'i': undefined identifier
PWM.C(56): error C141: syntax error near 'key', expected ')'
pwm.c - 4 Error(s), 0 Warning(s).
截图 展开
#include<reg51.h>
sbit MA = P3^0;
sbit MB = P3^1;
sbit PWM = P3^7;
bit KeyFree;
unsigned char PWM_OUT;
void Delay(unsigned char); //声明延时函数
unsigned char KeyScan(void);
void keyProcess(unsigned char);
main()
{
TMOD = 0x01;
TH0 = - 50000 /256;
TL0 = - 50000 % 256;
IE = 0x82;
TR0 = 1;
while (1)
{
keyProcess(KeyScan());
}
}
void T0_INT () interrupt 1 //定时器函数控制PWM输出
{
TH0 = -5000 / 256;
TL0 = -5000 % 256;
PWM=1; //设置PWM输出
Delay(PWM_OUT);
PWM=0;
Delay(100-PWM_OUT);
}
void Delay(unsigned char x)
{
这里38 uchar i;
这里39 while(x--) for(i = 0;i < 200; i++);
}
unsigned char KeyScan(void)
{
P1|=0x1f;
if((P1&0x1f)!=0x1f)
{
Delay(10); //延时去抖
if((P1&0x1f)!=0x1f)
{
return P1&0x1f;
}
}
return P1&0x1f;
}
这里59 void keyProcess(uint key)
{
if(key==0x1f) /*******************/
{ /* */
KeyFree=1; /* 软件松手检测 */
} /* */
else /* */
{ /* */
if(KeyFree==1) /* */
{ /*******************/
KeyFree=0;
/*******************************************/
switch (key)
{
case 0x1e : {
MA=1;
MB=0;
break;}
case 0x1d : {
MA=0;
MB=1;
break;}
case 0x1b : {
PWM_OUT =0;
break;}
case 0x17 : {
if(PWM_OUT!=90){
PWM_OUT+=30;}
break;}
case 0x0f : {
if(PWM_OUT!=30&&PWM_OUT!=0){
PWM_OUT-=30;}
break;}
}
/*******************************************/
}
}
}
出错:
compiling pwm.c...
PWM.C(38): error C202: 'uchar': undefined identifier
PWM.C(38): error C141: syntax error near 'i'
PWM.C(39): error C202: 'i': undefined identifier
PWM.C(56): error C141: syntax error near 'key', expected ')'
pwm.c - 4 Error(s), 0 Warning(s).
截图 展开
展开全部
keil c51常见错误的解决办法:
消除函数中i 变量的宣告。
去掉DelayX1ms函数或利用条件编译if …..endif,可保留该函数并不编译。
将叙述void Music3写在程序的最前端作宣告如果是其他文件的函数则要写成extern void Music3,即作外部宣告。
编写一个beep.h 的包含档并存入到c:\8051 的工作目录中。
检查是否有其它的变量名称也是定义在0x25 处并修正它。
修正其中的一个函数名称使得函数名称独立。
编写DelayX1ms 的内容完成后,要作宣告或作外部宣告可在delay.h的包含档宣告成外部以便其它函数调用。
设MUSIC3 函数在MUSIC C 里将MUSIC C 添加到工程文件中去。
以data 型别定义的公共变量修改为idata 型别的定义。
展开全部
uchar 没有宏定义。。。
#define unsigned char uchar
加上就行了
我看你uint也没加宏哦
#define unsigned int uint
#define unsigned char uchar
加上就行了
我看你uint也没加宏哦
#define unsigned int uint
追问
现在又有一个新错误
pwm.c(3): warning C317: attempt to redefine macro 'unsigned'
PWM.C(9): error C129: missing ';' before 'char'
pwm.c - 1 Error(s), 1 Warning(s).
我刚刚看了几个例子,发现加的宏定义写反了,应该是
#define uchar unsigned char
#define uint unsigned int
现在没错误了,只有个警
PWM.C(58): warning C235: parameter 1: different types
pwm.c - 0 Error(s), 1 Warning(s).
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询