ページ 1 / 1
マイコン制御 LED点灯プログラム フローチャート
Posted: 2011年7月07日(木) 02:16
by kerotan0820
学校から出題されたレポートの課題です
学年の中でいくつかの班にわかれ、各班に職員がつき、ローテーションで各単元の講習を受けるという形が学校ではとられています。
今回質問するものは、おそらく夏休み明けに回ってくる課題なのですが、今現在出題されている生徒ら曰く、一切の解説などがなく、職員から生徒に課題が丸投げされたらしいです。
内容は、LEDの点灯プログラム(3種類)を、フローチャートに直せとのことでした。
C言語におけるフローチャートの記述方法は基本的に習っているのですが、マイコン制御の場合を教わったこともなく困っております。
Google先生に尋ねながらもこうなのかな…というものを作ってみました。
添付した"課題3.zip"に Wordで作ったフローチャートとプログラムを撮った写真(.jpg)が入っておりますので、確認していただけると幸いです。
学校の課題では、一度提出したらそれが採点され、修正などが出来ないので、完璧に近づけて夏休み明け、提出したいと思っております。
ご教示の方よろしくお願いします。

Re: マイコン制御 LED点灯プログラム フローチャート
Posted: 2011年7月07日(木) 09:32
by non
載せてあるプログラムは先生から与えられたものですか?あれには,マイコンのイニシャライズの部分が
ないのですが,本当にあれでいいのですか?
「B(0xFF)に出力」の部分ですが,PICにとってみれば確かに入出力なのかもしれませんが,
レジスタに書き込んでいるので,処理と考えることもできます。
どちらの記号を使うのかは先生に尋ねる必要があります。
私なら,処理を使い
0xFF→ポートB
にします。
Re: マイコン制御 LED点灯プログラム フローチャート
Posted: 2011年7月07日(木) 11:47
by softya(ソフト屋)
私も処理の記号を使うと思いますが先生に確認したほうが良いでしょう。
non さんが書きました:載せてあるプログラムは先生から与えられたものですか?あれには,マイコンのイニシャライズの部分が
ないのですが,本当にあれでいいのですか?
あれで動くようです。ライブラリのoutput_b()関数で何かしているのでしょう。
http://blog.livedoor.jp/yone395/archives/50349358.html
CCS Cは良く分かりません。
Re: マイコン制御 LED点灯プログラム フローチャート
Posted: 2011年7月07日(木) 12:07
by non
ポートの入出力方向の設定は必要だと思いますけど。
サンプルの
set_tris_b(0);
です。
PICやこのコンパイラについては知りませんが。
Re: マイコン制御 LED点灯プログラム フローチャート
Posted: 2011年7月07日(木) 12:17
by softya(ソフト屋)
non さんが書きました:
ポートの入出力方向の設定は必要だと思いますけど。
サンプルの
set_tris_b(0);
です。
PICやこのコンパイラについては知りませんが。
失礼しました見逃してました。
普通マイコンはリセット時は入力ポートになっているので出力ポートにするには設定が必要なはずなんですけどね。
ただ、後閑哲也氏のサイトに書いてあるコードの一部にポートの入出力方向を設定していないものがあるんですよね。
http://www.picfun.com/ctechframe.html
コード:
//////////////////////////////////////////
// This is an ezample of led control.
// Led is controled by bit output.
// The interval time is about 0.5sec.
// Include the standard header file.
/////////////////////////////////////////
#include <16f84.h>
#use delay(clock=10000000)
main() {
while(1){ //endless loop
output_low(PIN_B0); //led on
delay_ms(500);
output_high(PIN_B0); //led off
delay_ms(500);
}
}
///////////////////////////////////////////
ライブラリがポートを設定しているのでしょうかね?
Re: マイコン制御 LED点灯プログラム フローチャート
Posted: 2011年7月07日(木) 13:33
by kerotan0820
皆様回答ありがとうございます。
ポートの入出力の設定がされてないように見える件について、仕様なのか尋ねてみます。
処理記号を使うかについても、明日にでも確認してみます。
それと、一応上記2点を省いてはフローチャートに問題はないということでよろしいでしょうか?
私は何もわからない身で皆様にご協力頂いているので、ある程度正解だろうといったレベルで良いと思っていますので、気軽により多くのご意見がいただけると幸いです。
よろしくお願いします。
Re: マイコン制御 LED点灯プログラム フローチャート
Posted: 2011年7月07日(木) 14:33
by softya(ソフト屋)
ハードウェア構成が分からないのですが、LED点灯と書いてあるのでポートBに出力するとLED点灯なのだと思います。
なので、「0xFFでLEDを点灯」とか書くのも良い気がしますが先生がどれを正解にするか分からないので確認されたほうが良いと思います。
0xFF→ポートB→LED(●●●●●●●●)
0xF8→ポートB→LED(●●●●●○○○)
なんて書くことも考えられます。
Re: マイコン制御 LED点灯プログラム フローチャート
Posted: 2011年7月07日(木) 15:05
by non
softya(ソフト屋) さんが書きました:ライブラリがポートを設定しているのでしょうかね?
教えていただいたHPに添付のように書いてありますから,output_lowやoutput_bなどの関数は自動的に
モード設定をすると考えてよさそうです。
Re: マイコン制御 LED点灯プログラム フローチャート
Posted: 2011年7月07日(木) 15:10
by non
フローとしては,LEDの出力をどのように書くかということだけでいいと思います。
ただ,プログラムは,これは,わざと繰り返していない課題なのでしょうね。
また,マイコンのプログラムではOSに戻りませんので,最後は永久ループで終わるのが普通ですが。
Re: マイコン制御 LED点灯プログラム フローチャート
Posted: 2011年7月07日(木) 15:53
by kerotan0820
softya(ソフト屋) さんが書きました:ハードウェア構成が分からないのですが、LED点灯と書いてあるのでポートBに出力するとLED点灯なのだと思います。
なので、「0xFFでLEDを点灯」とか書くのも良い気がしますが先生がどれを正解にするか分からないので確認されたほうが良いと思います。
0xFF→ポートB→LED(●●●●●●●●)
0xF8→ポートB→LED(●●●●●○○○)
なんて書くことも考えられます。
non さんが書きました:私なら,処理を使い
0xFF→ポートB
にします
上げていただいた意見を明日、学校で聞いてみたいと思います。
一応、non様の 0x~ →ポートB にしてみました。
学校にて確認が済むまで保留させていただきます。
Re: マイコン制御 LED点灯プログラム フローチャート
Posted: 2011年7月09日(土) 16:20
by kerotan0820
学校にて確認が済みました。
LEDの点灯処理は
0xFF→ポートB
この記述でも何でも構わないそうです(どういった流れなのかが分かれば良いとのこと)
それと、待ち時間の記号はただの処理で良いといわれたのでそこは修正します。
ありがとうございました。
Re: マイコン制御 LED点灯プログラム フローチャート
Posted: 2011年7月09日(土) 17:12
by non
アセンブラをやっていた人間にとっては、
0xFF→ポートB
と
(0xFF)→ポートB
は違います。
0xFF→ポートB
は即値命令で、その数値がポートBに出ますが、
(0xFF)→ポートB
では、0XFF番地に入っている値がポートBに出ます。
Re: マイコン制御 LED点灯プログラム フローチャート
Posted: 2011年7月13日(水) 03:28
by kerotan0820
しばらく投稿できそうにないので一旦〆させていただきます。