Timer 计时器在预期时间的一半内发出中断

Timer 计时器在预期时间的一半内发出中断,timer,pic,mplab,Timer,Pic,Mplab,我在模拟器模式下使用MPLAB。我使用mplab中的“mplab代码配置器”生成了源文件,我选择了频率为8MHz的振荡器“hfint1” 计时器0已配置10秒(触发中断),但当我运行代码时,我在“秒表”中观察到中断仅在5秒后生成。如果我将计时器0设置为20秒,则中断将生成10秒。有谁能告诉我发生这种情况的确切原因和原因。您必须使用T0CON中的T0SC位为计时器选择正确的时钟源 如果你想时钟你的计时器与Fosc/4 T0SC应该是010 这意味着: T0CON1bits.T0SC = 0b010

我在模拟器模式下使用MPLAB。我使用mplab中的“mplab代码配置器”生成了源文件,我选择了频率为8MHz的振荡器“hfint1”


计时器0已配置10秒(触发中断),但当我运行代码时,我在“秒表”中观察到中断仅在5秒后生成。如果我将计时器0设置为20秒,则中断将生成10秒。有谁能告诉我发生这种情况的确切原因和原因。

您必须使用
T0CON
中的
T0SC
位为计时器选择正确的时钟源

如果你想时钟你的计时器与Fosc/4 T0SC应该是010

这意味着:

T0CON1bits.T0SC = 0b010;

确保已在“项目属性/模拟器”下设置了正确的指令频率。如果您有一个PIC16 PIC18,将其切换到2MHz(默认值为1MHz),指令频率会影响模拟器模式下的计时器0,但仍处于秒表模式,我无法通过切换到2MHz来获得准确的持续时间。我猜问题在于时钟源,它应该是Fosc/4。这意味着
T0CS=010
中的
T0CON1
请检查它现在工作正常。谢谢