51单片机延时函数

指令周期 :几个机器周期能完成一项基本操作,但一条指令常常是需要多项基本操作结合才能完成,完成一条指令所需的时间就是指令周期,当然不同的指令,其指令周期就不一样。通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。
机器周期:8051系列单片机的机器周期=12*时钟周期,之所以这样分是因为单个时钟周期根本干不了一件完整的事情(如取指令、写寄存器、读寄存器等),而12个时钟周期就能基本完成一项基本操作了。
时钟周期:时钟周期=振荡周期,名称不同而已,都是等于单片机晶振频率的倒数,如常见的外接12M晶振,那它的时钟周期=1/12M。
机器周期=12个时钟周期。
下面是三者关系图
在这里插入图片描述
一、软件延时
1.1 普通软件延时函数是这样的,在晶振频率在11.0592Mhz的时候,内层 i=114.为什么是114呢?因为程序经过在keil中运行,计算出一次自减时间约为8.7us。
所以在1ms自减运算的次数为: 1000/8.7=114
在这里插入图片描述
1.2自动 适应主时钟 的延时函数。

在这里插入图片描述
时钟频率:1秒钟CPU震动的次数;STC89C52是11.0592MHZ 也就是 11059200HZ;在1秒内有11059200个时钟周期。
//96T per loop :每一条自减语句需要96个时钟周期,需要96个脉冲
在这里插入图片描述
所以 i=MAIN_Fosc/9600;

发布了8 篇原创文章 · 获赞 10 · 访问量 1942

猜你喜欢

转载自blog.csdn.net/weixin_43573750/article/details/103044723