LED点灯 

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

演習問題ができたらココ