求高人解释单片机1秒延时程序时间算法

[复制链接]
查看11 | 回复3 | 2011-4-3 06:25:18 | 显示全部楼层 |阅读模式
for(a=number1;a0;a--)
{

for(b=number2;b0;b--)

{ _nop_();
}
}
回复

使用道具 举报

千问 | 2011-4-3 06:25:18 | 显示全部楼层
<pre class=\"replyask-text\" id=\"content-1628009\">不用太精准,
for(a=16000;a0;a--)
{

for(b=2;b0;b--)

{ _nop_();
}
}
这样设定在12M晶振下是一秒,就想知道怎么算出a=16000,b=2,仿真过了的确是1秒
回复

使用道具 举报

千问 | 2011-4-3 06:25:18 | 显示全部楼层
<pre class=\"replyask-text\" id=\"content-1635166\">真要搞清楚的话,建议你在keil里的产生汇编文件选项打开。
这是双重循环,外层16000次,内层2次nop,还要算是形成循环的几个指令,在汇编文件里你可以看得比较清楚
        MOV        R7,#080H
        MOV        R6,#03EH
?C0001:
        MOV        R5,#02H
        MOV        R4,#00H
?C0004:
        NOP       
        MOV        A,R5
        DEC        R5
        JNZ        ?C0008
        DEC        R4
?C0008:
        MOV        A,R5
        ORL        A,R4
        JNZ        ?C0004
?C0003:
        MOV        A,R7
        DEC        R7
        JNZ        ?C0009
        DEC        R6
?C0009:
        MOV        A,R7
        ORL        A,R6
        JNZ        ?C0001
?C0007:
        RET
回复

使用道具 举报

千问 | 2011-4-3 06:25:18 | 显示全部楼层
<pre class=\"replyask-text\" id=\"content-1659049\">恩,小弟会好好研究的,谢谢各路高人!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行