MCS51匯編精確延時程序分析
指令周期、機(jī)器周期與時鐘周期
時鐘周期:也稱為振蕩周期,一個時鐘周期 = 晶振的倒數(shù)。
若干個時鐘周期組成一個機(jī)器周期,用來完成一個基本操作。機(jī)器/總線周期是CPU通過總線與外部邏輯(存儲器或I/O端口)進(jìn)行一次通訊所需的時間。
指令周期由若干個機(jī)器周期組成,CPU執(zhí)行一條指令所需的時間。指令不同,所需的機(jī)器周期也不同。
MCS-51單片機(jī)的一個機(jī)器周期 = 6個狀態(tài)周期 = 12個時鐘周期。
MCS-51單片機(jī)的指令有單字節(jié)、雙字節(jié)和三字節(jié)的,它們的指令周期不盡相同,一個單周期指令包含一個機(jī)器周期,即12個時鐘周期,所以一條單周期指令被執(zhí)行所占時間為12*(1/12000000)=1μs。
1秒延時程序:
DEL:
MOV R7,#10
DEL1:
MOV R6,#200
DEL2:
MOV R5,#248
NOP
DJNZ R5,$
DJNZ R6,DEL2
DJNZ R7,DEL1
RET
延時機(jī)器周期數(shù) = [(2*第一層循環(huán)+3)*第二層循環(huán)+3]*第三層循環(huán)+3
其中3,其一是MOV R7,#10貢獻(xiàn)的,其二是RET貢獻(xiàn)的。
第一層循環(huán)為最內(nèi)循環(huán)。
未考調(diào)用時間,單片機(jī)小精靈里認(rèn)為調(diào)用時間固定為2個機(jī)器周期。
NOP機(jī)器周期數(shù) = 第一層循環(huán) * 第二層循環(huán)
結(jié)果為1000031us = 1.000031s
評論