智能循迹小车,求大神帮助

2019-03-24 18:21发布

我的车子单片机上电压高低电平输出都没问题,就是直接给驱动没问题可以跑,然而加上红外就不能跑了。不知道那儿出错。求大神帮忙呀!!!!!!
程序如下:   黑线输出高电平。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit chuan1=P2^0;
sbit chuan2=P2^1;
sbit chuan3=P2^2;//定义红外传感器

sbit LN1=P1^0;
sbit LN2=P1^1;
sbit LN3=P1^2;
sbit LN4=P1^3;                          //定义驱动

sbit ENA=P3^2;
sbit ENB=P3^3;

uchar Duty_left,Duty_right,m=0,n=0; //左右占空比标志,取1--100

void qianjing()
{
        LN1=1;
        LN2=0;
        LN3=0;
        LN4=1;

}
void youpian()
{
        LN1=1;
        LN2=0;
        LN3=1;
        LN4=0;
       
}
void zuopian()
{
        LN1=1;
        LN2=0;
        LN3=1;
        LN4=0;

}

void init()         //定时器初始化
{
   TMOD=0x01;
   TH0=(65536-66)/256;
   TL0=(65536-66)%256;
   EA=1;
   ET0=1;
   TR0=1;

   ENA=1; //使能端口,初始化
   ENB=1;
  }
void main()
{
init();
        LN1=1;
        LN2=0;
        LN3=0;
        LN4=1;
while(1)
  {
   if(chuan1==0 && chuan2==1 && chuan3==0)
    {
     qianjing();
     Duty_left=12;
     Duty_right=        11;
   }
   if(chuan1==1 && chuan2==0 && chuan3==0)
    {
         zuopian();
     Duty_left=40;
     Duty_right=80;
        }
      if(chuan1==0 && chuan2==0 && chuan3==1)
         {
                  youpian();
                  Duty_left=80;
              Duty_right=40;
                 }
                 if(chuan1==0 && chuan2==0 && chuan3==0)
                 {
                 qianjing();
                 }
   }
}
void time0(void)interrupt 1         //中断程序
{                       
  m++;                                                //调速在中断中执行
  n++;
  if(m<=Duty_left)
     ENA=1;
  else ENA=0;  
  if(m>100)
     {ENA=1;m=0;}
  if(n<=Duty_right)
     ENB=1;
  else ENB=0;
  if(n>100)
     {ENB=1;n=0;}
TH0=(65536-66)/256;           //取约150HZ,12M晶振,每次定时66us,分100次,这样开头定义的变量正好直接表示占空比的数值
TL0=(65536-66)%256;
}

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。