推荐星级:
- 1
- 2
- 3
- 4
- 5
单片机软件精确延时计算和延时程序设计方法
资料介绍
文档为单片机软件精确延时计算和延时程序设计方法总结文档,是一份不错的参考资料,感兴趣的可以下载看看,,,,,,,,,,,,
部分文件列表
文件名 | 大小 |
单片机软件精确延时计算和延时程序设计方法.pdf | 157K |
部分页面预览
(完整内容请下载后查看)信 息 科 学
单片机软件精确延时计算和延时程序设计方法
张剑锋 陈 锐 陈慕君 曾凡娇
(河南农业职业学院,河南 郑州 451450)
摘 要:
计算机反复执行一段程序以达到延时的目的称为软件延时,单片机应用程序中经常会用到短时间延时,有时要求很高的精度,将以
12MHZ 晶振为例,详细讲解MCS-51 单片机中汇编程序延时的精确算法和程序设计方法。
关键词:
1 概述
51 单片机;汇编;延时算法;指令周期、机器周期与时钟周期
0,就要执行第ꢇ条指令,由第ꢈ条指令得知,
内循环体:DEL2:DJNZ R6,DEL2 ;2ꢣs
外循环体: MOV R6,#125 ;1ꢤs
DEL2:DJNZ R6,DEL2 ;2ꢥs
当我们在进行现实的单片机应用系统设 (R6)=125,所以,内循环延时程序总共执行一次
计时,有时会遇到预期的实验现象出现不了。例 第ꢉ条指令和125 次内循环体,即内循环延时
如:我们进行简易流水灯的设计(P1 口连接8 个 时间为:1ꢊs +125×2ꢋs=251ꢌs。
执行时间为:1ꢦs +125ꢧ2ꢨs=
发光二极管,从P1.0 开始,依次点亮),把以下流
水灯程序用编程器加载到MCS- 51 单片机芯片
上后,
现在我们可以把程序简化成如下形式:
50ms 延时程序段如下:
251ꢩs
50ms 延时程序:
MOV R7,#200
DEL1:MOV R6,#125
DEL2:DJNZ R6,DEL2
DJNZ R7,DEL1
DELAY:MOV R7,#200
DEL1:内循环延时时间(251ꢎs)
DJNZ R7,DEL1
ꢍ
流水灯程序:ORG
LJMP
0000H
START
0050H
ꢏ
ORG
外循环体为内循环延时时间(251ꢐs)相应
1s 延时程序:
MOV R0,#20
START:MOV
点亮与P1.0 相连的灯
MOV
A, #00000001B; 指令和第ꢑ条指令,只要R7- 1 不为0,就要执
行内循环延时时间(251ꢒs)相应指令和第ꢓ条
DEL3:MOV R7,#200
DEL1:MOV R6,#125
DEL2:DJNZ R6,DEL2
DJNZ R7,DEL1
A, P1
指令,由第ꢔ条指令得知,(R7)=200,所以,内循
LOOP:RL A ;实现数据左移一位, 环延时程序总共执行一次第ꢕ条指令和200 次
为下一个灯点亮做准备
MOV
外循环体,即内循环延时时间为:1ꢖs +200ꢗ
(251ꢘs +2ꢙs)=50601ꢚs =50.601ms≈50ms。
3 软件延时程序设计方法
DJNZ R0,DEL3
P1, A
在编写延时程序时,只要我们找到了最内
LJMP LOOP ;实现往复循环
层循环体,然后逐层嵌套,就可以写出相对精确
RET
由以上的精确软件延时计算方法可以看 的延时程序。
END
出,我们在进行计算时是从内到外,先计算最内
4 结论
安装到电路板上后,会出现所有的灯一直 层的,再逐层向外计算,最终得出结果。我们在
亮,达不到预期的效果。原因就是在每一个灯亮 进行延时程序设计时,也是由内向外。
通过对延时程序精确延时的计算和程序
设计方法的探究,使自己对这块知识的理解更
的状态之后没有加延时程序段。看来,延时程序
下面我以1s 的延时程序设计介绍精确延 加透澈,教学思路更加清晰,提高了自身的教学
水平。
的设计是非常重要的,下面我介绍一下精确软 时程序设计方法。
参考文献
件延时计算程序设计方法。
2 精确软件延时计算方法
首先,我把1s 进行分解,1s=1000ms=20ꢛ
50ms。这样,我们可以把1s 看成50ms 的延时程 [1]李法春.单片机原理及接口技术案例教程[M].
软件延时是利用计算机反复执行一段和 序执行 20 次。其次,再进行 50ms 的分解, 北京:机械工业出版社,2008.
主程序无关的程序以达到延时的目的。我们要 50ms=50000ꢜs=200ꢝ125ꢞ2ꢟs,我们可以把 [2] 李全利.单片机原理及应用技术[M].北京:高
想明白精确软件延时的计算方法,我们要清楚 最内层循环体看作执行 2ꢠs,DJNZ 指令即可 等教育出版社,2006.
一些几个基本概念。
以实现。我们再把125ꢡ2ꢢs 执行200 次即可 [3] 刘守义.单片机应用技术[M].西安:西安电子
2.1 指令周期:单片机执行一条指令所需要 达到50ms。
的时间,它是以机器周期为单位的,指令不同,
所需的机器周期也不同。
科技大学出版社,2002.
2.2 机器周期:人们规定6 个状态(2 个时钟
周期)或12 个晶振周期为一个机器周期。
2.3 时钟周期:也称为振荡周期,一个时钟
周期=1/ 晶振频率。
MCS- 51 单片机的指令有单字节、双字节
和三字节的,它们的指令周期不尽相同,一个单
周期指令包含一个机器周期,即12 个时钟周
期,所以一条单周期指令被执行所占时间为
12*(1/12000000)=1μs。
下面我以50ms 的延时程序段为例进行精
确延时计算方法的介绍。
50ms 延时程序段如下:
DELAY:MOV R7,#200
DEL1:MOV R6,#125
DEL2:DJNZ R6,DEL2
DJNZ R7,DEL1
①
②
③
④
其中第ꢀ和第ꢁ条指令为单周期指令,指
令周期为1ꢂs,第ꢃ和第ꢄ条指令为双周期指
令,指令周期为2ꢅs。
内循环体为第ꢆ条指令,只要R6- 1 不为
-85-
相关下载
- 华为模块电源管理设计指导-(V100R001_02 Chi...
- 华为LGA模块PCB设计指导_V2.0_20150126.pdf
- HUAWEI Module USB Interface Descriptor Gui...
- HUAWEI ME909s-821 LTE LGA模块硬件指南V100R...
- HUAWEI ME909s-821 LTE LGA Module Acceptanc...
- HUAWEI 30 mm x 30 mm LGA Module Hardware M...
- HUAWEI 30 mm x 30 mm LGA Module Developmen...
- Altium_Designer_规则设置三例.pdf
- STM32F407产品技术培训-DSP库及其例程
- STM32F407产品技术培训-2.浮点单元.pdf
全部评论(0)