私が持っているPIC18F46K22をしてXC8コンパイラでそれをプログラムします。最後に、私は、搭載したPCのようなシステムがあるでしょうstdin
し、をstdout
。したがって、メインループには、新しい入力があるかどうかをチェックする関数があります。入力がある場合、それに応じて関数が呼び出されます。たとえば、Aを入力するstdin
と、PICはBを入力したときに呼び出される関数のfunction_A
代わりに、次のような関数を実行しますfunction_B
。
関数でPICが完了したら、新しい入力が関数に送信されるようにします。したがって、Aを押すとRS232トランスミッタが開き、その瞬間からすべての入力がRS232経由で送信されます。最終的に、プロジェクトはスタンドアロンのテキストエディターです。そのため、Aを押すとファイルシステムが開き、その瞬間からテキストの編集は行われず、ファイルのリストを確認します。つまり、上と下を押すことは、テキスト編集環境とは異なることを意味します。
私はこれをCでプログラムする方法について多くのことを考えてきました。昨晩、これを考えて、可能かどうか、可能であればどのようにしたらよいかを知りたいと思います。私がやりたいことは:
main
機能のような関数を呼び出しますfunction_A
function_A
グローバル変数function_addr
を関数のアドレスポインターに変更しますin_function_A
- その瞬間から、新しい入力があるときに
main
関数を呼び出しfunction_addr
ます。
したがって、必要なのは、ゼロmain
かどうかをチェックする関数function_addr
です。もしそうなら、「通常の」関数を呼び出す必要がありますfunction_A
。そうでない場合、関数at function_addr
を呼び出す必要があります。またfunction_A
、function_addr
へのポインタに変更するが必要in_function_A
です。
注:ファイルシステム関数を閉じる必要がある場合は、0にis_function_A
変更function_addr
するだけです。
だから基本的に私の質問は
- 関数のアドレスを取得(および変数に格納)
- 指定されたアドレスで関数を呼び出す