|
#include "REGX52.H"
typedef unsigned int u16;
typedef unsigned char u8 ;
sbit IN1=P0^1;
sbit IN2=P0^2;
sbit IN3=P0^3;
sbit IN4=P0^4;
sbit ENA=P0^0;
sbit ENB=P0^5;
sbit LED1=P2^0;
sbit LED2=P2^1;
sbit LED3=P2^2;
sbit LED4=P2^3;
void UsartInit()
{
SCON=0X50; //設(shè)置為工作方式1
TMOD=0X20; //設(shè)置計(jì)數(shù)器工作方式2
PCON=0X80; //波特率加倍
TH1=0XF9; //計(jì)數(shù)器初始值設(shè)置,注意波特率是4800的
TL1=0XF9;
ES=1; //打開接收中斷
EA=1; //打開總中斷
TR1=1; //打開計(jì)數(shù)器
}
/*void delay (u16 i)
{
i--;
while(1);
} */
void tingzhi ()
{
IN1=0;
IN2=0;
IN3=0;
IN4=0;
}
void qianjin()
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
}
void zuozhuan ()
{
IN1=1;
IN2=0;
IN3=0;
IN4=0;
// LED2=0;
}
void youzhuan()
{
IN1=0;
IN2=0;
IN3=1;
IN4=0;
// LED2=1;
}
void houtui()
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
//LED1=1;
}
void delay_nus(unsigned int i)
{
i=i/10;
while(--i);
}
void delay_nms(unsigned int n)
{
n=n+1;
while(--n)
delay_nus(900);
}
void ControlCar(unsigned char ConType)
{
tingzhi();
switch(ConType)
{
case 01:
qianjin();
LED1=0;
break;
case 02:
ENA=1;
ENB=1;
zuozhuan();
LED2=0;
break;
case 03:
ENA=1;
ENB=1;
youzhuan();
LED3=0;
break;
case 04:
ENA=1;
ENB=1;
houtui();
LED4=0;
break;
case 05:
tingzhi();
break;
}
}
void main()
{
ENA=1;
ENB=1;
delay_nms (10);
UsartInit();
delay_nms (10);
while(1);
}
void Usart() interrupt 4
{
u8 receiveData;
u16 a;
delay_nms(50);
receiveData=SBUF;//出去接收到的
ENA=1;
ENB=1;
// ControlCar(5);
delay_nms(50);
RI=0;
a=SBUF;
a=SBUF%16;
ControlCar(a);
delay_nms(50);
SBUF=receiveData;//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
while(!TI); //等待發(fā)送數(shù)據(jù)完成
TI=0; //清除發(fā)送完成標(biāo)志位
}
|
|