这个是根据“at89c51 单片机 汇编 实验 教程 刘健老师”的哔哩哔哩视频教程整理的,敲了一边。
希望对和我一样的初学者有用。
延时程序精确分析过程
在单片机的控制应用中,常有延时的需要,CPU过一段时间再去作某件事情,称之为延时。延时有两种方法,即软件延时和硬件延时.硬件延时是通过定时/计数器来实现的,这种方法不占用CPU 的工作时间。软件延时一般采用循环程序,通过CPU执行具有固定延迟时间的循环体来实现的。
延时程序的延时时间主要与两个因素有关,一是所用晶振,二是延时程序中的循环次数,一旦晶振确定之后,则主要是如何设计与计算需给定的延时循环次数。
设单片机的晶振频率为6MHz,则一机器周期为2us;
设单片机的晶振频率为12MHz,则一机器周期为1us;
汇编语言常用延时程序所用到的指令
指令 占用的机器周期数
MOV Rn,#Data 1
DJNZ Rn,Rel 2
RET 2
NOP 1
ACALL Addr11 2
LCALL Addr16 2
ADD A,Ri 1
INC DPTR 2
基本延时程序模式及延时时间的计算
分以下几种情况:
1、单循环延时程序
DEL2: MOV RO,#X ; 1 周期
DEL1: DJNZ RO,DEL1 ; 2周期
RET ; 2周期
延时时间=2*X*T+1*T+2*T=(2X+3)T
整个程序的延时时间范围:
以晶振频率6MHz 为例:10us<=t<=1030us
以晶振频率12MHz为例:5us<=t<=515us
延时时间的范围的计算
设X 是装入寄存器R0的时间常数,R0是8位寄存器(以下的 R1、R2、R 均为 8 位),因为 0<=R0<=255,R0=0,延时时间最长,R0=1,延时时间最短。当 Ri=0时,由汇编语言的特征知其将从零开始判断,共256次,所以应在公式中代入256,因此这个程序的最长定时时间为1030us。
完整的pdf格式文档51黑下载地址(共140页):
51单片机 汇编.pdf
(11.9 MB, 下载次数: 31)
|