55问答网
所有问题
下列51单片机延时程序中的#250,这个250是怎么来的?哪位给详细解释下?
DELAY:MOV R7,#250;
D1:MOV R6,#250;
D2:DJNZ R6,D2;
DJNZ R7,D1;
RET ;
举报该问题
推荐答案 2011-07-05
你好,这是一个延时程序,按这个程序来看是进行了两次循环。D2里面的是第一次循环,D1是第二次循环。整体的循环顺序如下:
先将R6里面的数减一,看是否为0,如果为0就顺序执行,如果不为0就继续减1看是否为0(也就是指令DJNZ的作用)。当R6中的数减为0以后,执行下一个DJNZ指令,这个就是一个大循环了。请仔细观察,当R7减1不为0时,程序又会给R6从新给250的数,那么就又会执行小循环。
也就是说,R7数每减少一次,就会完全的执行一次R6的循环。所以次数为255*255次。
关于时间的计算:如果晶振是12MHZ的话,那么没执行一条语句的时间就是1us,那么时间就是255*255us。其他不同晶振自然时间也就不一样。
最后的RET就用于返回主函数的,因为标准的程序是都要模块化的,主程序其实是很简单的。
不知道您听懂了没有,若是我说的话有错误的话请大家指出,谢谢!
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://55.wendadaohang.com/zd/FRRIeReR4.html
其他回答
第1个回答 2011-07-05
DELAY:MOV R7,#250;
D1:MOV R6,#250;
D2:DJNZ R6,D2; 250减1,直到等于0,执行下一条
DJNZ R7,D1; 250减1,直到等于0,转D1执行
RET
以16M晶振为例,每个机器周期为1us ,因为DJNZ Rx,rel 为2字节指令,执行时间2us 。
忽略MOV 指令的耗时, 这个延时循环为2*250*250=125000us=125ms本回答被提问者采纳
第2个回答 2011-07-05
这个参数纯粹是想当然。此延时程序无法得到非常准确的延时。
相似回答
用汇编
怎么
写
51单片机的延时程序
答:
和前两位的差不多,最简单的就是运用MOV赋值的,再用DJNZ递减的方式,计算出每条指令执行时间,再加上循环字数
,延时
时间按照你自己的时间编写循环次数和赋值大小;另外,你也可以用定时器编写,计算好你的延时时间,当时间达到时输出高电平,作为中断信号,返回主
程序,
执行设定延时后的目标程序。汇编和C...
...的晶体振荡器的频率是12MHz,运行
下列延时程序的
延时时间是多少_百 ...
答:
首先要明白,晶振12MHz时,机器周期1μs。MOV R7,#,指令周期1μs NOP,指令周期1μs DJNZ R,指令周期2μs RET,指令周期2μs 为计算
程序
执行时间,以注释形式给每条指令加上标号 DELAY: MOV R7
,#250
;1 LOOP2: MOV R6,#200 ;2 LOOP1:NOP ;3 NOP ;4 NOP...
关于对
单片机延时
时间的疑惑(谁
来解释
一下
,解释
的好追加50分)_百度知 ...
答:
1. 使用 RETI 是不必要的,使用 RET 并不报错。2. C调用这个汇编函数的时间,是 (5 + 5 * n)us。(假设机器周期T=1us)。3. 从仿真调试过程中,没有看到楼主所说“衰减”的现象。分析说明如下:主函数传值到R7:1us;主函数调用汇编:2us;汇编返回值(无):0us;汇编返回(RET):2us;...
单片机延时程序
精确的时间计算? DELAY:MOV R7
,#250
D1:MOV R6 ,#250...
答:
你的频率是12M就更好算,知道频率12M,那么机器周期为12乘以(1/12)=1us,以1s为例,当计
250
个数时,要用时1s乘以250=250us,再来计算定时1s计数器要溢岀多少次,也就是1000000/250=4000,这就是12M的频率下计算的方法,明白吧?你慢慢理解一下就明白了。祝你学好
单片机
。
单片机51
软件
延时
1s 晶振6M的编程
答:
MOV R3
,#250
DEL3: DJNZ R3,DEL3 ;2*2*
250
*100*10=1000000us DJNZ R2,DEL2 DJNZ R1,DEL1 RET 没有做具体计算,要准确的定时1s的话可以稍微改动一下R1R2R3的值。6M晶振则机器周期为2us,一条指令执行为2个机器周期,由此得出其延时时间 最好的方式是使用定时器中断来做
延时,
更精确 ...
大家正在搜
单片机怎么延时一分钟程序
单片机500ms延时程序
单片机延时10ms程序
单片机简单延时程序
51单片机延时程序
c51单片机延时程序
单片机10秒延时程序
单片机延时程序时间计算
单片机定时器延时程序
相关问题
请帮忙解释下这段汇编语言的意思: DELAY:MOV R7,...
51单片机中的汇编代码延时有点搞不清楚,请详细解释下子这个延...
用汇编怎么写51单片机的延时程序
51单片机延时编程
51单片机如何的到250纳秒延时
51单片机延时问题
如何计算单片机延迟程序的延迟时间
哪位单片机大神可以帮我解释一下这段延时程序(汇编语言),初学...