这是自己改的延时,串口输入1,电机转动,再输入其他没用了
#include<reg52.h>
void uart_init();
void qudong (unsigned int t);
sbit en1=P0^0; //l298nen1
unsigned char str ;
int n=1,t=1;
void uart_init()
{
SCON = 0x50;//设置串口工作方式1
TMOD = 0x20;//设置计数器工作方式2
TMOD |= 0x01;
PCON = 0x00;//即SMOD=1,波特率不加倍
TH1 = 0xFD;//计数器初值,波特率是9600,晶振为11.0592MHz
TL1 = 0xFD;
ET0=1;
ES = 1;//打开接收中断
EA = 1;//打开总中断
TR1 = 1;//打开计数器
}
void delay(unsigned int xms) //延时函数
{
n=xms;
TH0=(65536-1000*n)/256;
TL0=(65536-1000*n)%256;
TR0=1;
while(t);
TR0=0;
}
void main()
{
en1=0;
uart_init();
while (1)
{
if(str==1)
qudong(0) ; //停止
else if(str==2)
qudong(10) ; //速度1
else if(str==3)
qudong(15) ; //速度2
else if(str==4)
qudong(20) ; //速度3
}
}
void qudong (unsigned int t)
{
en1=1;
delay(t);
en1=0;
delay(20-t);
}
void a(void) interrupt 4
{
if(RI)
{
RI=0;
str=SBUF;
}
}
void b(void) interrupt 1
{
t=0;
} |