下载此文档

比较精确的延时.doc


文档分类:通信/电子 | 页数:约8页 举报非法文档有奖
1/8
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/8 下载此文档
文档列表 文档介绍
比较精确的延时收集于网络用C语言写出来程序非常的简练,它是一种模块化的语言,一种比汇编更高级的语言,但是就是这样一种语言也还是有它不足之处:它的延时很不好控制,常常很难知道一段延时程序它的精确延时到底是多少,这和汇编延时程序没法比。但有时后写程序又不得不要用到比较精确的延时,虽然说可以用混合编程的方式解决,但这种方式不是每个人都能掌握,且写起来也麻烦。所以,通过测试给大家提供一个延时子程序模块,并以此给一个出经常用到的延时的数据表格。(注意:表格中的数据只适合此延时模块,对其它的延时程序不适用,切忌!!!)延时模块:其中问号代表要填的数,要延时多少,到表格中去找数据,然后填上就OK!切忌3条FOR语句不能颠倒顺序voidDelay(){unsignedchara,b,c;for(a=0;a<?;a++)for(b=0;b<?;b++)for(c=0;c<?;c++);}延时时间a的值b的值c的值延时误差(us)10us 1 1 1 - 1 1 8 030us 1 1 15 + 2 1 9 050us 1 1 28 060us 1 1 35 + 1 1 42 +180us 1 1 48 090us 1 1 55 + 1 1 61 - 1 1 128 0300us 3 1 63 + 2 1 129 0500us 5 1 63 + 6 1 63 0700us 7 1 63 - 1 3 175 + 9 1 63 - 1 3 219 - 2 3 220 +33ms 3 3 220 +3Xms X 3 220 +3(X的范围为2到255)基本上平时用到的延时都在这里了,每种延时的误差都很小,最大也不过3us,有的甚至没有误差,已经很精确了,如果想延时1秒钟,可以连续调用延时250ms的程序4次,总共延时误差12us,这样的误差已经不算误差了,用汇编语言编写还达不到这个程度。现在就不再为延时不精确担忧了,参照表中的数据写延时,想延时多少就能延时多少。再次重申:此表格是根据此延时模块编写,这也是大多数朋友都习惯用的一个模块,如果用其它模块或是改动了此模块,延时都不准的,不信大家可以试试!!!KeilC51程序设计中几种精确延时方法延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环体进行。1>使用定时器/、12MHz或6MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1μs和2μs,便于精确延时。本程序中假设使用频率为12MHz的晶振。最长的延时时间可达216=65536μs。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其它定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。在实际应用中,定时常采用中断方式,如进行适当的循环可实现几秒甚至更长时间的延时。使用定时器/计数器延时从程序的执行效率和稳定性两方面考虑都是最佳的方案。但应该注意,、PUSHPSW、语句,执行时占用了4个机器周期;如程序中还有计数

比较精确的延时 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数8
  • 收藏数0 收藏
  • 顶次数0
  • 上传人镜花流水
  • 文件大小30 KB
  • 时间2019-06-04
最近更新