一,单片机的延迟函数和周期计算

1 延迟函数

要想学习延迟函数内部实现原理就要学习对应的汇编代码,才可以深刻理解延迟函数的内部是实现原理

void Delay500ms(void)	//@11.0592MHz
{
	unsigned char data i, j, k;

	_nop_();
	i = 4;
	j = 129;
	k = 119;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

将上述代码转换为对应的汇编语言如下

DELAY500MS:			;@11.0592MHz
	PUSH	30H
	PUSH	31H
	PUSH	32H
	MOV		30H,#4
	MOV		31H,#129
	MOV		32H,#112
NEXT:
	DJNZ	32H,NEXT
	DJNZ	31H,NEXT
	DJNZ	30H,NEXT
	POP		32H
	POP		31H
	POP		30H
	RET

转化为汇编语言,需要计算时间的话,还需要知道指令执行的时间怎么进行计算

2 机器周期,时钟周期,指令周期

学习这个时间的计算我要学习时间周期,机器周期和指令周期
这些周期有什么用呢?这些周期是给我门用计算这个周期是要花费多少的时间

大概概述一下就是
(1)   时钟周期
时钟周期就类似于一个单位,这个时钟周期为0.09微秒
(2)   机器周期
机器周期就类似于一个指令周期的一个单位,这个机器周期默认为12个时钟周期
(3)   指令周期
当然你想缩短机器周期的时间开销,你可以调整为6个时钟周期,在默认状态下是12个时钟周期

指令周期的详细含义:
一个指令周期是完成一个指令所需要的时间,由一个机器周期或者多个组成,这个为我们后面计算时间十分重要,因为在计算时间的时候,还要计算执行指令的时间开销。

3 汇编指令

下面为一个汇编指令图的样例

这个就是那个手册里面每一个指令所需要开销所花的时间,6时钟指令我们是可以调的,这就可以让cpu的运行时间缩短一倍

在STC-ISP里面也有6T模式可以自己进行设置

我们来计算一下每一个指令所需要花的多少时间
根据手册上每一个汇编指令所需要花的时间,我们来统计
 


(1)   NOP
就是一个空操作,不执行任何的指令操作,花销是1个机器周期

(2)   PUSH
就是一个直接这个地址里面的数据进行压栈开销2个机器周期
在这里的含义为,把这个30H的数据压入,下一个PUSH也是这样的操作,两个都是开销2个机器周期。

(3)   MOV
含义为所对应的数据放入到对应的地址里面,开销为2个机器周期
就是把这个2和194分别放到30H和31H地址里面去,时间开销为2个机器周期

(4)   DJNZ

这个指令类似于循环,DJNZ  地址所表示的值  不为0所跳转的地方,每一次执行开销为2个机器周期
观察上面的代码可以看出当前地址存放的为194,然后减到0,然后跳到下一个DJNZ,但是在执行该DJNZ的时候,由跳到了NEXT,然后又执行了一次一个DJNZ,然后为0-1变成了-1,跟上面描述,为-1的时候,看作为255,此时又要执行255次,然后减到0之后就再执行一次第二个DJNZ,就结束了。

(5)   POP
就是将栈里面的数据弹出栈开销为2个机器周期。

(6)   RET
表示子程序返回开销为2个机器周期。


所以后面我们就有了467个机器周期,只需要乘以机器周期的时间开销就好了
 

4 6T模式

这个模式由上述可知,这个就是可以使得这个LED灯闪烁的更快,也就是6个机器周期执行一个指令,但是我们一般都是12个机器周期执行一个指令

特性6T模式 (1机器周期=6时钟周期)12T模式 (1机器周期=12时钟周期)
核心优势执行速度更快 (相同晶振下,速度是12T模式的2倍)兼容性和稳定性更好 (对硬件要求低,系统设计简单可靠)
执行速度⭐⭐⭐⭐⭐ ⭐⭐⭐  (相同晶振下,速度是6T模式的一半)
兼容性⭐⭐⭐ 较差 (对存储器和外围器件的工作速度要求高)⭐⭐⭐⭐⭐ 极好 (与传统低速器件兼容性强)
系统稳定性⭐⭐⭐ 要求高 (对时钟抖动、电源噪声、PCB布线更敏感)⭐⭐⭐⭐⭐  (对噪声和布线不敏感,更稳定可靠)
功耗表现⭐⭐ 相对较高 (相同晶振下,操作频率高,动态功耗大)
或 ⭐⭐⭐⭐ 可优化 (可通过降频获得同等性能并降低功耗)
⭐⭐⭐⭐ 相对较低 (相同晶振下,操作频率低,动态功耗小)
或 ⭐⭐ 为提速而增高 (为提升性能需提高晶振,导致功耗和EMI增加)
适用场景追求高性能、高处理能力的应用;可使用高速存储器的现代嵌入式系统传统工业控制、教学实验、对可靠性要求极高、使用低速外围器件的经典系统
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