- 13
- 0
- 约3.75千字
- 约 10页
- 2018-10-14 发布于福建
- 举报
单片机精确软件延时的设计的方法的研究
单片机精确软件延时的设计的方法的研究
摘要: 在单片机控制应用中,经常会遇到需要短时间延时的情况,有时还需要很高的精度。然而每次延时都使用定时器/计数器是没有必要的也是不现实的,利用软件延时程序来完成一些需要延时的部分势在必行。从研究软件延时程序模式出发,指出计算整个延时时间的具体方法,并在此基础上归纳一种设计精确软件延时的数学算法。
关键词: 单片机;软件延时;数学算法
中图分类号:NT 文献标识码:A 文章编号:1671-7597(2011)0310081-02
1 软件延时的基本原理
单片机在进行控制时,CPU过一段时间再去作某件事情,称之为延时。延时分为硬件延时和软件延时。硬件延时是指使用定时/计数器来实现延时,这种方法不占用CPU的工作时间。软件延时是利用程序中的指令在被执行时要花费一定的机器周期来实现的,占用CPU的工作时间。软件延时主要与两个因素有关,一是所用的晶振,二是延时程序的循环次数。单片机所用的晶振一经确定之后,延时时间就被指令的循环次数所唯一确定了,如单片机的晶振频率为6MHz,则一个机器周期为2μs。下面根据指令循环的次数的不同,先来介绍软件延时时长的计算方法(设晶振频率为12MHz)。
2 软件延时时长的计算方法
软件延时常用如表1的汇编指令。
1)单循环延时程序
DEL:MOV R0,#X;1T
DEL1:DJNZ R0,DEL1;2XT
RET;2T
延时时间:t=1+2X+2=2X+3=2R0+3
因为X的取值范围是[0,255],X=0时延时时间最长。所以延时时间t的取值范围是[5,515]μs。
2)二重循环程序
DEL:MOV R1,#Y ;1T
DEL1:MOV R0,#X ;1YT
DEL2:DJNZ R0,DEL2;2XYT
DJNZ R1,DEL1;2YT
RET;2T
延时时间:t=1+1Y+2XY+2Y+2
=2XY+3Y+3=2R0R1+3R1+3
因为X、Y的取值范围均为[0,255],X=Y=0时延时时间最长。所以延时时间t的取值范围是[8,131843]μs。
3)三重循环程序
DEL:MOV R2,#Z ;1T
DEL1:MOV R1,#Y ;1ZT
DEL2:MOV R0,#X ;1YZT
DEL3:DJNZ R0,DEL3;2XYZT
DJNZ R1,DEL2;2YZT
DJNZ R2,DEL1;2ZT
RET;2T
延时时间:
t=1+1Z+1YZ+2XYZ+2YZ+2Z+2
=2XYZ+3YZ+3Z+3
=2R0R1R2+3R1R2+3R2+3
同理,延时时间t的取值范围是[11μs。
综上分析,由数学归纳法可得出N(N一般不大于8)重循环的延时时间计算公式:
3 C语言中延时程序的设计方法
在用C语言进行编程时涉及到的软件延时程序,其设计方法与汇编语言的设计方法本质相同。例如,在C语言的一个实例程序中用for语句编写了一个延时子程序(该程序要求延时100ms)。
delay(void)
{ unsigned char i,j;
for(i=250;i=1;i--)
for(j=200;j=1;j--)
{}
}
利用keil c的反汇编功能,通过调用disassembly window命令查看到的汇编程序如下。
C:0X0060 7F7D MOV R7,#0XFA
C:0X0062 7F32 MOV R6,#0XC8
C:0X0064 DEFE DJNZ R6,C:0064
C:0X0066 DFFA DJNZ R7,C:0062
C:0X0068 RET
带入所得公式计算结果是100753μs,利用keil c的测试工具得出的延时时间为100755μs,误差是由调用指令引起,后有详细分析。可以得出结论,此处C语言中的for语句不仅与汇编语言中的DJNZ命令起到的作用类似且计算延时的方法也完全相同。即上面得出的公式同样适用于计算用C语言编写的延时程序。下面考虑一个相反的问题,也是本文着重要讨论的。
4 软件延时程序的设计算法
在实际的编程过程中,人们往往想得到一个规定了延时长度的延时子程序,即在已知延时时间的前提下设计循环次数。设计延时程序时应注意使循环的重数尽量少,以减少寄存器的使用量,同时也使程序更加简单,出错的可能性随之降低。其次尽量不使用寄存器R0、R1,因为它们经常用在间接寻址及需要传送外部数据的地
您可能关注的文档
- 协同创新视阈下职业教育人才培养的模式实证的研究.doc
- 协同创新视阈下地方高校的应用型人才培养的模式的改革的探讨.doc
- 协同创新视角下高校学风建设的策略.doc
- 协同创新视阈下农村专业合作经济组织发展的研究.doc
- 协同发展,开启未来“加速”的模式.doc
- 协同化柔性会计硕士培养的模式的研究.doc
- 协同发展产业集群背景下区域高等教育结构调整的策略.doc
- 协同发展的环境下图书馆联盟服务整合的策略的研究.doc
- 协同学理论在图书馆开展嵌入式学科服务的应用的探讨.doc
- 协同商务解决的方案横向评述.doc
- 企业文化建设方案企业文化建设手册.doc
- 高中化学氧化还原反应教案-新教材氧化还原反应教案优质.docx
- 食堂人员个人2022-2024年度述职报告工作总结(34篇).docx
- 漏第二课时一等奖创新教案.docx
- 河南省七年级语文上册期中复习——小说阅读训练(含答案).docx
- 统编版六年级语文上册-第一单元易错点检测A卷(含答案).docx
- 电力工程纠纷专用!建设工程施工合同纠纷要素式起诉状模板.docx
- 分包合同纠纷专用!建设工程施工合同纠纷要素式起诉状模板.docx
- 港口工程纠纷专用!建设工程施工合同纠纷要素式起诉状模板.docx
- 工程款追讨必备!建设工程施工合同纠纷要素式起诉状模板.docx
原创力文档

文档评论(0)