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