PUPPY本体上部のLED(図1)を点灯させるプログラムを作成します。
図1
LED点灯サンプルプログラムを下のボタンを押してダウンロードします。
ダウンロードしたLED_sample.lzhを解凍し\PUPPY\SAMPLEに入れます。(図2)
注:まだ付属CDのPUPPYフォルダをパソコンにコピーしていない方はコピーして下さい。
図2 フォルダ位置
LED_sampleフォルダの中には以下のファイルが入っています。
main.c | LED点灯プログラム |
start.src | マイコンのスタートアップルーチン |
make.bat | ビルド実行ファイル |
led_sample.sub | ビルド用SUBファイル |
3687s.h | H8/3687F用レジスタ定義ファイル |
36057s.h | H8/36057F用レジスタ定義ファイル |
36064s.h | H8/36064F用レジスタ定義ファイル |
36077.h | H8/36077F用レジスタ定義ファイル |
PUPPYは現在のところ4種類のCPUに対応しています。本文ではH8/3687Fを使用した例を説明しますが、他の3つのCPUもほぼ同様に動作します。
まず、main.cを開いてみてください。(リスト1)
リスト1
これがLEDを点灯させるだけのプログラムです。回路図をみるとLEDのD1〜D4のカソード側にはNOTゲートを介してCPUのポートP30〜P33に接続されています。LEDを点灯させるにはポートからHIを、消灯させるにはポートからLOを出力すればよいことになります。9行目でP30〜P33の出力設定をしています。
PCR3 | 対応ポート | 16進数 | 2進数 | 入出力方向 |
bit7 | P37 | 0 | 0 | 汎用入力 |
bit6 | P36 | 0 | 汎用入力 | |
bit5 | P35 | 0 | 汎用入力 | |
bit4 | P34 | 0 | 汎用入力 | |
bit3 | P33 | F | 1 | 汎用出力 |
bit2 | P32 | 1 | 汎用出力 | |
bit1 | P31 | 1 | 汎用出力 | |
bit0 | P30 | 1 | 汎用出力 |
表1
PCR3(ポートコントロールレジスタ3)は、ポート3の入力・出力の方向を設定するレジスタです。PCR3は8ビット(1バイト)のレジスタで各ビットに1を入れると対応するポートは汎用出力に、0を入れると汎用入力になります。詳しくはハードウェアマニュアルのI/Oポートの章を見てください。
注:H8/36057F御使用の方はLEDに接続されているポートがP30〜P33ではなくP90〜P93ですのでPCR3ではなくPCR9を操作してください。
ここまででP30〜P33は汎用出力設定になりました。あとはポートにHIを出力させればLEDは点灯するはずです。10行目はポートに出力させる値を設定しています。ハードウェアマニュアルを見るとPDR3(ポートデータレジスタ3)の各ビットに1を入れると対応するポートからHIが出力され、0を入れるとLOが出力されると記されていますのでLEDを点灯させたいポートには1、消灯させたいポートには0を入れればいいのです。10行目ではPDR3に0X05を入れているので表2のようになります。
PDR3 | 対応ポート | 16進数 | 2進数 | 出力値 |
bit7 | P37 | 0 | 0 | - |
bit6 | P36 | 0 | - | |
bit5 | P35 | 0 | - | |
bit4 | P34 | 0 | - | |
bit3 | P33 | 5 | 0 | LO |
bit2 | P32 | 1 | HI | |
bit1 | P31 | 0 | LO | |
bit0 | P30 | 1 | HI |
表2
注:H8/36057F御使用の方はLEDに接続されているポートがP30〜P33ではなくP90〜P93ですのでPDR3ではなくPDR9を操作してください。
では、このサンプルをビルドしてマイコンに書き込んでみましょう。
LED_sampleフォルダのMAKE..BATをダブルクリックします。(図3)
図3
図4のような黒い画面が出てきます。
図4
赤い丸で囲んだ表示が出ればCPUに書き込む形式のファイルが出来上がったことになります。何かキーを押せばこの画面は閉じます。LED_sampleフォルダを見ると新たに5つのファイルが作成されていて、その中にLED_sample.hktがあります。これがマイコンに書き込むファイルです。
このファイルをマイコンに書き込んで動作を確認してみてください。
書き込み方法はこちら
書込み後電源を入れると、LEDは図5のように点灯するはずです。PDR3に入れた値とLEDの点灯が対応しています。
図5
PDR3レジスタは、各ビットごとに個別に値を設定することができます。例えば他のLEDには影響を与えずにLED4だけ点灯したいときなどに便利です。main.cの10行目を消し、リスト2のように書き直してみてください。
リスト2
前回はポート3すべてに値を設定しましたが、今回はビットごとに値を設定しています。これをビルドして書き込んでみると図6のようになります。
図6
これらを踏まえてLEDが図7のように点灯するプログラムをマイコンに書込み、実行してみましょう
図7