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
指令周期、机器周期与时钟周期
时钟周期:也称为振荡周期,一个时钟周期 = 晶振的倒数。
若干个时钟周期组成一个机器周期,用来完成一个基本操作。机器/总线周期是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
MCS51汇编精确延 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)