51定时器是否可以重复使用

2019-03-24 19:37发布

请教大家,我在做一个51单片机 定时关闭直流电机,定时开启直流电机的实验,我用了分别用了T0,T1两个定时器,这两个功能互相独立,是共用同一个电机,一次只能实现   一个功能,没问题,现在请问大家。那是否可以压缩成一个定时器来使用,就是无论定时开启还是定时关闭,都是只用其中一个定时器,感觉用2个定时器太浪费了?我曾经试过,没成功,谢谢~~~ 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
mianbaoyjttao
2019-03-26 05:29


以上就是中断的程序,今天又试了好久,依旧没有成功,请指点,谢谢~~~~

/****************************定时器0初始化***************************************************/
void Timer0_init()

{
TMOD=0x01;
IE=0x82;
TH0 = (65536-45872)/256;
TL0 = (65536-45872)%256;
TR0=1;
}


/*****************************定时器0中断******定时关机***********************************************/
void Time0_Init() interrupt 1

{
TH0 = (65536-45872)/256;
TL0 = (65536-45872)%256;
Count1++;

if(Count1==20)
{
Count1=0;
miao1--;
if(miao1==-1)
{
fen1--;
miao1=59;

if(fen1==-1)
{
shi1--;
fen1=59;

if(shi1==0)
{
shi1=0;

}
write_djs(1,shi1);

}

write_djs(3,fen1);
}

write_djs(5,miao1);
}

if(miao1==0&&fen1==0&&shi1==0&&m==1)
{
TR0=0;
RELAY=0; //继电器关闭,电机关闭
}
}
/***************************定时器1初始化**********************************************************/
void Timer1_init()

{
TMOD=0x11;
IE=0x88;
TH1 = (65536-45872)/256;
TL1 = (65536-45872)%256;
TR1=1;
}
/*****************************定时1中断******定时开机***********************************************/
void Time1_Init() interrupt 3

{
TH1 = (65536-45872)/256;
TL1 = (65536-45872)%256;
Count2++;

if(Count2==20)
{
Count2=0;
miao1--;
if(miao1==-1)
{
fen1--;
miao1=59;

if(fen1==-1)
{
shi1--;
fen1=59;

if(shi1==0)
{
shi1=0;

}
write_djs(1,shi1);

}
write_djs(3,fen1);
}

write_djs(5,miao1);
}

if(miao1==0&&fen1==0&&shi1==0)
{
TR1=0;
RELAY=1; //继电器工作,电机开启
}
}

一周热门 更多>