1,若某一51单片机系统的晶振频率为6MHz(12MHz),试编一个延时1s(2s)的程序。

如题所述

;本程序所用晶振为12MHz,12周期模式

;定时时间为0.5秒的延时器
nop
LCALL DELAY ;4uS
;执行上句的时间:4+499995+1(ret时间)=0.5秒
NOP

;=======包含LCALL DELAY是0.5秒====
DELAY:
MOV R7,#9 ;1uS
DELAY1:
MOV R6,#128 ;1uS
DELAY2:
MOV R5,#215 ;=215*2=430uS
NOP ;1uS
DJNZ R5,$
;上一句执行完后用时:215*2=430uS
DJNZ R6,DELAY2
;执行完上句后用时:[430+2(是上句每次执行时间)+1(执行MOV R5的时间)+1(nop)]*128=55552uS
DJNZ R7,DELAY1
;执行完上句后用时:[55552+2(本句每次执行时间)+1(MOV R6的时间)]*9=499995uS
RET ;1uS
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-10-17
1000000US=250*40*100
DELAY:
MOV R5,#50
DL0:
MOV R6,#20
DL1:
MOV R7,#250
DJNZ R7,$
DJNZ R6,DL1
DJNZ R5,DL0
RET

不是十分准确,能用就行了本回答被提问者采纳