|
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit IN1=P0^1;
sbit IN2=P0^2;
sbit IN3=P0^3;
sbit IN4=P0^4;
sbit ENB=P0^0;
sbit ENA=P0^5;
sbit hw1=P1^0;
sbit hw2=P1^1;
sbit hw3=P1^2;
//sbit hw4=P1^3;
uchar PWM1=0 ; //**右邊電機(jī)的占空比**//
uchar PWM2=0 ; //**左邊電機(jī)的占空比**//
//uchar num=0; //**定時(shí)器中斷計(jì)數(shù)器**//
uchar flag;
void init()
{
TMOD=0x01;
TH0=(65536-50)/256;
TL0=(65536-50)%256;
EA=1;
ET0=1;
TR0=1;
IN1=0;
IN2=0;
IN3=0;
IN4=0;
}
void main()
{
init();
while(1)
{
if(hw1||hw2||hw3)//如果檢測到信號(hào)
{
ENA=1; // 黃1223
ENB=1; // 黃1223
/* if(hw1&&hw2&&hw3/*&&hw4*///) */
/* {
ENA=1;
ENB=1;
}*/
if(hw1&&hw2&&!hw3) //
{
IN1=1;
IN2=1;
IN3=1;
IN4=0;
PWM1=0;
PWM2=10;
flag=1;
}
if(hw1&&!hw2&&hw3/*&&!hw4*/)
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
PWM1=10;
PWM2=5;
flag=2;
}
if(!hw1&&hw2&&hw3/*&&!hw4*/)
{
IN1=1;
IN2=0;
IN3=1;
IN4=1;
PWM1=5;
PWM2=0;
flag=3;
}
if(!hw1&&!hw2&&!hw3/*&&hw4*/)
{
IN1=1;
IN2=1;
IN3=1;
IN4=1;
PWM1=10;
PWM2=0;
flag=4;
}
}
else //如果檢測不到信號(hào)
{
IN1=1;
IN2=1;
IN3=1;
IN4=1; //黃1221加
} break;
/*switch(flag)
{
case 1:
{
// IN1=1;
// IN2=0;
// IN3=1;
// IN4=0;
// PWM1=10;
// PWM2=5;
IN1=0;
IN2=1;
IN3=1;
IN4=0;
PWM1=12;
PWM2=12;
//flag=0;
} break;
case 2:
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
PWM1=8;
PWM2=8;
flag=0;
} break;
case 3:
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
PWM1=8;
PWM2=8;
flag=0;
} break;
case 4:
{
IN1=1;
IN2=0;
IN3=0;
IN4=1;
PWM1=12;
PWM2=12;
// flag=0;
} break;
default:
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
PWM1=12;
PWM2=12;
}
}
} */
}
}
/*void timer0() interrupt 1
{
TH0=(65536-50)/256;
TL0=(65536-50)%256;
num++;
if(num>=40)num=0;
if(num<PWM1)ENA=1;
else ENA=0;
if(num<PWM2)ENB=1;
else ENB=0;
} */ |
|