延迟子程序时间计算
Delay Subroutine Time Calculation
如何计算PIC中子程序消耗的总时间?假定 PIC 主时钟来自 1MHz crystal。这是给出的代码:
TEMP EQU 0x1D
DELAY MOVLW 0x80
MOVWF TEMP
NOP
DELAY1 NOP
DECFSZ TEMP,F
GOTO DELAY1
RETURN
我算了一下总共有518个指令周期,Q-cycles总数=2072。
如果时钟频率为 2MHz,我将如何继续?谢谢
所有 8 位数据路径 PIC 控制器在 1 个指令周期内使用 4 个振荡器时钟。改变振荡器频率不会改变这种关系。
您发布的代码总是在 518 个指令周期内执行。
当振荡器频率从 1 MHz 变为 2 MHz 时,代码的执行时间会缩短,但仍会使用相同数量的指令周期。
对于 8 位 PIC:
instruction cycle Time = 4 / fOzs
1MHz表示指令周期为4us。所以您的代码将在 518 x 4us = 2,072ms 内执行。
2MHz表示一个指令周期为2us。所以您的代码将在 518 x 2us = 1,036ms 内执行。
如何计算PIC中子程序消耗的总时间?假定 PIC 主时钟来自 1MHz crystal。这是给出的代码:
TEMP EQU 0x1D
DELAY MOVLW 0x80
MOVWF TEMP
NOP
DELAY1 NOP
DECFSZ TEMP,F
GOTO DELAY1
RETURN
我算了一下总共有518个指令周期,Q-cycles总数=2072。 如果时钟频率为 2MHz,我将如何继续?谢谢
所有 8 位数据路径 PIC 控制器在 1 个指令周期内使用 4 个振荡器时钟。改变振荡器频率不会改变这种关系。
您发布的代码总是在 518 个指令周期内执行。
当振荡器频率从 1 MHz 变为 2 MHz 时,代码的执行时间会缩短,但仍会使用相同数量的指令周期。
对于 8 位 PIC:
instruction cycle Time = 4 / fOzs
1MHz表示指令周期为4us。所以您的代码将在 518 x 4us = 2,072ms 内执行。
2MHz表示一个指令周期为2us。所以您的代码将在 518 x 2us = 1,036ms 内执行。