我们用汇编语言写单片机延时10ms的程序(用的是12MHz晶振的 MCS-51),可以编写下面的程序来实现:
MOV R5,#5 ①
D1: MOV R6,#4 ②
D2: MOV R7,#248 ③
DJNZ R7,$ ④
DJNZ R6,D2 ⑤
DJNZ R5,D1 ⑥
RET ⑦
这个延时程序共有七条指令,现在就每一条指令执行的次数和所耗时间进行分析:
第一条, MOV R5,#5 在整个程序中只执行一次,且为单周期指令,所以耗时1μs,
第二条, MOV R6,#4 看⑥的指令可知,只要R5-1不为0,就会返回执行这条指令,共执行了R5次,共耗时5μs,
第三条, MOV R7,#248 同第二条类似,只要R6-1不为0,就会返回执行这条指令,同时受到外部循环R5的控制,共耗时R5*R6*1=20μs,
第四条, DJNZ R7,$ 只要R7-1不为0,就执行这条指令,同时受到外部循环的控制,由于该指令是双周期指令,共耗时为R7*R6*R5*2=9920μs,
第五条, DJNZ R6,D2 只要R6-1不为0,就反复执行此条指令(内循环R6次),又受外循环R7的控制,共耗时R6*R5*2=40μs,
第六条, DJNZ R5,D1 只要R5-1不为0,就反复执行此条指令,耗时为R5*2=10μs,
第七条, RET 此指令为双周期指令,耗时为2μs,
我们也要考虑在调用子程序时用到LCALL指令,耗时2μs,最后可以得到总的延时为:1+5+20+9920+40+10+2=9998μs=10ms
我们可以总结延时总时间的公式:
延时总时间=[(2*一层循环次数+3)*二层循环次数+3]*三层循环次数+3
注意此公式只适用于三层以内的循环
关键字:单片机 延时 汇编语言 计算方法
引用地址:
单片机延时汇编语言计算方法
推荐阅读最新更新时间:2024-03-16 14:38
基于瑞萨单片机的仪表盘(总线型)解决方案
基于瑞萨单片机的仪表盘(总线型)解决方案 仪表盘是汽车中必不可少的一部分,传统仪表盘为机电模拟式仪表盘,精确度低,易发生故障,已经远不能满足现代汽车中美观精确度高的要求,于是数字式仪表盘应运而生。 瑞萨电子正对中国汽车仪表市场开发了CAN3+、V850e/Dx3等一系列高性能MCU,为汽车低、中、高端仪表盘提供了实用、可靠的解决方案。 本方案产品内部结构图: 所用产品及功能: 类别 产品名称 功能说明 单片机 UPD780820/780822(CAN3+) 8位单片机,内置看门狗,CAN控制器,5路PWM(不含步进电机驱动);内含支持LIN的UART,可同时驱动4个步进电机;蜂鸣器驱
[单片机]
MSP430单片机实现时钟显示
MSP430系列单片机是一种超低功耗控制器,它的每一系列根据不同的需要由不同的模块组成,其FLASH系列使高效电子系统变得轻巧。FLASH存储器同时也具有很强的灵活性。同时为了在低频率振荡器的驱动下得到较高的稳定频率,某些MSP430器件上使用了锁频技术FLL或增强型锁频环技术FLL+。如MSP430F412的时钟模块中使用了FLL+技术,这样可以得到稳定的频率。 MSP430F413的典型工作电流为350uA(1MHz,3V)工作电压为1.8V—3.6V,由于它的程序代码熔丝保护,多次可擦写功能的FLASH程序存储器,96字段的LCD驱动器可以直接驱动通常应用在测量设备上的字段型LCD,从而广泛应用于要求功耗低、时钟准确度
[单片机]
基于单片机的智能密码锁
该密码锁控制器 ,键盘上有0-9个数字按键,功能键:确认和取消等,可设置复合键。密码的位数及密码可以任意设定,,当输入数字和设置的密码相同的时候,锁打开,否则无法打开。采用IIC通信方式,密码锁的密码掉电不丢失。 #include #include #define uint unsigned int #define uchar unsigned char uchar old1,old2,old3,old4,old5,old6; //原始密码000000 uchar new1,new2,new3,new4,new5,new6; //每次MCU采集到的密码输入 uchar a=10,b=10,c=10,d=10,e=10,f=
[单片机]
多CPU单片机系统设计在社区安防系统中的应用
摘要:本文较为详细地介绍基于多CPU的单片机系统设计思想,并给出它在社区安全防范系统中的应用。
关键词:多CPU 安全防范 系统设计
概述
随着人们生活水平的提高和科学技术的发展,安全防范的问题引起了越来越多的关注。人们在承受现代文明所带来的高效率、快节奏压力的同时,都希望能拥有一个安全、舒适的家庭环境。因此,越来越多的安防产品应运而生,尤其是蓬勃发展的现代化社区物业管理,通过监控网络把家庭和社区值班室紧密地联系起来,给人们的生活带来了极大的方便。但是,有些社区监控网络并不能完全履行其职责,存在一定的安全隐患。主要原因是目前大多数的监控节点都是采用1个CPU完成所有的功能,包括扫描各传输器模块状态、信息处理、数据显示、报警、
[应用]
51单片机带闰年补偿的一个时钟程序
这是我教的学生写的带闰年补偿的一个时钟,比我自己写成的还有成就感 #include reg51.h #include delay.h #define uchar unsigned char #define uint unsigned int uchar S1num; sbit RS=P1^0; sbit RW=P1^1; sbit EN=P1^2; sbit GND=P2^4; sbit K2=P2^3; sbit K4=P2^2; sbit K6=P2^1; uchar x,num,shi,fen,miao,day,mon,year,week,count; void display(); void write_com(uch
[单片机]
一种基于小功率高温无刷直流电动机驱动器设计
0 引 言 高温电机在石油测井、航天及国防等领域有广泛的应用,目前一般采用感应电机但感应电机存在功率因数低、损耗大、效率低,温升高,而且速度和功率控制电路非常复杂。无刷直流电机转子为永磁结构,转子无电流、效率高、功率密度大、驱动电路简单、控制方便,因而是替代高温感应电机的理想产品。驱动电路是无刷直流电机系统适应高温环境的关键,必须满足耐高温、可靠性高等高温环境的要求。本文针对这些要求设计开发了一种能够在高温环境下工作的小功率无刷直流电动机的驱动器。该驱动器采用了高等级的军工级器件,可驱动额定电压为12 V、额定电流小于2 A的无刷直流电机,具有开环速度调节和恒功率运行等控制功能。驱动器的逻辑部分采用高性能的单片机
[电源管理]
stc单片机用数码管显示i love you(键盘版)
#include stc12c5a.h #define uchar unsigned char #define uint unsigned int uchar led ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar key ={0xfe,0xfd,0xfb}; unsigned char get() { uchar x,y,lie,i; x=0;y=0; for(i=0;i 3;i++) { P1=key ; lie=P1&0x38; if(lie!=0x38) { x=i+1; switch(
[单片机]
一种总线式测控技术在高频开关组合电源中的应用
摘要:针对高效、低污染的绿色电源设计之需要,高可靠、易维护、功能齐备、结构紧凑的电源监控系统就显得十分必要。介绍了一种总线式测控技术在智能电源监控系统中的设计原理,并提供了总线测控接口的硬件电路与软件设计。
关键词:电源;总线式测控;单片机
如何对电源产品进行可靠、便捷的测控,是智能高频开关电源的核心问题。电源测控涉及到数据的测量、控制、通信和人机对话等技术,其中测量与控制方案的合理性是电源系统可靠性的关键。本文针对这一点,着重探讨了一种总线式测控方案在智能高频开关组合电源中的具体应用。
智能高频开关组合电源,一般采用双路市电通过电气互锁作为交流输入,并提供防雷措施和用户交流分路。其输入的交流经高频开关整流模块整流后,
[电源管理]