50ms延時;一般書上的程序
DEL: MOV R7,#200
LO: MOV R6,#123
NOP
L1: DJNZ R6,L1
DJNZ R7,L0
RET
但是這個程序?qū)嶋H上延時50.001ms,多了一個機(jī)器周期,
其實(shí)這個問題是不可能由一個二重循環(huán)實(shí)現(xiàn)精確延時的,必須采用三重循環(huán)
我的程序;
DEL: MOV R5,#29
L0: MOV R7,#22
L1: MOV R6,#6
L2: DJNZ R6,L2
DJNZ R7,L1
DJNZ R5,L0
RET
此時精確延時50ms,并且三個寄存器里的數(shù)值是可以變化的,這里要討論的是,為什么不能,或說不容易用一個二重循環(huán)去實(shí)現(xiàn)一些精確的延時程序,而三重循環(huán)確一般是可以的,在數(shù)學(xué)上,是一些函數(shù)數(shù)值的遍歷性,他與連續(xù)函數(shù)的因連續(xù)而具有的介值性有所不同,是不是也存在一些值,用三重循環(huán)也不能實(shí)現(xiàn)呢?于是我們開始使用四重?充要條件是什么呢?