標題: 藍牙+避障+轉(zhuǎn)速的小車程序 [打印本頁]

作者: 一龍大師    時間: 2017-11-24 21:23
標題: 藍牙+避障+轉(zhuǎn)速的小車程序
沒有下載到實際小車中,不知道哪兒有錯誤,請幫我指出一下謝謝#include<reg51.h>
#define  uint  unsigned int
#define  uchar unsigned char

unsigned char dj1=0;
unsigned char dj2=0;

sbit IN3=P0^1;                //右輪
sbit IN4=P0^2;  
sbit ENB=P0^0;                //使能端A

sbit IN1=P1^1;                //左輪
sbit IN2=P1^2;  
sbit ENA=P1^0;                 //使能端B

sbit left_ir=P3^2;//避障
sbit right_ir=P3^3;
int a,i,t;
//正轉(zhuǎn)
void zhengzhuan()
{

        IN1=0;
        IN2=1;
        IN4=0;
        IN3=1;
        dj1=10;
    dj2=10;
}
void  houtui()//后退
{
    IN1=1;
        IN2=0;
        IN4=1;
        IN3=0;
    dj1=9;
    dj2=9;
}
void  stop()//停止
{
   IN1=0;
   IN2=0;
   IN4=0;
   IN3=0;
   dj1=0;
   dj2=0;
}
void left()//左轉(zhuǎn)
{
   IN1=0;
   IN2=0;
   IN4=0;
   IN3=1;
   dj1=9;
   dj2=26;
}
void right()//右轉(zhuǎn)
{
   IN1=0;
   IN2=1;
   IN4=0;
   IN3=0;
   dj1=28;
   dj2=9;
}
void  bizhang()//避障
{
     if(left_ir==0&&right_ir==0)
         {
                   houtui();
         }
         else if(left_ir==0&&right_ir==1)
         {
             right();
        }
        else if(left_ir==1&&right_ir==0)
        {
            
             left();
        }
        else
        {
            zhengzhuan();
        }
}
void init()//初始化
{
        IP=0x20;
        TMOD=0x20;//設(shè)置定時器T1為工作方式2
        TH1=0xfd;
        TL1=0xfd;//T1定時器裝初值
        TR1=1;//啟動定時器T1
        REN=1;//允許串口接收
        SM0=0;
        SM1=1;//設(shè)置串口工作方式1
        EA=1;//開總中斷
        ES=1;//開串口中斷
}
void init_T0()
{
         IP=0x10;
     TMOD=0x22;
     TH0=(65536-250)/256;
     TL0=(65536-250)%256;
     TR0=1;
     ET0=1;
}

void main()
{
   init_T0();
    init();
        while(1)
        {
                    bizhang();
                        if(a==0x14||a==0x15||a==0x54||a==0x55||a==0x64||a==0x65)//如果是就前進
                   zhengzhuan();
                            if(a==0x16||a==0x17||a==0x56||a==0x57||a==0x66||a==0x67)//如果是就后退
                   houtui();
                            if(a==0x18||a==0x19||a==0x58||a==0x59||a==0x68||a==0x69)//如果是就停止
                   stop();
                if(a==0x1a||a==0x1b||a==0x5a||a==0x5b||a==0x6a||a==0x6b)//如果是就左轉(zhuǎn)
                    left();
                 if(a==0x1c||a==0x1d||a==0x5c||a==0x5d||a==0x6c||a==0x6d)//如果是就右轉(zhuǎn)
                    right();
        }
}
void T1_time() interrupt 4
{
       RI=0;
           a=SBUF;
}
void timer0() interrupt 1                //定時器0中斷
{
        TH0=(65536-250)/256;
        TL0=(65536-250)%256;
        t++;
        if(t<dj1)        
        ENA=1;
        else        
        ENA=0;
        if(t<dj2)
        ENB=1;
        else        
        ENB=0;
        if(t>=50)
        {
           t=0;
        }
}
          






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1