第1章 サンプル・プログラム

ソフトウェア

 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ルーチンと同じです

 このサンプル・プログラムは説明用のものです.このままでも動作はしますが,完全なものではありません.実際はこれ以外にウォッチドッグ・タイマ,割り込みモード,割り込みベクタなどの設定,温度計のスケーリングおよびデータの平均処理などが必要です.

コラム1.1 パソコン用CPUと組み込み用CPU?

 Pentiumに代表されるパソコン用CPUと,Z80,TLCS-900,H8S,KL5C80…などの組み込み用CPUはどこが違うのでしょうか.

 どちらも同じCISC型CPUで,ほんの数年前のPentiumの前進である80286頃は,両者同じように機器組み込みを行っていたと思います.

 ところが,パソコン向けに32ビットCPU 80386が発売後,OSが少しずつWindows化してきました.Windows95の発売後のWintelと呼ばれる時期に至っては,以前のCPUとは比較にならないほどの,より高性能なCPUがパソコン向けに求められるようになりました.

 これに対応するために,多段パイプラインやスーパースカラなどの高度な技術に加え,クロックの逓倍によりCPUの内部動作速度もより高速になっています.

 しかし,コンピュータはメモリから命令を読み込み実行する機械です.この動作をメイン・メモリに依存すると,20Mフェッチ/秒程度が限界です.

 これを改善する方法として,CPU内に高速メモリをキャッシュとしておき,CPU周辺だけを高速動作させるCPUローカル・バス方式がとられています(図1-a).CPUローカル・バスとメイン・バスとの接続は,バス・コントローラ(チップ・セットIC)で接続します.

<図1-a>パソコン内部ブロック図

(約10Kバイト)

 図1-bに示すように,パソコン用CPUは高速CPUだけが先行して走るシステムになっています(図1-C).

 

 

<図1-b>パソコン用CPU

(約24Kバイト)

 

 

 

<図1-c>組み込み用CPU

(約19Kバイト)

 

 かたや組み込み用CPUは,CPUとメモリとI/Oが同じバス上で,同じ速度で走っています.

 小型,低価格,低開発コスト,省電力,それなりの高性能を求めると,むやみなスピード・アップは得策ではありません.

 パソコン用CPUと組み込み用CPUの区別ははっきりしませんが,バス構成の違いは明確です.


コラム1.2 これからのハードウェア・エンジニア

 最近,書店からマイコンやディジタル回路,電子技術といったハード関連の書籍が姿を消しつつあります.特にWindowsが主流になってから,その傾向が顕著です.

 今では書店の一番奥の一番暗い棚の最上段に,僅かばかりのハード技術書が並べられている状態で,本探しは脚立を借りて行っているほどです.マニアックでマイナな世界を愛する私個人としては「これも悪くないな」と思っていますが….

 このような現状からか,また「はんだごて片手にハード屋さんなんて格好悪い」と思っているのか,昨今,ハードウェア・エンジニアを志す人が少なくなったようです.この状態が続くと,ハードウェア・エンジニアが極端に不足する時期がくるのではと感じてしまいます.

 

 

                    (約18Kバイト)

 しかし,現実問題としてハードウェアなしのソフトウェアはありえませんし,ハードウェア設計の需要が少なくなっているわけでもありません.こんなときだからこそハードウェアを極めましょう!

 回路設計から製作までを自分一人で作りあげる分,双方の知識を養えるととも,創る歓びが実感できます.

 しかし,ハードウェア・エンジニアになるには,一朝一夕にはできません.経験の積み重ねです.

 そこで,これからハードウェアの世界に足を踏み入れようとしている方のために,ハードウェア難易度表(表1-a)を示します.

<表1-a>ハードウェア難易度表

(約22Kバイト)

 一般にコンピュータ回路は難しくて,トランジスタ回路が簡単に思われがちですが,まったく逆です.

 この表を参考に攻略順を決めて,チャレンジしてください.

 どのようなハードウェアを作っても,その制御はコンピュータです.まずは,その中心部分から始めたいものですが,やはりマニアックな世界です.


Copyright 2000 武下 博彦

新刊のご案内


Copyright 1997-2001 CQ Publishing Co.,Ltd.