密室夺宝 小偷程序1

发布于:2022-12-18 ⋅ 阅读:(183) ⋅ 点赞:(0)

#include <reg52.h>

typedef unsigned char uint8;
typedef unsigned int uint16;

sbit LED1 = P2^2;
sbit LED2 = P2^3;
sbit LED3 = P2^4;
sbit LED4 = P2^5;
sbit LED5 = P2^6;
sbit LED6 = P2^7;

sbit ENA=P1^0;
sbit ENB=P1^1;
sbit IN1=P1^2;
sbit IN2=P1^3;
sbit IN3=P1^5;
sbit IN4=P1^4;

uint8 t = 0;
uint8 PWM_T1 = 0;
uint8 PWM_T2 = 0;

uint16 a=0; b=0; c=0;

void delay_1ms(uint16 l)
{
    uint16 x,y;
    for(x=l;x>0;x--)
      for(y=120;y>0;y--);
}

void forward()

    TR0=1;
    IN1=1;
    IN2=0;
    IN3=1;
    IN4=0;
    PWM_T1=100;
    PWM_T2=100;
}
    

void left()
{
    TR0=1;
    IN1=0;
    IN2=1;
    IN3=1;
    IN4=0;
    PWM_T1=250;
    PWM_T2=250;
}
    
void right()
{
    TR0=1;
    IN1=1;
    IN2=0;
    IN3=0;
    IN4=1;
    PWM_T1=250;
    PWM_T2=250;
}

void stop()
{
    TR0=1;

    ENA=0;
    ENB=0;
    IN1=0;
    IN2=0;
    IN3=0;
    IN4=0;
    
}

void main(void)
{
  stop();
    TMOD = 0x02;
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    TR0=1;
    ET0=1;
    EA=1;
    PWM_T1=100;
    PWM_T2=100;
    delay_1ms(1000);
    
    while(1)
  {

        if(LED1==1&&LED6==0&&LED2==1&&LED5==0&&LED3==1&&LED4==0)  //左转
        {
            a++;
            if(a==2||a==4)
            {
              forward();
                delay_1ms(100);                    
            }

      else if(a==5)
            {
                left();
                delay_1ms(490);
            }
       
                
                    
            else
            {
                left();
                delay_1ms(210);
            }
        }
      
        if(LED1==0&&LED6==1&&LED2==0&&LED5==1&&LED3==0&&LED4==1)  //右转
        {
             
            b++;
            if(b==2||b==4||b==6)
            {
                forward();
                delay_1ms(100);
            }
            
            else if(b==7)
            {
                stop();
                delay_1ms(20000000);
            }
            
            else
            {
                right();
                delay_1ms(210);
            }
        }
        
        if(LED1==1&&LED6==1&&LED2==1&&LED5==1&&LED3==1&&LED4==1)  //后转
    {
            c++;
            if(c==1)
            {
                forward();
                delay_1ms(100);
            }
            
             else if(c==2)
            {
                left();
                delay_1ms(210);
            }
            

            else
            {
                left();
              delay_1ms(450);
            }
        }
        if(LED1==0&&LED6==0)  //Ö±ÐÐ
        {
            if(LED3==1&&LED4==0&&LED2==0&&LED5==0&&LED1==0&&LED6==0)
            {
                IN1=0;
                IN2=1;
                IN3=1;
                IN4=0;
                PWM_T1=100;
                PWM_T2=100;
                delay_1ms(10);
            }
            if(LED3==0&&LED4==1&&LED2==0&&LED5==0&&LED1==0&&LED6==0)
            {
                IN1=1;
                IN2=0;
                IN3=0;
                IN4=1;
                PWM_T1=100;
                PWM_T2=100;
                delay_1ms(10);
            }
            if(LED2==1&&LED5==0&&LED3==0&&LED4==0&&LED1==0&&LED6==0)
            {
                IN1=0;
                IN2=1;
                IN3=1;
                IN4=0;
                PWM_T1=100;
                PWM_T2=100;
                delay_1ms(10);
            }
            if(LED2==0&&LED5==1&&LED3==0&&LED4==0&&LED1==0&&LED6==0)
            {
                IN1=1;
                IN2=0;
                IN3=0;
                IN4=1;
                PWM_T1=100;
                PWM_T2=100;
                delay_1ms(10);
            }
            if(LED3==0&&LED4==0&&LED2==0&&LED5==0&&LED1==0&&LED6==0)
            {
                IN1=1;
                IN2=0;
                IN3=1;
                IN4=0;
                PWM_T1=110;
                PWM_T2=110;
            }
        }
    }
}

timer0() interrupt 1
{
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    t++;
    if(t==250)
    {
        t=0;
    }
    if(PWM_T1<=t)
    {
        ENA=0;
    }
    else
    {
        ENA=1;
    }
    if(PWM_T2<=t)
    {
        ENB=0;
    }
    else
    {
        ENB=1;
    }
}
````


网站公告

今日签到

点亮在社区的每一天
去签到