|
#include <reg52.h>
#include "car.h" //自己編寫的頭文件,里面有函數(shù)聲明
/********************************/
/* 清空電機(jī)控制IO位 */
/********************************/
void CleanRun()
{
left_a = 0;
left_b = 0;
right_a = 0;
right_b = 0;
}
/********************************/
/* 根據(jù)接收到的數(shù)據(jù),控制小車 */
/********************************/
void Run()
{
uchar delaytime = 50; //前進(jìn)、后退、側(cè)向前進(jìn)的延時(shí)時(shí)間
uchar little_delaytime = 22; //轉(zhuǎn)彎的延時(shí)時(shí)間
switch(recvbuf)
{
case 0x01: //前進(jìn)
{
left_a = 1; //正轉(zhuǎn)
left_b = 0;
right_a = 1; //正轉(zhuǎn)
right_b = 0;
delayms(delaytime);
break;
}
case 0x02: //后退
{
left_a = 0; //反轉(zhuǎn)
left_b = 1;
right_a = 0; //反轉(zhuǎn)
right_b = 1;
delayms(delaytime);
break;
}
case 0x03: //左轉(zhuǎn)
{
left_a = 0; //不轉(zhuǎn)
left_b = 0;
right_a = 1; //正轉(zhuǎn)
right_b = 0;
delayms(little_delaytime);
break;
}
case 0x04: //右轉(zhuǎn)
{
left_a = 1; //正轉(zhuǎn)
left_b = 0;
right_a = 0; //不轉(zhuǎn)
right_b = 0;
delayms(little_delaytime);
break;
}
case 0x05: //前左方向運(yùn)行
{
right_a = 1; //正轉(zhuǎn)
right_b = 0;
left_b = 0; //半速正轉(zhuǎn)
StartPwm(lefta); //開啟定時(shí)器,設(shè)定產(chǎn)生PWM的引腳
delayms(delaytime); //延時(shí)一段時(shí)間
StopPwm(); //關(guān)閉定時(shí)器
break;
}
case 0x06: //前右方向運(yùn)行
{
left_a = 1; //正轉(zhuǎn)
left_b = 0;
right_b = 0; //半速正轉(zhuǎn)
StartPwm(righta);
delayms(delaytime);
StopPwm();
break;
}
case 0x07: //后左方向運(yùn)行
{
right_a = 0; //后轉(zhuǎn)
right_b = 1;
left_a = 0; //半速后轉(zhuǎn)
StartPwm(leftb);
delayms(delaytime);
StopPwm();
break;
}
case 0x08: //后右方向運(yùn)行
{
left_a = 0; //后轉(zhuǎn)
left_b = 1;
right_a = 0; //半速后轉(zhuǎn)
StartPwm(rightb);
delayms(delaytime);
StopPwm();
break;
}
case 0x09: //原地順時(shí)針旋轉(zhuǎn)
{
left_a = 1;
left_b = 0;
right_a = 0;
right_b = 1;
delayms(delaytime);
break;
}
case 0x0a: //原地逆時(shí)針旋轉(zhuǎn)
{
left_a = 0;
left_b = 1;
right_a = 1;
|
|