单片机的汇编延时程序
DEL: MOV R7,#200LO: MOV R6,#123NOPL1: DJNZ R6,L1DJNZ R7,L0RET但是这个程序实际上延时50.001ms,多了一个机器周期,其实这个问题是不可能由一个二重循环实现精确延时的,必须采用三重循环我的程序;DEL: MOV R5,#29L0: MOV R7,#22L1: MOV R6,#6L2: DJNZ R6,L2DJNZ R7,L1DJNZ R5,L0RET此时精确延时50ms,并且三个寄存器里的数值是可以变化的,这里要讨论的是,为什么不能,或说不容易用一个二重循环去实现一些精确的延时程序,而三重循环确一般是可以的,在数学上,是一些函数数值的遍历性,他与连续函数的因连续而具有的介值性有所不同,是不是也存在一些值,用三重循环也不能实现呢?于是我们开始使用四重?充要条件是什么呢?
评论