#include <reg52.h> //包含单片机寄存器的头文件
#define uchar unsigned char
#define uint unsigned int
uchar num,a;
sbit LEFTMOT1 = P2^4;
sbit LEFTMOT2 = P2^5;
sbit RIGHTMOT1 = P2^6;
sbit RIGHTMOT2 = P2^7;
void foward();
void backward();
void left();
void right();
void stop();
void control(uchar cmd);
void main()
{
TMOD=0x20; //用定时器设置串口波特率 9600
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1; //串口初始化
SM0=0;
SM1=1;
EA=1; //开启总中断
ES=1;
while(1)
{
if(num==1) //判断是否有串口数据的传送
{
ES=0;
num=0;
SBUF=a; //发送数据a到SBUF,即将单片机的数据发送到计算机
while(!TI);
TI=0;
ES=1;
control(a);
}
}
}
void ser() interrupt 4
{
RI=0;
a=SBUF;
num=1;
}
void control(uchar cmd)
{
switch(cmd)
{
case 'A':
foward();
break;
case 'B':
backward();
break;
case 'C':
left();
break;
case 'D':
right();
break;
case 'E':
stop();
break;
}
}
void foward()
{
LEFTMOT1 = 1;
LEFTMOT2 = 0;
RIGHTMOT1 = 1;
RIGHTMOT2 = 0;
}
void backword()
{
LEFTMOT1 = 0;
LEFTMOT2 = 1;
RIGHTMOT1 = 0;
RIGHTMOT2 = 1;
}
void stop()
{
LEFTMOT1 = 0;
LEFTMOT2 = 0;
RIGHTMOT1 = 0;
RIGHTMOT2 = 0;
}
void left()
{
LEFTMOT1 = 0;
LEFTMOT2 = 1;
RIGHTMOT1 = 0;
RIGHTMOT2 = 0;
}
void right()
{
LEFTMOT1 = 0;
LEFTMOT2 = 0;
RIGHTMOT1 = 0;
RIGHTMOT2 = 1;
}
/********************************************************/
|