在单片机上用定时器做延时怎么用比如在DS18B20中延时要求那么精确

来源:百度知道 编辑:UC知道 时间:2024/05/29 05:06:01
用太多的Delay占用CPU会很大 很多Delay那程序就没办法跑了 这个问题只

好用定时器解决吧

能否举个例子发在我邮箱里 形象一点 我的邮箱是lovesmallben@126.com

请各位高手指点 谢谢了 AVR 的 C51的程序都可以

用定时器,定时1ms,每当到了、中断,就把 n1、n2、n3,分别加一,然后退出中断。
在主函数中,分别检测n1、n2、n3是否到了50、30、60,到了,用一个定时器,基本就可以满足所有的定时需求。

我这没有具体程序,定时器的程序太依赖片子上定时器的硬件了,涉及相当多的配置字和状态寄存器控制寄存器,给你个思路。
看主频是多少,有没有分频,再看定时器的配置字,有没有在此处分频,就能算出定时器计一个数的时间,设置初始的计数值,有的片子是从小到大计数,溢出中断,有的是从大到小,归零中断,有的可以通过配置字自由选择。这些是初始化定时器,还包括刷新方式和启动定时器。主程序:

刚才的初始化定时器;
初始化定时器中断(定时器中断使能);
...
if(中断标志位置位) //表示定时器时间到
{
。。。。
}
清除中断 //要一轮一轮的不停中断要加循环
}