|
這是自己改的延時,串口輸入1,電機(jī)轉(zhuǎn)動,再輸入其他沒用了
#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;//設(shè)置串口工作方式1
TMOD = 0x20;//設(shè)置計數(shù)器工作方式2
TMOD |= 0x01;
PCON = 0x00;//即SMOD=1,波特率不加倍
TH1 = 0xFD;//計數(shù)器初值,波特率是9600,晶振為11.0592MHz
TL1 = 0xFD;
ET0=1;
ES = 1;//打開接收中斷
EA = 1;//打開總中斷
TR1 = 1;//打開計數(shù)器
}
void delay(unsigned int xms) //延時函數(shù)
{
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;
} |
|