历史上的今天
返回首页

历史上的今天

今天是:2025年05月04日(星期日)

2018年05月04日 | 【51单片机】延时函数计算问题以及如何准确延时

2018-05-04 来源:eefocus

几种周期介绍


周期名称描述时间
振荡(时钟)单片机提供时钟脉冲信号的振荡源的周期T=1/f
状态振荡周期经二分频后得到的2T
机器在一个机器周期内,CPU可以完成一个独立的 操作12T
指令指CPU完成一条操作所需的全部时间12-12nT


指令:

1、MUL、DIV:仅有的4周期指令

2、包含DPTR和PC的指令均为2周期指令

3、所有的绝对跳转和条件转移指令,均为2周期指令

4、所有包括A寄存器的指令,均为单周期指令

5、位操作指令中,ANL和ORL是2周期指令

6、所有包含立即地址的指令,除INC direct及DEC direct外,均为2周期指令

7、剩下的均为单周期指令。


STC-ISP软件查看各操作用时以及延时函数




_nop_函数可以在keil软件的C51->HLP->C51lib.chm文档中查阅  (授人以鱼不如授人以渔)




延时函数计算


示例:


  1. void delay(uint z)  

  2.   

  3. {  

  4.   

  5.     uint i,j;  

  6.   

  7.     for(i=z;i>0;i--)  

  8.   

  9.         for(j=0;j<921;j++);  

  10.   

  11. }  


分析:


1.先计算你单片机的振荡(时钟)周期 T= 1/晶振(11.0592MHZ)

2.一次i--操作为12T

3.忽略变量定义,上述延时函数共需时间:921*z*12T

4.带入T:921*12*T*z 约为 z ms



计算出现误差的原因


1.软件仿真时,函数调用的时候入栈出栈操作的耗时。

2.指令周期随指令的不同而不同导致的误差。

3.中断的影响。

4.变量的范围超过,从而与预计时间不一样。


所以实际上我们应该只能算出估计值,根据最开始周期的信息来计算延时函数中延时的时长。


推荐阅读

史海拾趣

AB Connectors Ltd公司的发展小趣事

在快速发展的过程中,AB Connectors Ltd始终将品质管理放在首位。公司建立了完善的质量管理体系,从原材料采购、生产加工到产品出厂检验等各个环节都实行严格的质量控制。此外,公司还引进了先进的生产设备和检测技术,不断提高产品的精度和稳定性。这些措施有效提升了产品的品质水平,赢得了客户的信任和好评。

ELMEC Technology Of America Inc公司的发展小趣事

在电子行业,技术创新是企业持续发展的关键。为了保持竞争力,ELMEC不断投入研发资金,引进高端人才,加强技术创新。他们与多所知名大学和研究机构建立合作关系,共同开展前沿技术研究。这些努力使得ELMEC在人工智能、物联网等新兴领域取得了多项重要突破,为公司的发展注入了新的活力。

静芯微电子(ElecSuper)公司的发展小趣事

静芯微电子(ElecSuper)成立于XXXX年,由一群富有远见和热情的电子工程师共同创立。公司从一开始就专注于ESD(静电放电)/TVS(瞬态电压抑制器)系列器件的研发,致力于为客户提供高质量的静电保护和电压稳定解决方案。通过不断的技术创新和产品优化,静芯微电子逐渐在ESD/TVS领域取得了突破,并积累了大量的客户基础。

台湾岱恩(DAIN)公司的发展小趣事

静芯微电子深知产品质量对于企业的重要性,因此建立了完善的质量管理体系。公司从原材料采购、生产制造到产品检测等各个环节都实行严格的质量控制和管理,确保每一款产品都符合高标准的质量要求。同时,静芯微电子还引进了先进的检测设备和技术手段,对产品质量进行全面检测和评估。这些措施保证了静芯微电子产品的稳定性和可靠性,赢得了客户的信任和好评。

福斯特半导体(Foster)公司的发展小趣事

静芯微电子深知产品质量对于企业的重要性,因此建立了完善的质量管理体系。公司从原材料采购、生产制造到产品检测等各个环节都实行严格的质量控制和管理,确保每一款产品都符合高标准的质量要求。同时,静芯微电子还引进了先进的检测设备和技术手段,对产品质量进行全面检测和评估。这些措施保证了静芯微电子产品的稳定性和可靠性,赢得了客户的信任和好评。

Equinox公司的发展小趣事

1991年,在纽约的上西区,一个名叫Equinox的健身俱乐部悄然开业。它的创始人凭借对健身行业的热情和对高端市场的敏锐洞察,将Equinox定位为一家提供豪华健身体验的俱乐部。通过提供优质的设施、个性化的服务和丰富的课程,Equinox很快在上西区树立了良好的口碑。

问答坊 | AI 解惑

SJA1000独立的CAN控制器.

关键词SJA1000,CAN控制器.本文将很详细的介绍SJA1000芯片来独立的做CAN控制器.…

查看全部问答>

各位大虾谁能给我个《plug and play system architecture》?非常感谢

各位大虾谁能给我个《plug and play system architecture》?非常感谢, 我的邮箱jerk66@163.com…

查看全部问答>

问一下MSP430f42xx里的SAD( Sigma-Delta A/D)怎么用啊?

本帖最后由 paulhyde 于 2014-9-15 09:44 编辑 Sigma-Delta A/D 原理基本不懂····和逐次比较的有什么不同?还有怎样操作它?  …

查看全部问答>

基于ARM与SD卡的大容量数据存储技术的应用研究

0 引言   在现场测控系统中,RTU(远程测控终端)存储容量、存储数据的转移问题始终是RTU的重要环节。RTU的存储容量一般为几十K~几百K字节,数据转移通常采用不掉电静态RAM、EEPROM存储模块,或采用便携式计算机通过串行口读取RTU数据。 ...…

查看全部问答>

【悬赏求助】launchpad捕获按键按下的时间

最近在学习launchpad,中断方面困难重重。。。我想实现这样一个功能:P1.1设为输入,连接一个按键,然后利用中断判断按键按下的时间,要是短按的话就LED1翻转,长按的话LED2翻转。这样的话,我知道应该用捕获模式获取时间信息对吧,但是实现过程一 ...…

查看全部问答>

MSP430硬件I2C程序

MSP430硬件I2C程序,已测试通过,有兴趣的可探讨探讨…

查看全部问答>

想玩LCD AND TOUCH BOOSTERPACK的坛友们请看进来

小版今天把手上给LCD AND TOUCH BOOSTERPACK准备的物料都用了,一共做了4个BOOSTERPACK。 其中000号留在我这儿做进一步的开发和调试;001号还有他用,暂时不公布; 独乐乐不如众乐乐,002号和003号就分给坛友们一起玩。 小版收取BOOSTERPACK的工 ...…

查看全部问答>

TLV5616中文版(无乱码)

TLV5616中文版(无乱码),最好结合着英文的看。。。这样才会慢慢提高!…

查看全部问答>