#include<reg52.h>
#include<math.h>
#define uchar unsigned char
#define uint  unsigned int
#define TIME 5500
sbit en1=P1^4;
sbit en2=P1^5;
sbit in11=P1^1;
sbit in12=P1^0;
sbit in21=P1^3;
sbit in22=P1^2;
sbit s1=P0^1;
int c1=1000,t1,t2,f1,f2,flag1,flag2;
void delay(uchar t)      //ms延时
{
    uchar a,b;
    for(a=t;a>0;a--)
        for(b=110;b>0;b--);
}       
void init()  //初始化函数
{
  TH0=(65536-c1)/256;
  TL0=(65536-c1)%256;
    in11=0;
    in12=0;
    in21=0;
    in22=0;
    en1=0;
    en2=0;
}
void DJ(char num,char speed)//电机控制函数绝世小受
{
    if(speed>=-100&&speed<=100)
    {
        switch(num)
        {
            case 1:    f1=abs(speed);
                    if(speed>0)
                    {
                        in11=1;
                        in12=0;
                    }
                    else
                    {
                        in11=0;
                        in12=1;
                    }
                    break;
            case 2: f2=abs(speed);
                    if(speed>0)
                    {
                        in21=1;
                        in22=0;
                    }
                    else
                    {
稼农枫                        in21=0;
                        in22=1;
                    }
                    break;
            default: break;
        }
    }
}
void main()
{
    TMOD=0x02;
    EA=1;
    init();
    ET0=1;
    TR0=1;
    DJ(1,100);
    DJ(2,100);
    delay(5000);
    while(1)
    {
        uint m,n;
/*        P3=0;
        delay(1);
        m=P3;
        m&=0x0f;
        switch(m)    //底部红外防跌落检测
        {
            case 0x01:  DJ(1,-100);      // 1:右转+后退
                        DJ(2,-100);
                        delay(TIME);
                        DJ(1,100);     
                        DJ(2,-100);
                        delay(TIME);
                        DJ(1,100);
                        DJ(2,100);
                        break;
            case 0x08:    DJ(1,-100);      // 4:左转+后退
                        DJ(2,-100);
                        delay(TIME);
                        DJ(1,100) ;
                        DJ(2,-100);
                        delay(TIME);
                        DJ(1,100);
                        DJ(2,100);
                        break;
            case 0x02:  DJ(1,100);      // 2:左转+前进
                        DJ(2,100);
                        delay(3000);
                        DJ(1,100);
                        DJ(2,20);
                        delay(TIME);
                        DJ(1,100);     
                        DJ(2,100);
                        break;
            case 0x04:  DJ(1,100);      // 3:右转+前进
                        DJ(2,100);
                        delay(3000);
                        DJ(1,20);
                        DJ(2,100);
                        delay(TIME);
                        DJ(1,100);     
                        DJ(2,100);
                        break;     
            case 0x09:  DJ(1,-100);      // 1、4:后退
                        DJ(2,-100);
初音ミクの激唱                        delay(TIME);
                        DJ(1,-100);     
                        DJ(2,100);
                        delay(TIME);
                        DJ(1,100);     
                        DJ(2,100);
                        break;浮云散明月照人来
            case 0x06:  DJ(1,100);      // 2、3:前进
                        DJ(2,100);
                        delay(TIME);
                        DJ(1,-100);     
                        DJ(2,100);
                        delay(TIME);
                        DJ(1,100);     
                        DJ(2,100);
                        break;
            case 0x05:  DJ(1,100);      // 1、3:右转
                        DJ(2,50);
                        delay(TIME);
                        DJ(1,100);     
                        DJ(2,100);
                        break;
            case 0x0a:  DJ(1,50);      // 2、4:左转
                        DJ(2,100);
                        delay(TIME);
                        DJ(1,100);     
                        DJ(2,100);
                        break;
            case 0x03:  DJ(1,100);      // 1、2:右转
                        DJ(2,70);
                        delay(TIME);
                        DJ(1,100);     
                        DJ(2,100);
                        break;
            case 0x0c:  DJ(1,70);      // 3、4:左转
                        DJ(2,100);
                        delay(TIME);
                        DJ(1,100);     
                        DJ(2,100);
                        break;
            case 0x0f:  DJ(1,100);      // 1、2、3、4:前进
                        DJ(2,100);
                        break;
            default:    DJ(1,100);
伊东伶                        DJ(2,100);
                        break;
        }*/   
儿歌叮叮当        P0=0xff;
        delay(1);
        n=P0;
        n|=0xc0;           
        switch(n)    //红外避障检测
        {
            case 0xfe:  DJ(1,100);    //    红外1:左转
                        DJ(2,-100);                     
                        delay(5000);
                        DJ(1,-100);
                        DJ (2,-100);
                        break;
            case 0xfd:    DJ(1,100);    //    红外2:右转
                        DJ(2,-100);
                        delay(5000);
                        DJ(1,100);
                        DJ (2,100);
                        break;     
            case 0xfb:  DJ(1,-70);    //    红外3:右后
                        DJ(2,-100);
                        delay(500);
                        DJ(1,100);     
                        DJ(2,100);
                        break;
            case 0xf7:  DJ(1,-70);    //    红外4:左后
                        DJ(2,-100);
                        delay(500);
                        DJ(1,100);     
                        DJ(2,100);
                        break;   
            case 0xef:  DJ(1,100);    //    红外5:原地右转
                        DJ(2,-100);
                        delay(5500);
                        DJ(1,100);