专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

单片机的汇编延时程序

作者:佚名   来源:本站原创   点击数:  更新时间:2012年10月11日   【字体:
50ms延时;一般书上的程序

DEL: MOV R7,#200

LO:   MOV R6,#123

        NOP

L1:   DJNZ R6,L1

        DJNZ R7,L0

        RET

但是这个程序实际上延时50.001ms,多了一个机器周期,
其实这个问题是不可能由一个二重循环实现精确延时的,必须采用三重循环

我的程序;

DEL: MOV R5,#29

L0:    MOV R7,#22

L1:    MOV R6,#6

L2:    DJNZ R6,L2

         DJNZ R7,L1

         DJNZ R5,L0

         RET

此时精确延时50ms,并且三个寄存器里的数值是可以变化的,这里要讨论的是,为什么不能,或说不容易用一个二重循环去实现一些精确的延时程序,而三重循环确一般是可以的,在数学上,是一些函数数值的遍历性,他与连续函数的因连续而具有的介值性有所不同,是不是也存在一些值,用三重循环也不能实现呢?于是我们开始使用四重?充要条件是什么呢?
关闭窗口

相关文章