600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 51单片机c语言直流电机廷迟启停 51单片机控制直流电机不会加定时器延时程序...

51单片机c语言直流电机廷迟启停 51单片机控制直流电机不会加定时器延时程序...

时间:2018-08-02 16:45:22

相关推荐

51单片机c语言直流电机廷迟启停 51单片机控制直流电机不会加定时器延时程序...

这是自己改的延时,串口输入1,电机转动,再输入其他没用了

#include

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;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。