|
本帖最后由 loading88 于 2018-4-29 21:36 編輯
771423077530042859.jpg (196.75 KB, 下載次數(shù): 67)
下載附件
調(diào)試中
2018-4-29 21:31 上傳
#include<reg52.h>
#include "drive.h"
typedef unsigned char u8;
typedef unsigned int u16;
#define uchar unsigned char
u16 a;
sbit IN1=P1^7;
sbit IN2=P1^6;
sbit IN3=P1^5;
sbit IN4=P1^4;
void com_init() //串口初始化函數(shù),波特率9600bps
{
TMOD = 0x20;
TH1 = 0xf9;
TL1 = 0xf9;
PCON=0X80;
TR1 = 1;
SCON=0X50;
ES = 1;
EA = 1;
}
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=100;y>0;y--);
}
void Stop() //停止
{
{
IN1=0;
IN2=0;
IN3=0;
IN4=0; //停止
delay(20);
}
}
void Backward() //后退
{
{
IN1=0;
IN2=1;
IN3=0;
IN4=1; //反轉(zhuǎn)
delay(20);
}
}
void Forward() //前進(jìn)
{
{
IN1=1;
IN2=0;
IN3=1;
IN4=0; //正轉(zhuǎn)
delay(20);
}
}
void Wleft() //前左
{
{
IN1=0;
IN2=0;
IN3=1;
IN4=0; //左轉(zhuǎn)
delay(20);
}
}
void Wright() //前右
{
{
IN1=1;
IN2=0;
IN3=0;
IN4=0; //右轉(zhuǎn)
delay(20);
}
}
void Bright() //后右
{
{
IN1=0;
IN2=0;
IN3=0;
IN4=1; //后右
delay(20);
}
}
void Bleft() // 后左
{
{
IN1=0;
IN2=1;
IN3=0;
IN4=0; //后左
delay(20);
}
}
void main() //主函數(shù)
{
com_init(); //串口初始化
}
void Usart() interrupt 4
{
a=SBUF;//出去接收到的數(shù)據(jù)
RI = 0;//清除接收中斷標(biāo)志位
SBUF=a;//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
while(!TI);
switch(a) //判斷收到的命令是干嘛的
{
case 1:Forward();break; //前進(jìn)1
case 2:Backward();break; //后退2
case 3:Stop();break; //停止3
case 4:Wleft();break; //前左4
case 5:Wright();break; //前右5
case 6:Bright();break; //后右6
case 7:Bleft();break; // 后左7
}
//死循環(huán),等待藍(lán)牙傳命令過(guò)來(lái)++
TI=0;
//清除發(fā)送完成標(biāo)志位
}
|
|