如果延时程序这样写 对不对???

2019-07-16 00:50发布

void delay(uint z)
{
        uint x;
        TMOD=0x01;//T0选择工作方式一,16位定时器
        TR0=0;//T0关
        for(x=z;x>0;x--)
        {
           TH0=(65536-55536)/256;
           TL0=(65536-55536)%256;//定时10ms
           TR0=1;//T0开       
        }
}

我是这样考虑的,用定时器T0的工作方式一,定时10ms。

用for语句的循环功能,对其循环控制。

z等于几,就是循环几次,也就是说延时几个10ms。

如果不满足for中的表达式2,则进入语句,进行动作,然后再求解表达式3.
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
爱﹏奔跑
2019-07-16 20:14
一头不醒的猪 发表于 2013-5-7 21:15
定时器写错了,而且你是延时55536的时间。间的数才是延时的时间,比如这个就是延时50毫秒
        TMOD=0x11;
        TH0 ...


void delay(uint z)
{
        uint x;
        TMOD=0x01;//T0选择工作方式一,16位定时器
        TR0=0;//T0关
        for(x=z;x>0;x--)
        {
           TH0=(65536-55536)/256;
           TL0=(65536-55536)%256;//定时10ms
           TR0=1;//T0开        
        }
}

这个程序里的定时器  我设定的时间是10毫秒

加上一个for循环

如果z=5,然后这个delay(5);就延时50毫秒。

这个跟中断开不开没关系吧, 不知道这样对不对???

用定时器了,中断必须开么?

一周热门 更多>