汇编延时程序 5
这是一段延时4.74毫秒的汇编程序YS2:MOVR4,#10D2:MOVR5,$DJNZR4,D2RET请问他是怎么运行的?能不能给我讲讲为什么能延时4.74毫秒?...
这是一段延时4.74毫秒的汇编程序
YS2:MOV R4 ,#10
D2:MOV R5,$
DJNZ R4,D2
RET
请问他是怎么运行的?能不能给我讲讲为什么能延时4.74毫秒? 展开
YS2:MOV R4 ,#10
D2:MOV R5,$
DJNZ R4,D2
RET
请问他是怎么运行的?能不能给我讲讲为什么能延时4.74毫秒? 展开
3个回答
展开全部
YS2:MOV R4 ,#10 给R4置入初值10
D2:MOV R5,$ 给R5置入当前地址
DJNZ R4,D2 R4减1不为0跳到D2处
RET R4为0时子程式结束返回
延时4.74毫秒是与晶振有关的。
D2:MOV R5,$ 给R5置入当前地址
DJNZ R4,D2 R4减1不为0跳到D2处
RET R4为0时子程式结束返回
延时4.74毫秒是与晶振有关的。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
R7,#0FFH
DJNZ R7,$
RET
;1ms延时程序
DL1MS: MOV R5,#02H
LOOP: LCALL DL513 ;515us
DJNZ R5,LOOP
RET ;总时1034us有1.034ms
;3ms延时程序
DL3MS: MOV R4,#03H
LOOP2: LCALL DL1MS ;1036us
DJNZ R4,LOOP2
RET ;总时3117us有3.117ms
;10ms延时程序
DL10MS: MOV R6,#14H
LOOP1: LCALL DL513 ;515us
DJNZ R6,LOOP1
RET ;总时7241us只有7.241ms
;1s延时程序
DL1S:
MOV R2,#100
DJNZ R2,DL10MS ;7243us
RET ;总时724303us只有0.724303s
;5S延时程序
DL5S: MOV R3,#05H
DJNZ R3,DL1S ;724305us
RET;总时3621528us只有3.621528s
1、如此做累积误差会比较大
2、用定时器做较长时的延时精度会高一些
3、用多重循环也要比循环嵌套好些
比如:
KKKK0:MOV R2,#XX
KKKK1:MOV R3,#LL
KKKK2:MOV R4,#NN
KKKK3:MOV R5,#MM
DJNZ R5,$
DJNZ R4,KKKK3
DJNZ R3,KKKK2
DJNZ R2,KKKK1
RET
适当选择各循环常数
DJNZ R7,$
RET
;1ms延时程序
DL1MS: MOV R5,#02H
LOOP: LCALL DL513 ;515us
DJNZ R5,LOOP
RET ;总时1034us有1.034ms
;3ms延时程序
DL3MS: MOV R4,#03H
LOOP2: LCALL DL1MS ;1036us
DJNZ R4,LOOP2
RET ;总时3117us有3.117ms
;10ms延时程序
DL10MS: MOV R6,#14H
LOOP1: LCALL DL513 ;515us
DJNZ R6,LOOP1
RET ;总时7241us只有7.241ms
;1s延时程序
DL1S:
MOV R2,#100
DJNZ R2,DL10MS ;7243us
RET ;总时724303us只有0.724303s
;5S延时程序
DL5S: MOV R3,#05H
DJNZ R3,DL1S ;724305us
RET;总时3621528us只有3.621528s
1、如此做累积误差会比较大
2、用定时器做较长时的延时精度会高一些
3、用多重循环也要比循环嵌套好些
比如:
KKKK0:MOV R2,#XX
KKKK1:MOV R3,#LL
KKKK2:MOV R4,#NN
KKKK3:MOV R5,#MM
DJNZ R5,$
DJNZ R4,KKKK3
DJNZ R3,KKKK2
DJNZ R2,KKKK1
RET
适当选择各循环常数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询