关于单片机延时程序的具体分析

前面我们介绍了延时程序,但这还不完善,因为,我们只知道djnz r6,d2这句话会被执行62500次,但是执行这么多次需要多长时间呢?是否满足我们的要求呢?我们还不知道,所以下面要来解决这个问题。
先提一个问题:我们学校里什么是最重要的。(铃声)校长可以出差,老师可以休息,但学校一日无铃声必定大乱。整个学校就是在铃声的统一指挥下,步调一致,统一协调地工作着。这个铃是按一定的时间安排来响的,我们可以称之为“时序��时间的顺序”。一个由人组成的单位尚且要有一定的时序,计算机当然更要有严格的时序。事实上,计算机更象一个大钟,什么时候分针动,什么时候秒针动,什么时候时针动,都有严格的规定,一点也不能乱。计算机要完成的事更复杂,所以它的时序也更复杂。
我们已知,计算机工作时,是一条一条地从rom中取指令,然后一步一步地执行,我们规定:计算机访问一次存储器的时间,称之为一个机器周期。这是一个时间基准,好象我们人用“秒”作为我们的时间基准一样,为什么不干脆用“秒”,多好,很习惯,学下去我们就会知道用“秒”反而不习惯。
一个机器周期包括12个时钟周期。下面让我们算一下一个机器周期是多长时间吧。设一个单片机工作于12m晶振,它的时钟周期是1/12(微秒)。它的一个机器周期是12*(1/12)也就是1微秒。(请计算一个工作于6m晶振的单片机,它的机器周期是多少)。
mcs-51单片机的所有指令中,有一些完成得比较快,只要一个机器周期就行了,有一些完成得比较慢,得要2个机器周期,还有两条指令要4个机器周期才行。这也不难再解,不是吗?我让你扫地的执行要完成总得比要你完成擦黑板的指令时间要长。为了恒量指令执行时间的长短,又引入一个新的概念:指令周期。所谓指令周期就是指执行一条指令的时间。intel对每一条指令都给出了它的指令周期数,这些数据,大部份不需要我们去记忆,但是有一些指令是需要记住的,如djnz指令是双周期指令。
下面让我们来计算刚才的延时。首先必须要知道晶振的频率,我们设所用晶振为12m,则一个机器周期就是1微秒。而djnz指令是双周期指令,所以执行一次要2个微秒。一共执行62500次,正好125000微秒,也就是125毫秒。

关于鸿蒙南向开发者指北的直播回顾
IDC:2022年智能汽车市场研究
Qt应用程序出现卡顿的现象怎么解决呢
云数据库之战下半场,腾讯云数据库打的更有侵略性
不同变压器的工作原理解析
关于单片机延时程序的具体分析
有源晶振与无源晶振
2050年全球电力需求约61万亿千瓦时,清洁电力生产比重提高
东芝DLP背投显示单元技术特点有哪些?
内置全亮半亮平均电流型LED降压恒流驱动器车灯摩托车手电筒照明
泰科电子M8/M12线束配置器产品概述
中国科学院软件研究所所长赵琛:RISC-V 生态发展思考
数码相机的闪光LED驱动器设计方案
英国政府认为一些法规阻碍了5G的部署
安森美半导体获得CEVA 图像和视觉平台授权许可 用于汽车先进驾驶辅助(ADAS)应用
红米Note 4X红米Note 4的区别?配置和价格!
你应该知道动态功耗调节的方法
电源软启动的实用设计技巧
不会PS还想做图?微软、京东出黑科技:说一句话就能生成图片!
具有处理±VCC信号能力的微型、双路SPDT开关芯片IC