延迟子程序时间计算

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 内执行。