ソフトウェア A-Dコンバータから取り込む温度値が80℃以下でヒータをONし,85℃以上でヒータをOFFします.5℃のヒステリシス幅をもった自動温度調整器です. 次にサンプル・プログラム1(リスト1-2)を使い,具体的なプログラム記述を説明します. I/OアドレスEQUテーブル(5〜9行) プログラム内で使用するI/Oアドレスやポインタまたは,配列の先頭番地などを定義します. リスト1-2では,内蔵I/OのPIO部分とA-Dコンバータだけを定義しています. Z80は0番地起動(12〜14行) Z80はリセット後,ORG 0番地に記述された命令から実行します. 通常,ここではスタック・ポインタの設定のほかに,ウォッチドッグ・タイマ,割り込みレジスタ,割り込みモードなどの設定も行います. Z80のノンマスク割り込みのジャンプ先は66H番地(16〜18行) ノンマスク割り込みを使わない場合でも,必ずここへRETN命令の記述だけは行ってください. I/Oの初期化とデータの初期値設定(21〜28行) I/Oイニシャライズやデータの初期値設定などを行います. メイン・ルーチン(31〜36行) 通常,無限ループの形式として,ここから必要なサブルーチンを呼び出します. サンプル・プログラムでは,温度計データを入力し,その値が80℃以下のとき電熱器スイッチONルーチン,85℃以上のとき電熱器スイッチOFFルーチンを呼び出しています. 電熱器スイッチをON(39〜43行) 4000H番地にポートAの状態をメモしておき,該当するビットだけON/OFFします. これは,別のサブルーチンでポートAを使ったときの干渉を防ぐためです. 電熱器スイッチをOFF(45〜49行) 4000H番地の扱いは,電熱器スイッチONルーチンと同じです * このサンプル・プログラムは説明用のものです.このままでも動作はしますが,完全なものではありません.実際はこれ以外にウォッチドッグ・タイマ,割り込みモード,割り込みベクタなどの設定,温度計のスケーリングおよびデータの平均処理などが必要です.
Copyright 2000 武下 博彦 |
|
Copyright 1997-2001 CQ Publishing Co.,Ltd.