我试图计算HCS12的指令周期和延迟周期。我有一些关于HCS12的信息
HCS12使用总线时钟(E时钟)作为定时参考。
为了创建一个100 ms的时间延迟,我们需要重复前面的指令序列60,000乘以100 ms之和(40乘24,000,000)μs = 60,000。下面的指令序列将创建所需的延迟:有一个示例,但我不明白如何计算60000和40值。
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发布于 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行的计时注释是不正确的,它们应该是
nop ; 1 E cycle
nop ; 1 E cycle
dbne x,loop ; 3 E cycles给出所需的40个周期执行时间。
请注意,如果您有中断,其他进程,这种硬编码的方法并不是非常准确,而计时器中断会更好。
https://stackoverflow.com/questions/36119816
复制相似问题