[[I2C温度計その3]]
* サブルーチンを使いたい! [#s25973e9]
- miniCPU は、サブルーチンを実現するための一般的なcpu が持っている、call, return, branch and link 
などの命令を持っていません。
- miniCPUでサブルーチンを実現する手法について説明します。
* 特徴 [#w55fe670]
- miniCPUのハードウェア(回路)は変更しません。
- miniCPUが持っている命令だけで実現します。
- recursive なプログラムには(現時点では)対応していません。
* 方法 [#cdbca096]
- サブルーチンにジャンプする直前に、プログラムの中で、戻るアドレス(12bit)をスタックにプッシュします。
- サブルーチンでは、最初に、プッシュされた戻るアドレス(12bit)を取り出し、これと, jmp 命令である、0x4000 の論理和をとります。
- 上の値を、サブルーチンの実行コードの最後に埋め込みます。
* 例 [#o0dd2d18]
- [[サブルーチンコールその1]]... ADT7420で温度を読み取るプログラムを、ほぼ、そのままサブルーチンにしています。
- [[サブルーチンコールその2]]... 一般的にI2Cを簡単に利用できるように様々なサブルーチンを定義し、それを使った例です。
- [[サブルーチンコールその1]]... ADT7420で温度を読み取るプログラムを、ほぼ、そのままサブルーチン(SubI2C1)にしています。
- [[サブルーチンコールその2]]... ADT7420で温度を読み取るプログラムのデータをI2Cの機能ごとに分割し、SubI2C1を呼び出して実行しています。
----
#counter

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS