第6回 LED 点灯回路の基本プログラミング

■6.1 仕様
 回路図と LED の点灯条件を以下に示す.

◆6.1.1 回路図
回路名 プッシュスイッチによる LED 点灯制御回路.
マイコン PIC16F84A(クロック:4 MHz).
入力 プッシュスイッチ(SW1,SW2):RA3,RA4 ポートに接続.
ローアクティブ.
出力 LED(LED1,LED2):RB0,RB1 ポートに接続(IF=10 mA).
ローアクティブ.


◆6.1.2 点灯条件
 入力(SW1 および SW2)と出力(LED1,LED2)の関係を示す.ただし,SW1 と SW2は,押されている状態を“on”,押されていない状態を“off”とする.

SW2(RA4) SW1(RA3) LED2(RB1) LED1(RB0)
off(1) off(1) 消灯(1) 消灯(1)
off(1) on(0) 消灯(1) 点滅(0)
on(0) off(1) 点滅(0) 消灯(1)
on(0) on(0) 交互に点滅(1 or 0)
 
■6.2 アルゴリズム例
 以下に,6.1の仕様を満たすアルゴリズム例を示す.

0 変数 counter を定義する.
PORTARA3RA4 を入力ポートに設定する.
PORTBRB0RB1 を出力ポートに設定する.
1 counterをカウントアップ(もしくはダウン)する.
2 SW1 の状態を PORTA の RA3 ビットにより確認し,on 状態の論理(RA3:0)であり,かつ counter が奇数であれば,RB0 ビットを操作して LED1 を点灯(RB0:0)させる.それ以外は消灯(RB0:1)させる.
3 SW2 の状態を PORTA の RA4 ビットにより確認し,on 状態の論理(RA4:0)であり,かつ counter が偶数であれば,RB1 ビットを操作して LED2 を点灯(RB1:0)させる.それ以外は消灯(RB1:1)させる.
4 1へ戻る.
 
■6.3 シミュレータ
 実習で作成したプログラムが正しく動作するかどうかを確かめるために,本実習で設計する回路の動作をソフトウェアで再現した専用シミュレータ(EST Simulator 3.0)を利用することができる.

 EST Simulator 3.0 の仕様を以下に示す.

外観
対応回路 XH-00026C(プッシュスイッチによる LED 点灯制御回路)および XH-00027B(ストップウォッチ回路)
表示 ・LED(LED1,LED2)
・プッシュスイッチ(SW1,SW2)
・LCD
・経過時間,主要SFRの状態,コンフィグビット,ID
実行形式 HEX ファイルを読み込んで実行する.
ステップイン実行可.
PIC16F84A
制約事項
・割込処理:タイマ0 以外無効
・TIMER0 モジュール
  8 ビットカウンタモードのみ有効(OPTION_REG:T0CS=0 に固定)
・命令
  CLRWDT:無効
  SLEEP:無効
・EEPROM:アクセス無効
LCD制約事項 ・表示文字:ASCII コード(20H-7DH),それ以外は空白表示
・制御命令
  表示クリア:有効
  カーソルホーム:有効
  エントリーモード:カーソル方向(I/D)のみ設定有効,表示シフト無しに固定(S=0)
  表示オンオフ:有効
  カーソル,表示シフト:無効
  ファンクション:固定(インターフェイス長:8 bit,表示行数:2行,文字フォント:5x7)
  CGRAM:無効
エラー対応 ・存在しないレジスタファイルにアクセスしようとした
・スタック オーバーフロー(スタックが 8 以上になった)
・LCD 実行待ち時間終了前にアクセスした
・LCD 初期化処理を設定通りに行わなかった
・その他
言語 ・Microsoft Visual C# 2019(Microsoft .NET Framekork 4.6)

◆6.3.1 インストール
 端末室以外のパソコンで利用するには,そのパソコンへインストール作業を行う必要がある.

 以下に示すファイルをダウンロードし,任意の場所に保存する.
 
 ESTS030.zip

 ダウンロードしたファイルを“Mドライブ”に解凍する.フォルダ内の,“ ESTS030.exe”が専用シミュレータである.
 “EST030”フォルダには本シミュレータのソースを格納してある.

◆6.3.2 操作方法
▼起動とHEXファイルの読込
 “ ESTS030”をダブルクリックし,シミュレータを起動する.

 ファイルメニューよりHEX ファイル読込を選択,もしくはボタンにより,シミュレートするHEXファイルを指定して読み込む.
 一度ファイルを読み込むと,ボタンにより再読込が可能となる.

 HEX ファイル読込後はタイトルバーにファイル名が表示され,シミュレーションメニューがアクティブとなる.
 
▼実行  
 シミュレーションメニューより開始を選択,もしくはボタンにより,シミュレートを開始できる.
 また,シミュレーションメニューよりステップインを選択すると 1 命令ずつシミュレートできる.
 ボタンにより一時停止,ボタンによりシミュレートを終了できる(リセット状態にもどる).

 実行中は,SW1 および SW2 をクリックすることにより,on と off を設定できる.
 左クリックではクリックしている間のみ on 状態となるが,右クリックでは on 状態をロックできる.ロックの解除は,もう一度クリックすることによる.

 シミュレーションメニューより高速動作を選択することにより,PICのポート入出力時以外にのみ同期した動作となり,実行が早くなる.
 シミュレーションメニューよりスイッチノイズを選択することにより,PICのポート入力にノイズを加えることができる(高速動作中は使用できない).
 
 
▼表示設定
 経過時間,SFR の状態表示は,チェックボタンによりオン/オフできる.

 これらの表示はデバッグ時に有用な情報となるが,その分,シミュレートに要する時間が長くなる.したがって,ある程度プログラムの規模が大きくなった場合や,時間待ちをたくさん行うプログラムのシミュレーション時にはオフにすると効率がよい場合がある.
 
 
■課題
 以下に示す内容のプログラムを作成し,その「フローチャート」と「ソースコード」を示しなさい.

プロジェクト名 step06
内容 6.1に記載の仕様を満たすこと
正解例オブジェクトコード step06.hex

 レポートは,下記のWordファイルを使用して作成すること.なるべく簡潔にまとめることが望ましい.
 Form06.docx

 WebClassより期限内に提出すること.