xc2.c(95): error C141: syntax error near 'flag'
这是程序,小白一枚求指点
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
typedef unsigned int u8;
sbit ENA = P2^0; //右点机使能
sbit IN1 = P2^1; //为0右轮正转
sbit IN2 = P2^2; //为0右轮反转
sbit IN3 = P2^3; //为0左轮正转
sbit IN4 = P2^4; //为0左轮反转
sbit ENB = P2^5; //左电机使能
sbit left1= P1^0;
sbit left2=P1^1;
sbit right1=P1^2;
sbit right2 = P1^3;
u8 i=1;
uchar m=0;
uchar n=0;
uchar cnt1=0;
void Timer0Init();
void XunJi();
void Delay(uint z);
void Timer0Init()
{
TH0 = 0xFF;
TL0 = 0xA3;
TMOD &= 0xF0;
TMOD |= 0x01;
EA = 1;//总中断
ET0 = 1;//打开定时器0使能
TR0 = 1;//定时器0启动器
}
void TurnRight1() //右转
{
IN1 = 0; //右轮反转
IN2 = 1;
IN3 = 1; //左轮正转
IN4 = 0;
m = 70;
n = 60;
}
void TurnLeft1() //左转
{
IN1 = 1;
IN2 = 0; //右轮正转
IN3 = 0;
IN4 = 1; //左轮反转
m = 60;
n = 70;
}
void Forward() //直走
{
IN1 = 1;
IN2 = 0; //右轮正转
IN3 = 1; //左轮正转
IN4 = 0;
m= 40;
n = 40;
}
void Stop() //停止
{
IN1 = 1;
IN2 = 1;
IN3 = 1;
IN4 = 1;
}
void Delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=114;y>0;y--);
}
void XunJi()
{
unsigned char flag = 0;
if((left1 == 0)&&(left2 == 0&&(right1 == 0)&&(right2 == 0)) //0 0 1 0 0 直走
flag = 0;
if((left1 == 0)&&(left2 == 0)&&(right1 == 1)||(right2 == 1)) //0 0 1 1 1 右转
flag = 1;
if((left1 == 1)||(left2 == 1)&&(right1 == 0)&&(right2 == 0)) //1 1 1 0 0 左转
flag = 2;
if((left1 == 1)&&(left2 == 1)&&(right1 == 1)&&(right2 == 1)&&(i==1)) //1 1 1 1 黑线1
flag = 3;
if((left1 == 1)&&(left2 == 1)&&(right1 == 1)&&(right2 == 1)&&(i==2)) //1 1 1 1 1 黑线2
flag = 4;
if((left1 == 1)&&(left2 == 1)&&(right1 == 1)&&(right2 == 1)&&(i==3)) //1 1 1 1 1 黑线3
flag = 5;
switch(flag)
{
case 0:Forward();break;
case 1:TurnRight1();break;
case 2:TurnLeft1();break;
case 3:i++;Forward();break;
case 4:i++;Forward();break;
case 5:Stop();break;
}
}
void InterruptTime0() interrupt 1
{
TH0=(65536-800)/256;
TL0=(65536-800)%256;
cnt1++;
while(cnt1>100)//周期为80ms
{
cnt1=0;
}
if(cnt1<m)
{
ENA=1;
}
else
{
ENA=0;
}
if(cnt1<n)
{
ENB=1;
}
else
{
ENB=0;
}
}
void main()
{
Timer0Init();
while(1)
{
XunJi();
}
}