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

来源:学生作业帮助网 编辑:六六作业网 时间:2024/05/11 02:14:58
请帮忙解释下这段汇编语言的意思:DELAY:MOVR7,#250D1:MOVR6,#250D2:DJNZR6,D2DJNZR7,D1RET请帮忙解释下这段汇编语言的意思:DELAY:MOVR7,#25

请帮忙解释下这段汇编语言的意思: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秒