|
#include <reg52.h>
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit IN1=P0^0;
sbit IN2=P0^1;
sbit IN3=P0^2;
sbit IN4=P0^3;
sbit L_PWM=P0^4;
sbit R_PWM=P0^5;
sbit hongwai_l1=P2^2;
sbit hongwai_r1=P2^3;
sbit hongwai_l2=P2^4;
sbit hongwai_r2=P2^5;
unsigned char l_tt=0;
unsigned char l_Lpwm=2;
unsigned char l_Rpwm=2;
void delay(int i)
{
uchar t;
for(;i>0;i--)
{
for(t=110;t>0;t--);
}
}
void time0init()
{
TMOD|=0x01;
TH0=0xFF; //定時(shí)10us,使通過(guò)電機(jī)的PWM波的頻率為10khz
TL0=0xF6;
ET0=1;
EA=1;
TR0=1;
}
void time()interrupt 1
{
TH0=0xFF;
TL0=0xF6;
l_tt++;
if(l_tt==9)
{
l_tt=0;
}
if(l_tt<l_Lpwm)
{
L_PWM=1;
}
else
{
L_PWM=0;
}
if(l_tt<l_Rpwm)
{
R_PWM=1;
}
else
{
R_PWM=0;
}
}
void main()
{
time0init();
while(1)
{
if(hongwai_l1==0&&hongwai_r1==0)
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
}
if(hongwai_l1==1&&hongwai_r1==1)
{
IN1=1;
IN2=1;
IN3=1;
IN4=1;
delay(200);
}
if(hongwai_l1==0&&hongwai_r1==1)
{
IN1=1;
IN2=0;
IN3=1;
IN4=1;
}
if(hongwai_l1==1&&hongwai_r1==0)
{
IN1=1;
IN2=1;
IN3=1;
IN4=0;
}
if(hongwai_l1==0&&hongwai_r1==0&&hongwai_l2==1&&hongwai_r2==0)
{
IN1=1;
IN2=0;
IN3=0;
IN4=1;
if(hongwai_l1==1)
break;
}
if(hongwai_l1==0&&hongwai_r1==0&&hongwai_l2==1&&hongwai_r2==0)
{
IN1=0;
IN2=1;
IN3=1;
IN4=0;
if(hongwai_r1==1)
break;
}
}
}
我用電壓表測(cè)了一下使能端的電壓差,只有1.34V,求解
|
|