【51单片机】延时函数计算问题以及如何准确延时
几种周期介绍
周期名称 | 描述 | 时间 |
振荡(时钟) | 单片机提供时钟脉冲信号的振荡源的周期 | 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文档中查阅 (授人以鱼不如授人以渔)
延时函数计算
示例:
void delay(uint z){uint i,j;for(i=z;i>0;i--)for(j=0;j<921;j++);}
分析:
1.先计算你单片机的振荡(时钟)周期 T= 1/晶振(11.0592MHZ)
2.一次i--操作为12T
3.忽略变量定义,上述延时函数共需时间:921*z*12T
4.带入T:921*12*T*z 约为 z ms
计算出现误差的原因
1.软件仿真时,函数调用的时候入栈出栈操作的耗时。
2.指令周期随指令的不同而不同导致的误差。
3.中断的影响。
4.变量的范围超过,从而与预计时间不一样。
所以实际上我们应该只能算出估计值,根据最开始周期的信息来计算延时函数中延时的时长。
【51单片机】延时函数计算问题以及如何准确延时相关推荐
- 51单片机主函数实现P1口120ms间隔从P1.7口向右循环进行流水灯每次只能亮一个,进入外部中断是进行120ms的延时灯的亮灭各一次
51单片机主函数实现P1口120ms间隔从P1.7口向右循环进行流水灯每次只能亮一个,进入外部中断是进行120ms的延时灯的亮灭各一次 #include <reg51.h> #includ ...
- 51单片机定时器初值计算以及初值计算软件
51单片机定时器初值计算以及初值计算软件 不想搞懂计算原理的直接跳到文章末尾,使用初值计算软件来解决有关初值计算的问题 51单片机定时器初值计算部分 时钟周期,也称为振荡周期:定义为时钟脉冲的倒数,在 ...
- c51语言双层for循环延时2ms,51单片机利用for语句嵌套实现简单的延时1s功能
原标题:51单片机利用for语句嵌套实现简单的延时1s功能 51单片机利用for语句嵌套实现简单的延时1s功能 名词解释: (1)时钟周期.定义为时钟频率的倒数,本例使用12MHz的时钟频率,它的时钟 ...
- 【单片机高阶编程】51单片机定义函数到指定的程序地址
51单片机如何将函数 定义到指定程序地址 在单片机编程使用中,会涉及到将某些函数定义到指定的code区.此时需要对工程文件进行配置修改才可完成.本期针对单片机平台做出说明介绍 1.测试目标 将函数te ...
- 51单片机定时器频率计算
频率是周期的倒数 51单片机定时器中TH与TL可以改变周期来改变频率. 举例如下 3000us=3ms=0.003s T=0.003s频率=333HZ 2000us=2ms=0.002s ...
- 51单片机定时器初值计算详解
前言: 本文详细介绍了51单片机学习过程中定时器的初值计算问题以及相关概念,力求把每一个学习过程中的可能会遇到的难点说清楚,并举相关的例子加以说明.学习完毕,又顺手利用刚学到定时器的相关知识写了一个& ...
- 51单片机定时器初值计算
**菜鸟关于51类单片机的定时器初值计算问题的计算**首先先来介绍单片机的几个周期: 1.时钟周期,也称为振荡周期:定义为时钟脉冲的倒数,在单片机中也就等于晶振的倒数. 51单片机中把一个时钟周期定义 ...
- 51单片机定时器参数计算
文章目录 计算 相关文档 寄存器 TCON TMOD 模式0 模式1 模式2 模式3 15系列单片机计算 计算 晶振为:12MHz 定时器0,16位定时器模式 TMOD & = 0xF0; T ...
- 51单片机定时器中断按键消抖(无延时)
单片机入门学习记录(二) 在机械按键的触点闭合和断开时,都会产生抖动,为了保证系统能正确识别按键的开关,就必须对按键的抖动进行处理.按键的抖动对于人类来说是感觉不到的,但对单片机来说,则是完全可以感应 ...
最新文章
- matlab固定床反应器,合成气完全甲烷化固定床反应器数值模拟
- winform 在指定目录下已经生成资源Image图片的方式
- 第一篇 献给一次线上100%CPU
- [lwip-users] memp_malloc: out of memory in pool TCP_PCB
- 算法分析中递推式的一般代数解法
- java高并发(十九)死锁、spring线程安全
- 论文浅尝 | 基于知识库的类型实体和关系的联合抽取
- HTML5-Tab标签
- DelayedOperation分析
- 笨办法学 Python · 续 练习 8:`cut`
- Java继承、封装、多态
- 1.6 回归评估准确性的指标
- 富士通Fujitsu DPK700S 打印机驱动
- iOS 不能播放远程视频(Android 可以)的问题
- UE4_Shader Compile 停在某一帧或者新建材质出现卡死
- 通过url获取域名和协议,一级域名,二级域名 python
- 计算机无法关闭开机密码,电脑开机密码怎么取消
- 22. CTF综合靶机渗透(十五)
- pptpd 安装步骤
- 金斧子银斧子和铁斧子
热门文章
- Discuz论坛附件下载权限绕过漏洞
- 解决无法从公司 Maven 私服下载依赖的问题
- windwos powershell
- Alibaba大牛常读的10本Java实战书籍,(Java开发进阶必备书单),可以白嫖了
- OBS无图像(黑屏)的终极解决办法(含切换集显无效办法)
- 有各组方差怎么算组间平方和_#excel单因素方差分析#excel如何计算组间离差平方和...
- Loadrunner分析
- sql server 2008 R2 与 sql server 2012 下载地址(包括x86、x64)
- 今天是国际数学日,既是爱因斯坦的生日又是霍金的忌日
- JavaScript Array数组slice方法的使用