プログラムの設計法(フローチャート)

【機能の確認】

実現したい機能は下記としています。

(1)キースイッチ1がONの間、8個の発光ダイオードが1個だけ、順に
  1秒間隔で点灯するパターンに切り替わる。(パターン1)

(2)キースイッチ2がONの間、8個の発光ダイオードが1個づつ順に
  点灯し、全部点灯したら一旦全消灯し繰り返すというパターンに
  切り替わる。 (パターン2)

(3)キースイッチがどちらもOFFの時は何もしない。


【プログラムの全体設計】

これを実現するプログラムはどうやって組み立てれば良いのでしょう
か?
考え方は、まず細かいところは抜きにして大体の流れを考えます。
これを「フローチャート」という原始的な方法ですが描きながら考えて
行きます。
まず、電源ONでプログラムがスタートしますが、そのスタート時点では
「初期化処理」をします。この初期化処理は主に入出力ピンのモード
設定と変数の初期値セットをします。
そのあとは、常時キースイッチ1と2の入力をチェックすることを繰り返
すことにします。繰り返しの戻りは初期化処理の後ということにします。
これで結局「メインループ」の処理の形が出来たことになります。
  (初期化は1回だけすれば良い)
ここまでをフローチャートにすると下図の様になります。





 初期化はPORTのモード設定

 メインの処理となる

 キーの入力をチェックする


次の段階はキースイッチの入力があったときの処理になりますが、
それぞれパターン1,2の処理というように大きく捕らえて考えれば
下図の様なフローチャートにすることが出来ます。
これで全体の流れは完成です。簡単ですね。













この各パターンの処理は
サブルーチンで実現する。


【パターン1の処理】

次にもうちょっと細かい中身を考えます。つまり発光ダイオードの点灯
パターンの処理内容です。
上図の様に各パターンの処理はサブルーチンとして考えます。
まずパターン1ですが、これを単純に考えると入出力ピンの1ビット目
から、順にずらしながら1つだけの発光ダイオードが点灯するようにして
いけばよいことになります。このためには、PORT Bの1ビットだけを
「0」にして残りは「1」とすれば良いことになります。
また毎回点灯させたら、1秒間のタイマーで待つようにすれば1秒間隔
ということが実現できることになります。
これをフローチャートで描くと下図の様になります。









 PORT Bへの出力は、
 最初は 1111 1110 として
 1ビット目だけ点灯


 1111 1110 の次は 1111 1101
 とします。





1秒タイマーはサブルーチンとして
 考える。

【パターン2の処理】

パターン2のサブルーチンはパターン1と同じように考えます。つまり
最初全ビット「1」にしておき、順に1ビットづつ「0」として行きます。
その間は1秒間の待ちを入れます。









 最初は 1111 1111 として出力し全消灯



 次は 1111 1110 とし、その次は
 1111 1100 として出力する。
 最後は 0000 0000 となり全部点灯する。


 1秒タイマーは全てに共通のサブルーチン


サブルーチンの戻りとしてRETURN命令を使う


   次のページへ      目次ページへ