#include <reg52.h>
#include "intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
u8 r_buf,flag=8,R,L; //蓝牙接收到的字符存储缓冲区 ,L1,L2,R1,R2
sbit IN1_1 = P1^1; //驱动1
sbit IN2_1 = P1^2;
sbit IN3_1 = P1^3;
sbit IN4_1 = P1^4;
sbit ENA_1 = P1^0;
sbit ENB_1 = P1^5;
void left_go();
void go_fast();
void go_slow();
void right_go();
void left();
void right();
void stop();
void deal();
void back();
sbit LED_1 = P1^6; //红外传感
sbit LED_2 = P1^7;
sbit BUZ=P0^6; //峰鸣器
sbit LED=P0^7;
void delay(u16 z) //延迟函数
{
u16 x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void UART_Init() //串口初始化9600 //初始化串口定时器9600
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFD;
TL1 = 0xFD;
TR1 = 1;
ES = 1;
EA = 1;
}
void SendOneByte(u8 c) //发送字符函数
{
SBUF = c;
while(!TI);
TI = 0;
}
void UART_Interrupt(void) interrupt 4 //串口接收字符
{
if(RI)
{
RI = 0;
r_buf = SBUF;
if(r_buf == '1') //Left
{
flag=1;//left_go();
}
if(r_buf == '2')
{
flag =2;//go_fast();
}
if(r_buf == '3') //Right
{
flag=3;//right_go();
}
if(r_buf == '4')
{
flag=4;//left();
}
if(r_buf == '5')
{
flag=5;//go_slow();
}
if(r_buf == '6')
{
flag=6;// right();
}
if(r_buf == '8')
{
flag=8; //stop();
}
if(r_buf == '7')
{
flag=7; //back();
}
if(flag==1) left_go(); // break;
if(flag==2) go_fast(); // break;
if(flag==3) right_go(); // break;
if(flag==4) left(); // break;
if(flag==5) go_slow(); // break;
if(flag==6) right(); // break;
if(flag==7) back(); // break;
if(flag==8) stop();
SendOneByte(r_buf);//回发该字符
}
}
void alarm()
{
if(LED_1==0)
{
BUZ=0;
LED=0;
delay(100);
BUZ=1;
delay(100);
LED=1;
}
}
void go_fast()
{
IN1_1=1;
IN2_1=0;
IN3_1=1;
IN4_1=0;
}
void go_slow()
{
IN1_1=1;
IN2_1=0;
IN3_1=1;
IN4_1=0;
delay(30);
IN1_1=0;
IN2_1=0;
IN3_1=0;
IN4_1=0;
delay(5);
}
void left_go()
{
IN1_1=0;
IN2_1=0;
IN3_1=1;
IN4_1=0;
delay(100);
go_fast();
}
void left()
{
IN1_1=0;
IN2_1=0;
IN3_1=1;
IN4_1=0;
}
void right_go()
{
IN1_1=1;
IN2_1=0;
IN3_1=0;
IN4_1=0;
delay(100);
go_fast();
}
void right()
{
IN1_1=1;
IN2_1=0;
IN3_1=0;
IN4_1=0;
}
void stop()
{
IN1_1=0;
IN2_1=0;
IN3_1=0;
IN4_1=0;
}
void back()
{
IN1_1=0;
IN2_1=1;
IN3_1=0;
IN4_1=1;
}
/*void deal()
{
if(flag==1) left_go();
// case 1: break;
if(flag==2) go_fast(); // break;
if(flag==3) right_go(); // break;
if(flag==4) left(); // break;
if(flag==5) go_slow(); // break;
if(flag==6) right(); // break;
if(flag==8) stop(); // break;
else go_fast();
//}
} */
void main(void)
{
BUZ=1;
IN1_1 = 0; IN3_1 = 0;
IN2_1 = 0; IN4_1 = 0;
ENA_1 = 1;
ENB_1 = 1;
UART_Init();
delay(2);
while(1);
}
|