单片机汇编延时程序

时间:2023-03-16作者:佚名

单片机汇编实现延迟的程序代码:

DELAY: MOV R7,#250 ;

D1: MOV R6,#250 ;

D2: DJNZ R6,D2 ;

DJNZ R7,D1 ;

RET

如果用高级语言编程,只需要简单地调用延时函数就可以实现,但是计算机具体是怎么实现的呢?要想知其所以然,还得从汇编开始学起。

冒号前面的“DELAY”、“D1”、“D2”为语句行的名字,是为了程序的条件语句跳转用的,分号后面为注释,计算机执行时将过滤掉这些信息,最大限度减少代码长度,提高效率。

DELAY: MOV R7,#250 ; 名字为“DELAY”的语句:意思是将CPU内部内存RAM的R7位置填写为250(原来为0,为什么是0呢?因为任何程序开始执行前都要复位,就像我们打算盘要将算子复位一样,或者我们用沙盘写字,要将沙盘抹平类似)

D1: MOV R6,#250 ; 名字为“D1”的语句:将R6位置填写为250

D2: DJNZ R6,D2 ; 名字为“D2”的语句:将R6位置的250减1,如果为0就继续执行下一条,不为0就继续执行D2这一句,因为R6=250,所以这个语句要原地踏步执行250次!

DJNZ R7,D1 ; 这句没有名字,因为没有别的语句要跳到这里,所以就省略了。R7同样等于250,但它不是原地踏步,而是跳回了D1,这么干,D!、D2和本句将被循环执行250遍,需要强调的是:D2语句自身每次都要执行250遍,也就是执行了250*250=62500遍!

RET ;子程序结束(因为延时程序一般不作为独立程序存在,它只是一个子程序,也就是高级语言中的一个函数,看到这个字符,子程序将跳回到母程序,进行下一步)。

这个子程序这么反复地循环指令,到底有什么意义呢?又是怎么实现的延时程序呢?说起来计算机真是有点笨,它是*数程序执行的次数来累加时间的!也就是说语句本身就是为了浪费时间!哈哈,可笑吧?这就像你没有钟表,但是你知道你跑操场一圈是一分钟,然后就绕着操场跑了60圈,时间过了正好一小时一样。

如果是人的话,谁也不会笨到干这么累的活儿来计时,但计算机不一样,它不论静止还是运动,程序总是一拍一拍地运行着,所以它不累。

那么,计算机执行一个语句耗费的时间是多少呢?

以51型单片机为例:如果采用12MHz的晶振,运行一个机器周期为1微秒,具体为什么暂时不管。单片机的指令系统分为单周期、双周期和三周期指令(三周期实际上占用四个周期,多余一个周期浪费掉),这是有指令的内容决定的,内容多的单周期执行不完,肯定要延长了。子程序里面的MOV是单周期、DJNZ是双周期。

这样,我们就可以算算这个子程序累计进行了多少个周期,然后乘以1微秒,就算出它占用的时间,也就是延时的时长了!

第一句:DELAY: MOV R7,#250 ;执行了一次,没有任何语句跳转给它,单周期。1

第二句:D1: MOV R6,#250 ;执行了250次,全部是第四句跳过来的,单周期。250

第三句:D2: DJNZ R6,D2 ;原地执行了250次,从第二句顺延(第二句执行完,没有其它跳转的话肯定要执行第三句)过来250次,也就是250*250=62500次,双周期*2。125000

第四句:DJNZ R7,D1 ; 从第三句顺延过来250次,双周期*2。500

总计:1 250 125000 500=1257501次,乘以1微秒,换算约为0.13秒。

我们可以通过调整R6、R7的数值来调整延时的长度。事实上,8位计算机中,R6之类的工作寄存器地址最大只能放下255的十进制数值,因此要通过上述程序达到更长的延时是办不到的。

那怎么办呢?

