请帮忙解释下这段汇编语言的意思:DELAY:MOV R7,#250 D1:MOV R6,#250 D2:DJNZ R6,D2 DJNZ R7,D1 RET

来源:学生作业帮助网 编辑:作业帮 时间:2024/07/14 14:16:36
请帮忙解释下这段汇编语言的意思:DELAY:MOV R7,#250 D1:MOV R6,#250 D2:DJNZ R6,D2 DJNZ R7,D1 RET
xRmOP+MAam%ƒ#4DAeabƤ^"cf (I%`cs^`?@ܞ{4NQеhk/y2Z'9uj% 1>7;7M޻ M.pȮUn}5ck"OL%gX1N%ǔwP^MjD gG/bqU[X銊*㺒 x"xfP6)6vs NRsF⯼G{|TvA@"k>jIPힵNVrHv>fԋ;Q1 u1TQJ^tn[/C D4U\D~}+C蘌 G{-6!w8d7=_C"v=d :lRcX35#>$ K0xQQYH5GRD&=4O

请帮忙解释下这段汇编语言的意思:DELAY:MOV R7,#250 D1:MOV R6,#250 D2:DJNZ R6,D2 DJNZ R7,D1 RET
请帮忙解释下这段汇编语言的意思:DELAY:MOV R7,#250 D1:MOV R6,#250 D2:DJNZ R6,D2 DJNZ R7,D1 RET

请帮忙解释下这段汇编语言的意思:DELAY:MOV R7,#250 D1:MOV R6,#250 D2:DJNZ R6,D2 DJNZ R7,D1 RET
以上汇编转化为C语言为:
void delay() {
for(R7=250;R7>0;R7--)
for(R6=250;R6>0;R6--);
}
这是执行一段延时.原理是:
执行一个语句需要消耗1到2个机器时间,除法的更长;
1个机器时间和晶振频率有关,一般单片机都是t=12/f,比如当晶振频率是12MHz的时候,1个机器时间是t=12/12MHz=1us
然后看循环R7*R6=62500次,
对于MOV R6,#250共执行250次,DJNZ R6,D2执行62500次,DJNZ R7,D1执行250次,则每句消耗2个机器时间有:
T=(250+62500+250)*2=126000us=126ms=0.126s
故延时越0.126秒