打印

双for循环延时时间问题

[复制链接]
1920|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lzf6929|  楼主 | 2010-10-19 22:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void delay(unsigned char b)
{     unsigned char c;
   for(;b>0;b--)
      for(c=110;c>0;c--);
}
有书上说,晶振为11.0592MHZ,c赋值为110,则延时时间为bms。但与我验证的数据有不同(晶振频率一样),与按规律推算的数据,差异很大。解释解释。
数据 c=110,b=2,延时2.3ms;c=110,b=200,延时122.3ms;c=110,b=20,延时13.6ms。

相关帖子

沙发
刘前辈| | 2010-10-20 10:48 | 只看该作者
本帖最后由 刘前辈 于 2010-10-20 10:51 编辑

验算一下即可:
_delay:
        USING        0
                       
;---- Variable 'b?040' assigned to Register 'R7' ----
; {     unsigned char c;
                    
;    for(;b>0;b--)
                     
?C0001:
        MOV          A,R7
        SETB         C
        SUBB         A,#00H
        JC           ?C0007
;       for(c=110;c>0;c--);
                       
;---- Variable 'c?041' assigned to Register 'R6' ----
        MOV          R6,#06EH
?C0004:
        DJNZ         R6,?C0004         
// 这里是不是延时 1ms?
?C0003:
        DEC          R7
        SJMP         ?C0001
; }
                    
?C0007:
        RET

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

16

帖子

0

粉丝