计算 hcs12 的延迟周期
calculating delay cycles for hcs12
我尝试计算 HCS12 的指令周期数和延迟周期数。我有一些关于 HCS12 的信息
HCS12使用总线时钟(E时钟)作为时序
参考。
- E时钟的频率是板载时钟振荡器(clock, 48 MHz, E-clock, 24 MHz)频率的一半。
- 指令的执行时间也以E时钟周期计算
不知24Mhz是crystal频率?如果是这样,只有一半
crystal 的振荡器频率用于 CPU 指令时间。所以,
应该减半吗?
如何为带有 24 MHz 总线的演示板设置 100 毫秒的时间延迟
时钟?
为了创建 100 毫秒的时间延迟,我们需要将前面的指令序列重复 60,000 次 [100 毫秒 ÷ (40 ÷ 24,000,000) 微秒 = 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
您的第一部分解释了如果内部振荡器(或外部crystal)为 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 个周期执行时间。
注意,如果你有中断,其他进程,这种硬编码的方法不是很准确,定时器中断会更好。
我尝试计算 HCS12 的指令周期数和延迟周期数。我有一些关于 HCS12 的信息
HCS12使用总线时钟(E时钟)作为时序 参考。
- E时钟的频率是板载时钟振荡器(clock, 48 MHz, E-clock, 24 MHz)频率的一半。
- 指令的执行时间也以E时钟周期计算
不知24Mhz是crystal频率?如果是这样,只有一半 crystal 的振荡器频率用于 CPU 指令时间。所以, 应该减半吗?
如何为带有 24 MHz 总线的演示板设置 100 毫秒的时间延迟 时钟?
为了创建 100 毫秒的时间延迟,我们需要将前面的指令序列重复 60,000 次 [100 毫秒 ÷ (40 ÷ 24,000,000) 微秒 = 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
您的第一部分解释了如果内部振荡器(或外部crystal)为 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 个周期执行时间。
注意,如果你有中断,其他进程,这种硬编码的方法不是很准确,定时器中断会更好。