1,若某一51单片机系统的晶振频率为6MHz(12MHz),试编一个延时1s(2s)的程序。
发布网友
发布时间:2022-05-02 22:54
我来回答
共2个回答
热心网友
时间:2023-10-09 19:20
;本程序所用晶振为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
热心网友
时间:2023-10-09 19:20
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
不是十分准确,能用就行了