我们可以再增加一个R4,让上述的程序最多可以循环255遍,这样,0.13秒的200多倍就是30秒上下了,不够的话再增加循环,又可以扩大200多倍,当然,工作寄存器的数量是有限的,因此这个延时程序也是有限的,如果还不够用怎么办呢,就目前我所学的知识,只能在母程序里面设置循环了,也就是让这个子程序在母程序里面继续循环......

相关阅读

作为电气工程师,PLC你可否了解?先简单介绍一下,科普涨知识

这篇文章主要先讲讲PLC的特点及其应用领域,PLC的诞生给工业控制带来了一次革命性的飞跃,与继电器、微机控制相比,PLC有它独特之处,下面来看一下PLC的特点及其应用领域,说的不...
2023-06-13
作为电气工程师,PLC你可否了解?先简单介绍一下,科普涨知识

真话:电工工具箱里,这4样“神器”比黄金还管用

别以为电工工具箱就是锤子、螺丝刀的简单堆砌。对一线电气人来说,一套顶配的工具箱,就是吃饭的家伙,更是保命的底牌。 很多人买工具只图便宜,结果干活时掉链子、费力气,甚至留下...
2026-04-14

为什么室外照明灯具要增加漏电保护?

室外照明灯具要增加漏电保护,主要是为了保障人身安全和设备运行安全。室外环境复杂,灯具易受潮湿、日晒、雨淋等因素影响,绝缘老化风险高,且人员接触概率大,一旦发生漏电,极易导致...
2026-06-11

高诱电系积层陶瓷电容的老化特性

高诱电系陶瓷电容器,主要构成成分为钛酸钡(BaTiO3)。本系列电容器具有静电容量随着时间的推移而变小的现象。这个现象就叫作静电容量的老化特性。 BaTiO3系是下图1所示的钙钛框...
2023-03-31

什么叫微波通信?

微波是一种频率很高,波长很短的无线电波。其频率从300MHz到300 000MHz,对应的波长为1m到1mm,微波段所占的频带宽度为几十万兆赫。利用微波来传递信息称为微波通信。目前在电力系统...
2023-06-13
什么叫微波通信?

热销商品

德国进口雅马哈风力灭火机大功率手提森林灭火器落叶工地吹雪机汽

德国进口雅马哈风力灭火机是一款高效、可靠的森林灭火和清理设备。它拥有大功率风机,能够迅速吹散落叶、杂草和积雪,有效清理工地和森林地面。这款灭火机采用先进技...
¥ 692.5

3M自粘橡胶条高硬度耐压实心幕墙玻璃舞台搭建货架专用减震密封条

3M自粘橡胶条是一款专为高要求工业及建筑场景设计的高性能密封减震材料,采用高硬度实心橡胶材质,具备优异的耐压性、抗老化性和持久弹性。其独特的自粘背胶设计,安装...
¥ 1.6

公牛官方旗舰店开关插座空调16A插座五孔10A面板暗装多孔G12白灰

公牛官方旗舰店提供一系列高质量的开关插座和空调配件。这款16A插座五孔面板采用暗装设计,适用于多种安装环境,如墙面、天花板等。它具有10A的电流容量,可以满足家庭...
¥ 5.55

电位器旋钮电流调节螺帽直流逆变电焊机二保焊送丝机通用旋钮B102

电位器旋钮电流调节螺帽适用于直流逆变电焊机和二保焊送丝机,是一款通用的旋钮B102。该旋钮采用优质材料制造,具有耐磨损、耐高温、耐腐蚀等特点,能够长时间稳定运行...
¥ 0.7

西门子开关插座无框皓彩米绒白亚光二三插USB10A五孔一开旗舰店

西门子开关插座无框皓彩米绒白亚光二三插USB10A五孔一开旗舰店,作为西门子品牌的专卖店,提供了一系列高品质、设计新颖的家居电气产品。这里销售的开关插座采用无框...
¥ 8.77

网站栏目