我尝试计算HCS12的指令周期数和延迟周期数。我有一些关于HCS12的信息
HCS12使用总线时钟(E时钟)作为时序 参考
我想知道24Mhz是晶体频率吗?如果是这样,只有一半 晶振的振荡器频率用于CPU指令时间。所以, 应该减半吗?
如何使用24-MHz总线为演示板提供100 ms的时间延迟 时钟?
为了创建100毫秒的时间延迟,我们需要重复前面的指令序列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
答案 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个周期执行时间。
请注意,如果你有中断,其他进程,这种硬编码方法不是很准确,定时器中断会更好。