1

現在、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.
    }
}

問題は、タイマーが実行されているように見えないことです。私は今、プログラムをさまざまな設定で何度もシミュレートしました。最新の設定では、割り込みが実行されているときにピンを開いてから、メインで再びオンにしました。問題は、それが決して起こらなかったことです。タイマーは動いていないと思います。なんで?

4

2 に答える 2

0

ご協力ありがとうございます。タイマーが作動しました。設定全体を削除してタイマーを書き直したところ、正常に動作しています。別の問題があり、新しい投稿を書きました:) 必要に応じてチェックしてください。

新しい投稿

于 2015-09-08T12:32:16.743 に答える