微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > MCS51汇编精确延时程序分析

MCS51汇编精确延时程序分析

时间:11-24 来源:互联网 点击:
将以12MHZ晶振为例,详细讲解MCS-51单片机汇编程序延时的精确算法。

指令周期、机器周期与时钟周期
时钟周期:也称为振荡周期,一个时钟周期 = 晶振的倒数。
若干个时钟周期组成一个机器周期,用来完成一个基本操作。机器/总线周期是CPU通过总线与外部逻辑(存储器或I/O端口)进行一次通讯所需的时间。
指令周期由若干个机器周期组成,CPU执行一条指令所需的时间。指令不同,所需的机器周期也不同。

MCS-51单片机的一个机器周期 = 6个状态周期 = 12个时钟周期。
MCS-51单片机的指令有单字节、双字节和三字节的,它们的指令周期不尽相同,一个单周期指令包含一个机器周期,即12个时钟周期,所以一条单周期指令被执行所占时间为12*(1/12000000)=1μs。

1秒延时程序:
DEL:
MOV R7,#10
DEL1:
MOV R6,#200
DEL2:
MOV R5,#248
NOP
DJNZ R5,$
DJNZ R6,DEL2
DJNZ R7,DEL1
RET
延时机器周期数 = [(2*第一层循环+3)*第二层循环+3]*第三层循环+3
其中3,其一是MOV R7,#10贡献的,其二是RET贡献的。
第一层循环为最内循环。
未考调用时间,单片机小精灵里认为调用时间固定为2个机器周期。
NOP机器周期数 = 第一层循环 * 第二层循环
结果为1000031us = 1.000031s

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top