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).
截图
展开
 我来答
勤奋的瑶666
2018-04-10 · TA获得超过4874个赞
知道小有建树答主
回答量:33
采纳率:0%
帮助的人:5017
展开全部

keil c51常见错误的解决办法:

  1. 消除函数中i 变量的宣告。

  2. 去掉DelayX1ms函数或利用条件编译if …..endif,可保留该函数并不编译。

  3. 将叙述void Music3写在程序的最前端作宣告如果是其他文件的函数则要写成extern void Music3,即作外部宣告。

  4. 编写一个beep.h 的包含档并存入到c:\8051 的工作目录中。

  5. 检查是否有其它的变量名称也是定义在0x25 处并修正它。

  6. 修正其中的一个函数名称使得函数名称独立。

  7. 编写DelayX1ms 的内容完成后,要作宣告或作外部宣告可在delay.h的包含档宣告成外部以便其它函数调用。

  8. 设MUSIC3 函数在MUSIC C 里将MUSIC C 添加到工程文件中去。

  9. 以data 型别定义的公共变量修改为idata 型别的定义。

qiu1123
2011-04-21 · 超过16用户采纳过TA的回答
知道答主
回答量:108
采纳率:0%
帮助的人:44.3万
展开全部
uchar 没有宏定义。。。

#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).
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式