找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2148|回复: 5
收起左侧

老哥们请问下这个是延时多少秒

[复制链接]
ID:656094 发表于 2019-12-15 09:57 | 显示全部楼层 |阅读模式
5黑币
DELAY:                                
          MOV R7,#255
D2:     MOV R6,#255
          DJNZ R6,$
          DJNZ R7,D2
          RET

最佳答案

查看完整内容

DELAY: MOV R7,#255 ;1个机器周期 D2: MOV R6,#255 ;1个机器周期 DJNZ R6,$ ;2个机器周期 DJNZ R7,D2 ;2个机器周期 RET ;2个机器周期 系统时钟频率12MHZ,则机器周期1us。 延时时间计算如下:T=[2+255*(255*2+1+2)+1]*1us=130.818ms
回复

使用道具 举报

ID:195446 发表于 2019-12-15 09:57 | 显示全部楼层
DELAY:                 
                MOV  R7,#255        ;1个机器周期
D2:             MOV  R6,#255        ;1个机器周期
                DJNZ  R6,$        ;2个机器周期
                  DJNZ  R7,D2        ;2个机器周期
                RET                        ;2个机器周期
系统时钟频率12MHZ,则机器周期1us。
延时时间计算如下:T=[2+255*(255*2+1+2)+1]*1us=130.818ms
回复

使用道具 举报

ID:235200 发表于 2019-12-15 16:36 | 显示全部楼层
延时时间为:((255*2+3)*255+1)*机器周期
回复

使用道具 举报

ID:656094 发表于 2019-12-15 22:28 | 显示全部楼层
csmyldl 发表于 2019-12-15 16:36
延时时间为:((255*2+3)*255+1)*机器周期

0.1几秒吗
回复

使用道具 举报

ID:401564 发表于 2019-12-16 10:02 | 显示全部楼层
没有人知道,
DJNZ指令的执行时间是根据不同的硬件,不同的晶振来判断的,
刚好,晶振你没有说,硬件你也没有说。
传统的8051是按12个系统时间为一个机器周期来算的,DJNZ就是用两个机器周期(24个时钟)
而STC就神了,它每个版本的单片机执行时间是不一样的,目前我用过的有三个版本,你可以对比一下。一句话:你要自己计算的。不想自己算也行,你找到STC下载器烧录界面,里面就有自动生成延时的,点几下就可以了,这样的话,你可能就永远学不会怎么计算延时了。 51hei截图20191216094912.jpg 51hei截图20191216095053.jpg 51hei截图20191216095150.jpg
回复

使用道具 举报

ID:155507 发表于 2019-12-16 11:29 | 显示全部楼层
计算公式:延时时间=[2*R6+3]*R7+5        机器周期

循环外: 5机器周期  子程序调用 2机器周期 + 子程序返回 2机器周期 + R7赋值 1机器周期 = 5机器周期


你可能需要先了解震荡周期、时钟周期、机器周期之间的关系
因为单片机的时钟是晶振分频来的,你可以理解为每个时钟周期循环了一次,大致就是延时了一个时钟周期,所以自己去查查单片机时钟频率


5课:单片机延时程序分析
http://www.51hei.com/mcuteach/247.html

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表