#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;
}
/********************************************************/
|