簡體   English   中英

PIC16F883定時器不起作用

[英]PIC16F883 timer won't work

我目前正在使用3.2768 MHz振盪器編程PIC16F883 我需要在正確的時間點亮一些LED ,但這在這里確實無關緊要。

問題是已經設置了Timer0,但它無法正常工作。 我將在這里發布我的代碼和初始化,以便你可以看到:)。 順便說一下,我在MpLap IDE中進行編程,使用Hi-Tech C編譯器進行正常的C編程。

初始化:

T0CS = 0x00;            //Set Timer0 to Timer-Mode
GIE = 0x01;             //Enable all interrupts
PSA = 0x00;             //Prescaler enable
PS0 = 0x01;             //Prescaler set
PS1 = 0x00;             //Prescaler set
PS2 = 0x01;             //Prescaler set

中斷服務程序本身:

void interrupt timer()
{
    T0IF = 0x00;             //Reset timer
    millicounter++;          //Add one to the helper variable
    PORTA = 0x00;

    if (millicounter == 25)  //Check if one second has passed.
    {
        millicounter = 0;    //Reset helper variable
        seconds++;           //Add one to elapsed seconds.
    }
}

問題是它看起來不像計時器正在運行。 我現在已經使用不同的設置模擬了程序,最新的是在中斷運行時使引腳打開,然后在主中再次打開。 問題是它永遠不會發生。 我認為計時器沒有運行。 為什么?

您已設置全局中斷使能位。 但是要使定時器中斷起作用,還需要設置定時器中斷使能位(T0IE)。

根據您的定時器寄存器值和晶體頻率,“秒”變量將每秒增加256次。 即,如果您使用此“秒”變量來提供閃爍延遲,則您的LED開啟時間約為3.9毫秒。 人眼無法檢測到這種快速閃爍。

謝謝你的幫助,我讓計時器正常工作。 我刪除了我的整個配置並重新計算了計時器,現在它工作正常。 我確實有另一個問題,我已經寫了一篇新文章:)如果你想要,請查看它。

最新帖子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM