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