一、关于单片机周期的几个概念
时钟周期时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟
周期就是单片机外接晶振的倒数,例如12MHz的晶振,它的时间周期就是112us),是计算机中最基本的、最小的时间单位。
在一个时钟周期内,CPU仅完成一个最基本的动作。机器周期
完成一个基本操作所需要的时间称为机器周期。
以51为例晶振12M,时钟周期晶振周期就是112μs,一个机器周期包
含12个时钟周期,一个机器周期就是1μs。
晶振频率(MHz)
时钟周期(μs)
机器周期(μs)
12
112
1
6
16
2
110592
1110592
≈1085
指令周期:
执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需
的机器周期也不同。
对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,
立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移
指令、乘法指令,则需要两个或者两个以上的机器周期。
2延时常用指令的机器周期
指令功能
助记符
时钟周期机器周期
立即数送寄存器
MOVR
data
12
1
立即数送直接字节
MOVdirectdata
24
2
空操作
NOP
12
1
子程序调用返回
RET
24
2
寄存器减1,不为零则相对转移
DJNZR
rel
24
2
直接字节减1,不为零则相对转移
DJNZdirectrel
24
2
二、DJNZ指令详解
1指令含义
DJNZ:减1条件转移指令
这是一组把减1与条件转移两种功能结合在一起的指令,共2条。
DJNZR
,rel;R
←(R
)1
;若(R
)0,则PC←(PC)2;顺序执行
;若(R
)≠0,则PC←(PC)2rel,转移到rel所在位置
DJNZdirect,rel
;direct←(direct)1
;若(direct)0,则PC←(PC)3;顺序执行
;若(direct)≠0,则PC←(PC)3rel,转移到rel
所在位置
2DJNZR
rel指令详解例:
1
fMOVR7,5DELDJNZR7DELrel在本例中指标号DEL
步骤
执行指令
R7的值
DJNZ转移到DEL
指令执行前指令执行
顺序执行
后
1
MOVR7,5
不确定
5
2
DELDJNZR7DEL
5
4
转移到DEL
3
DELDJNZR7DEL
4
3
转移到DEL
4
DELDJNZR7DEL
3
2
转移到DEL
5
DELDJNZR7DEL
2
1
转移到DEL
6
DELDJNZR7DEL
1
0
顺序执行,循环结
束
三、51单片机延时时间的计算方法和延时程序设计
1单层循环
由上例可知,当R
赋值为几,循环就执行几次,上例执行5次,因此本例
执行的机器周期个数1(MOVR7,5)2(DJNZR7DEL)×511,以12MHz的
晶振为例,执行时间(延时时间)机器周期个数×1μs11μs,当设定立即数为
0时,循环程序最多执行256次,即延时时间最多256μs。
2双层循环
1)格r