首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hcs12延迟周期的计算

hcs12延迟周期的计算
EN

Stack Overflow用户
提问于 2016-03-20 21:27:25
回答 1查看 2.5K关注 0票数 0

我试图计算HCS12的指令周期和延迟周期。我有一些关于HCS12的信息

HCS12使用总线时钟(E时钟)作为定时参考。

  • E时钟的频率是星载时钟振荡器的一半(时钟,48 MHz,E时钟,24 MHz)。
  • 指令的执行时间也用E时钟周期来测量。
  • 我想知道24 the是晶体频率吗?如果是这样的话,只有一半的晶体振荡器频率用于CPU指令时间。那么,应该减半吗?
  • 我如何使一个24兆赫总线时钟演示板100毫秒的时间延迟?

为了创建一个100 ms的时间延迟,我们需要重复前面的指令序列60,000乘以100 ms之和(40乘24,000,000)μs = 60,000。下面的指令序列将创建所需的延迟:有一个示例,但我不明白如何计算6000040值。

代码语言:javascript
复制
           ldx #60000       
loop       psha              ; 2 E cycles
           pula              ; 3 E cycles
           psha              ; 2 E cycles
           pula              ; 3 E cycles
           psha              ; 2 E cycles
           pula              ; 3 E cycles
           psha              ; 2 E cycles
           pula              ; 3 E cycles
           psha              ; 2 E cycles
           pula              ; 3 E cycles
           psha              ; 2 E cycles
           pula              ; 3 E cycles
           psha              ; 2 E cycles
           pula              ; 3 E cycles
           nop               ; 2 E cycles
           nop               ; 3 E cycles
           dbne x,loop
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-22 12:32:49

您的第一节解释,如果内部振荡器(或外部晶体)为48 MHz,EClock为24 MHz。因此,如果您想延迟100毫秒,即24,000,000 * 100 / 1,000 EClocks,即2,400,000个指令周期。

可用的最大寄存器大小为16位,因此选择了一个循环计数器值,即<= 65535。

方便地说,60,000是2,400,000,即60,000 * 40。因此,内环设计为40个周期。然而,最后3行的计时注释是不正确的,它们应该是

代码语言:javascript
复制
nop               ; 1 E cycle
nop               ; 1 E cycle
dbne x,loop       ; 3 E cycles

给出所需的40个周期执行时间。

请注意,如果您有中断,其他进程,这种硬编码的方法并不是非常准确,而计时器中断会更好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36119816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档