|
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar tmp;
unsigned char zkb=70 ;
sbit IN1=P2^2;
sbit IN2=P2^3;
sbit ENA=P2^0;
sbit ENB=P2^1;
int t=0;
void dely(int a)
{
int i,j;
for(i=0;i<a;i++)
for(j=0;j<110;j++);
}
void Go()
{
IN1=1;
IN2=0;
}
void Back()
{
IN1=0;
IN2=1;
}
void Stop()
{
IN1=0;
IN2=0;
}
void timer0() interrupt 1
{
if(t<zkb)
{
ENA=1;
ENB=1;
}
else
{
ENA=0;
ENB=0;
}
TH0=(65535-50)/256;
TL0=(65535-50)%256;
t++;
if(t>=100)
{t=0;}
}
void Init()
{
TMOD = 0x21; //定時器1工作于8位自動重載模式,用于產生波特率
TH1=TL1=0xFD; //11.0592M晶振,9600波特率
SCON = 0x50; //設定串行口工作方式1 允許接受
PCON &= 0x7F; //波特率不倍增
TR1 = 1; //啟動定時器1
ES=1; //開啟串口中斷
EA=1; //開啟總中斷
RI=0;
TH0=(65535-50)/256;
TL0=(65535-50)%256;
ET0=1;
TR0=1;
}
void main()
{
Init(); //初始化
while(1)
{
switch(tmp)
{
case 'F':
Go();
break;
case 'B':
Back();
break;
case 'S':
Stop();
break;
case 'a':
zkb=10;
break;
case 'b':
zkb=20;
break;
case 'c':
zkb=30;
break;
case 'd':
zkb=40;
break;
case 'e':
zkb=50;
break;
case 'f':
zkb=60;
break;
case 'g':
zkb=70;
break;
case 'h':
zkb=80;
break;
case 'i':
zkb=90;
break;
case 'j':
zkb=100;
break;
}
}
}
void serial_RX() interrupt 4
{
if(RI==1)
{
RI = 0;
tmp = SBUF;
}
}
|
|