计算hcs12

时间:2016-03-20 21:27:25

标签: delay microcontroller 68hc12

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

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

  • E时钟的频率是板载时钟振荡器的一半(时钟,48 MHz,E时钟,24 MHz)。
  • 指令的执行时间也以E时钟周期测量
  • 我想知道24Mhz是晶体频率吗?如果是这样,只有一半 晶振的振荡器频率用于CPU指令时间。所以, 应该减半吗?

  • 如何使用24-MHz总线为演示板提供100 ms的时间延迟 时钟?

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

           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

1 个答案:

答案 0 :(得分:1)

您的第一部分解释了如果内部振荡器(或外部晶振)为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行的时间评论是不正确的,它们应该是

nop               ; 1 E cycle
nop               ; 1 E cycle
dbne x,loop       ; 3 E cycles

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

请注意,如果你有中断,其他进程,这种硬编码方法不是很准确,定时器中断会更好。