汇编延时程序 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毫秒?
展开
 我来答
百度网友bd4cf2a31
2011-03-16 · TA获得超过332个赞
知道小有建树答主
回答量:333
采纳率:100%
帮助的人:349万
展开全部
你先看下这段延时程序:
采用12M晶振,用51芯片处理。
DELAY: MOV R7,#250;
D1:MOV R6,#250;
D2:DJNZ R6 ,D2;
DJNZ R7,D1;
RET
以上是一段延时0.125秒的程序。
它计算的原理是:
这段程序最终执行了250*250次,而DJNZ指令执行需要2个机器周期,一个机器周期需要1微秒的时间,所以以上延时程序就是250*250*2=0.125秒。
你的程序原理跟这个应该是一样的~
chxiququan
推荐于2017-11-24 · TA获得超过649个赞
知道小有建树答主
回答量:273
采纳率:50%
帮助的人:216万
展开全部
YS2:MOV R4 ,#10 给R4置入初值10
D2:MOV R5,$ 给R5置入当前地址
DJNZ R4,D2 R4减1不为0跳到D2处
RET R4为0时子程式结束返回

延时4.74毫秒是与晶振有关的。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户46339
2011-03-17 · TA获得超过663个赞
知道答主
回答量:627
采纳率:0%
帮助的人:0
展开全部
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
适当选择各循环常数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式