很急很急的程序错误了,求各位大神帮忙啊!循迹小车的

[复制链接]
1586|10
手机看帖
扫描二维码
随时随地手机跟帖
五月风里人|  楼主 | 2011-4-14 16:38 | 显示全部楼层 |阅读模式
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit Z0 = P3^0;                                                      
sbit Z1 = P3^1;                                                         
sbit Y0 = P3^2;                                                        
sbit Y1 = P3^3;
sbit r2=P1^0;
sbit r1=P1^1;
sbit m=P1^2;
sbit l1=P1^3;
sbit l2=P1^4;
int a;
int b;
void delay10ms (uchar time)      //10msÑÓʱ
{ int i;
     int j;
  for(i=0;i<time;i++)
   for(j=0;j<0x390;j++);
}
unsigned char  PWM(int x)
{
if(++a == 100)
{ a = 0;}
      if(a<x)
  {return 1;}
else  
  {return 0;}
}
void right()
{
    Z0=0;
    Z1=1;
    Y0=0;
    Y1=0;
}
void bigright()
{
    Z0=0;
    Z1=1;
    Y0=1;
    Y1=0;
}
void left()
{
    Z0=0;
    Z1=0;
    Y0=0;
    Y1=PWM(98);
}
void bigleft()
{
    Z0=1;
    Z1=0;
    Y0=0;
    Y1=PWM(98);
}
void ahead()
{
    Z0=0;
    Z1=1;
    Y0=0;
    Y1=PWM(98);
}
void back()
{
    Z0=1;
    Z1=0;
    Y0=PWM(98);
    Y1=0;
}
void stop()
{
    Y0=0;
    Y1=0;
    Z0=0;
Z1=0;
}     
void xunji()
{   
   if(l2==0&&l1==0&&m==1&&r2==0&&r1==0)                                                               //Ç°½ø
                   { ahead(); }
   else if((l2==0&&l1==0&&r2==1&&m==1)||(l2==0&&l1==0&&r2==1&&m==0)||(r1==1&&l2==0&&l1==0)||(r1==1&&r2==1&&l2==0&&l1==0))            //ÓÒת
                   { right(); }
   else if((r2==0&&r1==0&&l2==1&&m==1)||(r2==0&&r1==0&&l2==1&&m==0)||(l1==1&&r2==0&&r1==0)||(l1==1&&l2==1&&r2==0&&r1==0))            //×óת
                   { left(); }
   else if ((l1==0&&l2==1&&m==0&&r2==0&&r1==0)||(l1==1&&l2==0&&m==0&&r2==0&&r1==0))
                     { left(); }
      // else if((l1==0&&l2==0&&m==0&&r2==1&&r1==0)||(l1==0&&l2==0&&m==0&&r2==0&&r1==1))
                     // {right(); }
   
   else if((m==1&&r1==1&&r2==1&&l1==0&&l2==0)||(m==1&&r1==1&&r2==1&&l1==1&&l2==0))
     {  
       bigright();     }
   else if((m==1&&l1==1&&l2==1&&r1==0&&r2==0)||(m==1&&r1==1&&r2==0&&l1==1&&l2==1))
      {
     bigleft();}
// else if(m==0&&r1==0&&r2==0&&l1==0&&l2==0)
    // { stop();}
  }
void main()
{ EA = 1;
  TMOD = 0X01;
  TH0 =( 65535 - 1000)/256;
  TL0 =( 65535 - 1000)%256;
  ET0 = 1;
  TR0 = 1;
  
  while (1)
    {  
   xunji();
}
}
void t_40ms() interrupt 1
{
TH0 =( 65535 - 1000)/256;
TL0 =( 65535 - 1000)%256;
a++;
}

相关帖子

yuyi21ic| | 2011-4-14 16:45 | 显示全部楼层
LZ不说哪出问题,没人愿意一句一句读你的代码的。

使用特权

评论回复
五月风里人|  楼主 | 2011-4-14 16:47 | 显示全部楼层
哦,忘了说了,小车走的时候前进貌似不事敏感,总是会停下来;硬件没有问题,而且转弯的时候也不是很灵敏!

使用特权

评论回复
五月风里人|  楼主 | 2011-4-14 16:48 | 显示全部楼层
哦,忘了说了,小车走的时候前进貌似不事敏感,总是会停下来;硬件没有问题,而且转弯的时候也不是很灵敏!
哦,忘了说了,小车走的时候前进貌似不事敏感,总是会停下来;硬件没有问题,而且转弯的时候也不是很灵敏!
哦,忘了说了,小车走的时候前进貌似不事敏感,总是会停下来;硬件没有问题,而且转弯的时候也不是很灵敏!
哦,忘了说了,小车走的时候前进貌似不事敏感,总是会停下来;硬件没有问题,而且转弯的时候也不是很灵敏!
哦,忘了说了,小车走的时候前进貌似不事敏感,总是会停下来;硬件没有问题,而且转弯的时候也不是很灵敏!
哦,忘了说了,小车走的时候前进貌似不事敏感,总是会停下来;硬件没有问题,而且转弯的时候也不是很灵敏!

使用特权

评论回复
sdpz| | 2011-4-14 16:52 | 显示全部楼层
吐血ing

使用特权

评论回复
五月风里人|  楼主 | 2011-4-14 16:57 | 显示全部楼层
为什么啊,大神们!!

使用特权

评论回复
aihe| | 2011-4-14 19:13 | 显示全部楼层
没注释,不知道你的程序是干啥的

使用特权

评论回复
xiongyaoqi| | 2011-4-14 22:43 | 显示全部楼层
加油

使用特权

评论回复
mcu5i51| | 2011-4-15 09:32 | 显示全部楼层
看不懂,建议在if(...&&...)加括号,有时优先级和你想的不同

使用特权

评论回复
mmax| | 2011-4-15 11:49 | 显示全部楼层
unsigned char  PWM(int x)
{
if(++a == 100)
a = 0;


void t_40ms() interrupt 1
{
TH0 =( 65535 - 1000)/256;
TL0 =( 65535 - 1000)%256;
a++;
//在这应该加一个if(a>100) a = 0;
//要不然和上面那个函数会冲突,会导致a=101之类的。
}

使用特权

评论回复
老鱼探戈| | 2011-4-15 12:49 | 显示全部楼层
LS说得对,把if(++a == 100)改成if(++a >= 100)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

17

帖子

1

粉丝