我目前正在使用3.2768 MHz振盪器編程PIC16F883。我需要在正確的時間使一些LED閃爍,但這在這裏真的不相關。PIC16F883定時器將不起作用
問題是,已經設置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 = 1;' – LPs
我發現[這](http://ww1.microchip.com/downloads/en/DeviceDoc/51702A.pdf)很好的教程 – LPs
在正確的時間使LED閃爍真的*是*相關的。構建代碼時 - 這是您的第一個參考點。在這種情況下,定時器中斷會使其閃爍。如果速度太快,請使用計數器掩碼或從慢速計時器開始。 –