現在、3.2768 MHz 発振器を搭載したPIC16F883のプログラミングに取り組んでいます。適切なタイミングでLEDを点滅させる必要がありますが、ここでは関係ありません。
問題は、Timer0 をセットアップしたことですが、機能していません。コードと初期化をここに投稿して、確認できるようにします:)。ところで、私は MpLap IDE で、Hi-Tech C Compiler を使用して通常の 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.
}
}
問題は、タイマーが実行されているように見えないことです。私は今、プログラムをさまざまな設定で何度もシミュレートしました。最新の設定では、割り込みが実行されているときにピンを開いてから、メインで再びオンにしました。問題は、それが決して起こらなかったことです。タイマーは動いていないと思います。なんで?