下载此文档

C语言延时子程序.doc


文档分类:IT计算机 | 页数:约6页 举报非法文档有奖
1/6
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/6 下载此文档
文档列表 文档介绍
C语言延时子程序
单片机c语言延时子程序
引用:
有个好帖,从精度考虑,它得研究结果是:
void delay
C语言延时子程序
单片机c语言延时子程序
引用:
有个好帖,从精度考虑,它得研究结果是:
void delay2(unsigned char i)
       {
         while(--i);
         }
为最佳方法。
分析:假设外挂12M(之后都是在这基础上讨论)
我编译了下,传了些参数,并看了汇编代码,观察记录了下面的数据:
delay2(0):延时518us          518-2*256=6
delay2(1):延时7us(原帖写“5us”是错的,^_^)
delay2(10):延时25us            25-20=5
delay2(20):延时45us            45-40=5
delay2(100):延时205us          205-200=5
delay2(200):延时405us          405-400=5
见上可得可调度为2us,而最大误差为6us。
精度是很高了!
但这个程序的最大延时是为518us 显然不
能满足实际需要,因为很多时候需要延迟比较长的时间。
那么,接下来讨论将t分配为两个字节,即uint型的时候,会出现什么情况。
程序名称:50us 延时
注意事项:基于1MIPS,AT89系列对应12M晶振,W77、W78系列对应3M晶振
例子提示:调用delay_50us(20),得到1ms延时
全局变量:无
返回:     无
--------------------------------------------------------------------*/
void delay_50us(uint t)
{
uchar j;  
for(;t>0;t--)   
   for(j=19;j>0;j--)
    ;
}
我编译了下,传了些参数,并看了汇编代码,观察记录了下面的数据:
delay_50us(1):延时63us              63-50=13
delay_50us(10):延时513us            503-500=13  
delay_50us(100):延时5013us          5013-5000=13
delay_50us(1000):延时50022us        50022-50000=22
赫赫,延时50ms,误差仅仅22us,作为C语言已经是可以接受了。再说要求再精确的话,就算是用汇编也得改用定时器了。
/*--------------------------------------------------------------------
程序名称:50ms 延时
注意事项:基

C语言延时子程序 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数6
  • 收藏数0 收藏
  • 顶次数0
  • 上传人幸福人生
  • 文件大小1.26 MB
  • 时间2022-04-18
最近更新