質問

私はほんの数週間前に大学でマイクロプロセッサのクラスを終えたばかりで、そこではアセンブリのみでプログラミングしました。私たちは割り込みについてかなりの量 (私見) を学びました。

私の質問は次のとおりです。データシートのセクションで割り込みについて説明しているので、16F684 用の HiTech コンパイラを使用して C でプログラミングしています (PIC 16F684 データシート セクション 12.4) には、プログラムが割り込みベクタ 0x0004 に進むと記載されています。マイクロプロセッサ クラスでアセンブリを使用すると、そのアドレスを指す .org ステートメントをセットアップし、必要なアセンブリを以下に記述するだけで、割り込みが発生したときにそこにジャンプして実行できるようになります。アセンブリではそれを理解できますが、C でプログラムする場合、プログラム部分をメモリ内のどこに配置するかを制御できるとは思えず、問題が発生します。C の割り込みにコマンドを配置する方法がわかりません。

明確にする必要がある場合はお知らせください。

役に立ちましたか?

解決

マイクロチップ社のこの FAQ HiTech C での割り込みの使用に関する情報がいくつかあります。

他のヒント

HiTech C は、C 言語を次のように拡張します。 interrupt 関数の種類:

void interrupt my_interrupt_handler (void) {
    handle_interrupts_here();
}

コンパイラのマニュアルを入手する必要があります。Pic-lite のマニュアルは無料でダウンロードできると思います。少なくとも私が 2001 年にダウンロードしたときはそうでした。

HiTech のドキュメントを詳しく調べる必要がありますが、多くの場合、コンパイラには割り込み関数を定義するための特別なキーワードがあります。コンパイラまたはランタイム システムは、割り込みによって呼び出される関数を特別に処理する必要があります。ベクトルの設定に加えて、コンパイラ (またはランタイム システム) はすべてのレジスタを保存する必要があります。通常の、割り込みのない関数では、これを行う必要はないかもしれません。

マニュアルはあなたの味方になります。

PIC 用 CCS コンパイラ #INT_* コンパイラ指令またはさまざまな割り込みソースの割り込み処理関数の「属性」を使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top