找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2576|回复: 6
收起左侧

STC15W104单片机的指令周期到底是多少?

[复制链接]
ID:154074 发表于 2021-8-11 08:42 | 显示全部楼层 |阅读模式
号称“1T”,也就是一个指令周期=一个机器周期的意思吗?1T应该如何理解?
它和我们熟悉的89C52相比区别在哪里?


编辑原因:之前用延时函数举了例子,但漏洞百出,自己删了
回复

使用道具 举报

ID:154074 发表于 2021-8-11 08:52 | 显示全部楼层
刚搜到一些先自己答一下:好像机器周期还不等于振荡周期。。具体还在研究,请大神帮我解答
回复

使用道具 举报

ID:419909 发表于 2021-8-11 09:20 | 显示全部楼层
一般用官方那个自动计算生成的软件比较准确。然后再倒推实际执行周期,STC烧录工具还是比较强大的。玩得好。可以省很多工作。
回复

使用道具 举报

ID:844772 发表于 2021-8-11 09:29 | 显示全部楼层
你少算了一个数量级啊,你反汇编看看就明白了,如果i为U16,基本如下,如果char那时间就减半吧。
while(i--);
C:0x000F EF MOV A,R7        1个指令周期
C:0x0010 1F DEC R7        1个指令周期
C:0x0011 8E83 MOV DPH(0x83),R6        2个指令周期
C:0x0013 7001 JNZ C:0016        2个指令周期
C:0x0015 1E DEC R6        1个指令周期
C:0x0016 4583 ORL A,DPH(0x83)        1个指令周期
C:0x0018 70F5 JNZ C:000F        2个指令周期
回复

使用道具 举报

ID:959346 发表于 2021-8-11 09:49 | 显示全部楼层
你可以简单理解成:1T对应的指令,是指汇编指令里单指令周期的指令,并不等于C语言里的一条指令。C语言里不同指令需要使用的汇编指令条数,根据不同指令是不同的,只有 NOP 空指令一般是对应一条指令。所以你这种计算方法,算出来的时间会偏低。
回复

使用道具 举报

ID:479619 发表于 2021-8-11 09:51 | 显示全部楼层
指令周期等于多个机器周期,这个不确定的,上面那个延时函数i=10uS,ms延时函数可以根据计算用循环写
回复

使用道具 举报

ID:401564 发表于 2021-8-11 10:17 | 显示全部楼层
不用汇编的话,这T不T的无所谓了
语句不等于指令,写出来的C在不同的STC单片机所有用的时间都是不一样的
延时也不是单一的快多少倍,而是要对照指令表一个一个计算出来的,而STC15几乎是STC里头指令周期最乱的
用C语言不用管这个,下载器那有延时函数,复制粘贴它不香?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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