找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1661|回复: 5
打印 上一主题 下一主题
收起左侧

关于单片机汇编语言延时程序的小疑惑

[复制链接]
跳转到指定楼层
楼主
在我的理解中按顺序执行程序的话应该是在8那里循环250次,然后在9那里循环250*250=62500,一共就是62500+250=62750,教程里讲解说62500次,我有点不是很明白,还是说7和8是被6包括在里面的,求解答

7a83fd0ef5d84cbdf253f651hei993dc3.jpg (6.05 MB, 下载次数: 101)

7a83fd0ef5d84cbdf253f651hei993dc3.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:401564 发表于 2021-1-6 08:53 | 只看该作者
循环的次数就是250*250呀,你这+250什么意思?
教材说的是"循环次数",并不是执行时间,执行时间是要计算上6和7,
而且,MOV指令是要一个时钟,而DJNZ是要两个时钟的
整个的执行时间是:1+250+250*250*2+250*2+2
分别对应的是6,7,8,9,10
但一般来说,在长延时里,主要的延时都是在8和9,其它的都可以不计算在内的,因为它占的时间是很少的,而且晶振也会有一定的误差
以上对应的是传统的8051系统
而常用的STC指令执行时间和传统的8051是不一样的
如果学汇编,你是一定要会计算这个的,当你学会计算这个之后,就可以在STC下载器那直接复制就行了

回复

使用道具 举报

板凳
ID:235200 发表于 2021-1-6 13:51 | 只看该作者
在9那里循环250*250=62500次是对的,但对延时时间来说,9处的250次循环要包括(7的1T,8的2T*250 9的2T),所以总延时时间是:6处1T 7处250T 8处的500T*250  9处的2T*250  10处的2T ,所有时间加起来就是延时时间,其中T代表1个机器周期时间
回复

使用道具 举报

地板
ID:864648 发表于 2021-1-6 15:09 | 只看该作者
Y_G_G 发表于 2021-1-6 08:53
循环的次数就是250*250呀,你这+250什么意思?
教材说的是"循环次数",并不是执行时间,执行时间是要计算上6和 ...

他这是在6运行完直接到9吗
回复

使用道具 举报

5#
ID:401564 发表于 2021-1-6 17:29 | 只看该作者
Johncui 发表于 2021-1-6 15:09
他这是在6运行完直接到9吗

一步一步来的
你去看一下这DJNZ指令的含义就知道了,它要执行到条件满足了才执行下一个指令的
回复

使用道具 举报

6#
ID:864648 发表于 2021-1-6 19:27 | 只看该作者
Y_G_G 发表于 2021-1-6 17:29
一步一步来的
你去看一下这DJNZ指令的含义就知道了,它要执行到条件满足了才执行下一个指令的

ok,谢谢啦
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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