絵の具模様

H8 シリアル入(出)力サンプル・プログラム


はじめに

<説明>
ここで紹介するシリアル入(出)力、サンプル・プログラムは、勉強用やデモ用を想定していますので、実際の業務での運用に耐えうるかどうかを保証いたしません。

そもそも、gigoさんのCstartとC標準ライブラリを使用すれば、printf や scanf が付いて来ますので、通常の用途ではわざわざ「シリアル入出力プログラム」を作る必要はありません。

このプログラムの作成目的は、以下の3点です。

1.デバイスIO、デバッガの使い方、CPUの割り込み制御に関する実験。
2.サンプルのためのソースを公開して、プログラミングやデバッグの勉強を助ける。
3.デバッガでBreak Pointをかけたり、何回も気にしないでロードと実行ができるように、H8/3048FのFlush ROMにデバッガを組み込み込んだ環境のRAMで動作可能とする。

この「安全な大きさでRAMに収める」というのが、なかなか苦労した点です。当初は2つのシリアルポートと、入出力の割り込みをサポートするはずだったのですが(ROMでは動作確認済)、RAMに入りきらないため、シリアルをポート0限定にして、割り込みも入力のみサポート、さらに余計なメッセージや、エラー処理を削る事で、なんとかこの大きさにしました。

動作概要

<説明>
プログラムは、全部で3つあります。
ユーザ側から見た動作仕様は、同じですが内部動作が違います。

動作は、SCI0(シリアルポート0番)に、'?' プロンプトを出力し、任意のユーザコマンドの入力を待ちます。
数字が入力された場合には、入力された回数分の内部ループ処理を行います。ループ処理中に、もし別の文字の入力が行われた場合にどうなるか、というのがポイントです。
(16MHz環境で適当な長さのループは、5000000〜9000000ぐらいだと思います。)

'.' ピリオド、Ctrl-C の入力でプログラムは終了し、制御をモニターに返します。
それ以外の入力では、単に入力文字をエコーバックするだけです。

SCI2.C - 割り込みを使わないで、上記動作をします。

SCI3.C - 入力時に、シリアルの割り込みを使って、上記処理をします。

SCI4.C - 入力時に、シリアルの割り込みを使い、なおかつリングバッファによる受信データプール処理をおこないます。

cstartT.src - アセンブラで記述した割り込みハンドラです。cstartオリジナルのcstartT.srcと置き換えて、リンクして使用します。

実行方法

<説明>
1.すべてのプログラムのコンパイル、リンクを終え、オブジェクトのSレコードを作っておきます。
2.シリアル・ケーブル(25ピンの方)で開発環境のパソコンとAKI-H8を接続します。
3.所定手順で、Cstartサポート&ライブラリ付モニターをROMに焼きます。
4.開発環境のパソコンで、ハイパーターミナルを立ち上げます。
5.gigoさんのサンプル・テスト・プログラムをRAMにロードして、動作確認します。
6.上記手順と同様、モニターの'L'コマンドで、シリアル・テストプログラムをロードします。
7.実行は、モニターから 'g FF000' です。
8.パソコンに接続するシリアル・コネクタを9ピンのポート0に接続し直します。
9.「Enter」キーをたたいて、'?' プロンプトが出れば、シリアルサンプル・プログラムは動作しています。
10.'.' (ピリオド)コマンドで終了後は、再びシリアル・ケーブルをつなぎ変えます。


補足情報

<説明>
「n2i105h8.zip」に含まれるバッチファイルでは、組み込み対象とするモニターのバージョンが違うため、リンクに失敗します。以下に、Ver. 2.1Cのリンクに使用するモジュールを列挙しますので、ご自身でバッチファイルの書き換えをしてからリンクして下さい。書き換えが必要なファイルは、
「AKIH8.BAT」「ccH8M.BAT」です。
「AKIH8.BAT」の書き換えの際には、必要なモジュールがコンパイルされるようにも修正します。

cpu01,cpu02,cpu03,cpu04
cmd01,cmd02,dmy03,cmd04,cmd05,cmd06,cmd07,cmd08,cmd09,cmd10
cmd11,dmy12,cmd13,cmd14,dmy15,cmd16,cmd17,dmy18,cmd19,cmd20
cmd21, dmy23,cmd24,cmd25,dmy26,cmd27,cmd28,dmy29,cmd30
cmd31,cmd32,cmd33,cmd34,cmd35,cmd36,cmd37,cmd38,dmy39
mod01,mod02,mod03,mod04,mod05,mod06,mod07,mod08,mod09,mod10
mod11,mod12,mod13,mod14,mod15,mod16,mod17,mod18,mod19,mod20
mod21,mod22,mod23,mod24,mod25,mod26,mod27,mod28,mod29,mod30
mod31,mod32,mod33,mod34,mod35, mod37,mod38,mod39


画材道具戻る
絵の具模様