求做个汇编编程,用双层循环实现100ms的延时

来源:百度知道 编辑:UC知道 时间:2024/07/04 10:19:03
希望大家把源程序写的详细点,最好有说明。
貌似 lxhgmx 这位兄弟说的像对的
但我觉得我们平时讲的课没那么深的...
最好能简单点 像是个初学者写的..

设主频12MHz的51单片机,编一个100ms二重循环的延时程序如下,供参考。其它汇编可以类似编程。
SSSS:MOV R0,#99;本指令是单周期指令,用时1us
KKKK0:DJNZ R0,KKKKK;2us
MOV R1,#125;1us
LLLL0:DJNZ R1,LLLLL;2us
NOP;1us
NOP;1us
NOP;1us
NOP;1us
LLLLL:SJMP LLLL0;2us
NOP;1us
NOP;1us
NOP;1us
NOP;1us
NOP;1us
KKKKK:SJMP KKKK0;2us
NOP;1us
NOP;1us
NOP;1us
NOP;1us
NOP;1us
RET;2us
这段程序延时时间是
1+99*[2+1+125*(2+1+1+1+1+2)+1+1+1+1+1+2]+1+1+1+1+2=100000us=100ms
可以适当调整循环常数99、125以求减小NOP(空操作指令),使程序更加精练。
dshxxf程序不错,但延时时间是50301us,计算如下1+100*(1+2*250+3)

方法不止一种,分又不给,谁会帮你呢?

12M晶振
MOV R0,#100
MOV R1,#250
DE1: DJNZ R0,DE1
DJNZ R1,DE1
100*250*4us=100ms