想用c语言编一个用单片机定时器控制直流电机转动时间的程序,求高手帮忙!

按键kai按下时(即P2.2=0)电机正转(P2.0=1,P2.1=0),按键guan按下时(即P2.2=0)电机反转(P2.0=0,P22.1=1),正反转有一定时间,这段时间用单片机定时器怎么控制,求c语言的编程!主要是怎么反复使用。

#include<stc.h>
#define uchr unsigned char
#define uint unsigned int

sbit zh0 = P2^0;
sbit zh1 = P2^1; //定义两个端口

uint t; //变量T

void main()
{
TMOD = 0x01;
THO = (65536-50000)/256;
TL0 = (65536-50000)%256;
EA = 1;
ET0 = 1;
TR0 =1; //启动中断

while(1)
{

zh0=1;
zh1=0; //程序近来后开始正传

if(t==200) //当中断进入200次,也就是10后电机反转,20次是一秒
{
t=0; //把T清零

zh0=0;
zh1=1;

}

}
}

/*中断程序*/

void timer0 () interrupt 1
{
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;

t++;
}追问

如果加上两个按键kai和guan呢?怎么反复使用?中断后要怎么调整?

追答

这可是两个问题一定要加分
#include
#define uchr unsigned char
#define uint unsigned int

sbit zh0 = P2^0;
sbit zh1 = P2^1; //定义两个端口\
sbit kai=P3^0; //开
sbit guan=P3^1; //关

uint t,a; //变量T和A

void main()
{
TMOD = 0x01;
THO = (65536-50000)/256;
TL0 = (65536-50000)%256;
EA = 1;
ET0 = 1;
TR0 =1; //启动中断

a=10000; //变量A赋值

while(1)
{
if(kai==0) //判断开关是否按下,开启
{
while(a--);//简单延时,用于销抖
if(kai=0) //再次判断是否按下,如果按下执行下面的程序
{
zh0=1;
zh1=0; //程序近来后开始正传

if(t==200) //当中断进入200次,也就是10秒后电机反转
{
t=0; //把T清零

zh0=0;
zh1=1;
}

if(guan==0) //关闭
{
while(a--);
if(guan==0)
{
zh0=0;
zh1=0;
}
}
}

}

}
}

/*中断程序*/

void timer0 () interrupt 1
{
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;

t++;
}

温馨提示:答案为网友推荐,仅供参考
相似回答