怎么实现不了呢?帮忙看看多谢!
void timer0_init(void)
{
TMOD |=0x01; //MODEL1,timer
TH0=0xdC; //定时10ms
TL0=0x00;
ET0=1; //中断使能
TR0=1; //关闭定时器0
}
void T0_OverFlow(void) interrupt 1 //定时器0溢出中断,延时10ms
{
TH0=0xDC;
TL0=0x00;
Time++;
if(Time==50)
{
TR0=0;
Time=0;
}
void Delay_s(Uchar Num)
{
while(TR0==0)
{
for(;Num>=0;Num--);
TR0=1;
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
main()
{
定时器初始化();
whlie
{
.....
......
// 需要延时的位置
延时_s标志 =0;
定时器启动();
while(延时_s标志 ==0);
定时器关闭();
......
}
}
定时器中断
{
延时_s标志 = 1;
}
当然你可以把那部分代码写成Delay_s()但要注意参数传递。
逻辑有问题
void Delay_s(Uchar Num)
{
for(;Num>0;Num--)
{
TR0=1;//启动TIMER
while(TR0==1);//等待TIMER停止
}
}
还有,Num>=0改为Num>0;因为uchar型数据永远不会小于0
一周热门 更多>