pic内部晶振的问题【恢复】

2020-02-10 08:36发布

pic16F676,内部晶振,用T1定时器定时50us为一次中断溢出,输出100us的方波,用示波器看出来周期有200us。误差怎么这么大呀,pic的内部晶振这么不准,我写OSCALL= 0X3F,校正也不行,有什么好的解决方法没。谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
eduhf_123
2020-02-10 10:25
        MOVWF   W_TEMP          ;保护现场

        SWAPF   STATUS, W

        MOVWF   S_TEMP

        CLRF    STATUS

        BTFSS   PIR1,   TMR1IF  ;判断是否是TMR1中断

        GOTO    OTH_INT         ;不是则转而判断其他中断

        BSF     STATUS, RP0

        BTFSS   PIE1,   TMR1IE  ;同上

        GOTO    OTH_INT

        BCF     STATUS, RP0

        MOVLW   0xCD

        MOVWF   TMR1L           ;这一条语句重装载TMR1L的初值

        DECF    TMR1H

        .

        .

        .

------------------------------------

上面是能最快重新装载TMR1L的写法,CPU响应中断至少2周期,进入中断服务程序后要12周期后才能重新装载TMR1L的值,而0xCD(16)=-51(10),那么当内置振荡器准确的时候,TMR1的溢出周期也至少是51+2+12=65(μs),振荡器再不校准使得频率偏一点,很容易就接近100μs了。

一周热门 更多>