怎么用定时器写延时函数?

2019-07-16 01:31发布

void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);       
}
延时函数,怎么用定时器做呀?
能像上面的例子一样,能输入延时值的函数?
想做一个精确一点的,方便调用。。。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
爱我别走
1楼-- · 2019-07-17 11:23
 精彩回答 2  元偷偷看……
一抹阳光
2楼-- · 2019-07-17 13:52
写的很好,恐怕你是第一次这样拿定时器这样做延时吧。
一抹阳光
3楼-- · 2019-07-17 16:53
这个延时函数,有强大的后盾啊
一抹阳光
4楼-- · 2019-07-17 18:31
貌似存在问题哦,当需要定时1ms时  若执行  count=t; 定时器计数是无法保证刚好在65536-1000的,因此如果定时tms      那么  (t-1)ms<实际<=tms,而且每次都不经相同。
这样改下如何:即使有误差,误差应该也是确定的
void DelayNms(unsigned int t)
{
      TH0=(65536-1000)/256;
      TL0=(65536-1000)%256;
      count=t;
      while(count);
}
爱我别走
5楼-- · 2019-07-17 21:24
一抹阳光 发表于 2013-6-25 01:03
貌似存在问题哦,当需要定时1ms时  若执行  count=t; 定时器计数是无法保证刚好在65536-1000的,因此如果定 ...

哈哈,楼上是正解,原来程序的确有问题,会有小于1ms的误差。
ˇ√ˇ
6楼-- · 2019-07-17 23:41
 精彩回答 2  元偷偷看……

一周热门 更多>