みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PICプログラムについて

こんにちは 早速ですが質問です。

PIC16A84を使用しています。発振は4Mhzを使用しようと考えています。

入力Aの信号ONで出力Aの信号を(通常ON)をを25mSec間OFFし次にONを25mSecと入力Aの信号がONの間繰り返すのですが、この他に、入力Bと出力Bがあり、入力A、出力Aと同じ動きをするのですが、入力AとBが同時にONしたときのプログラム方法がわかりません。(プログラムの同時進行の場合のプログラミング方法)

わかりずらいですがよろしくお願い致します。

投稿日時 - 2003-12-04 11:26:45

QNo.722027

すぐに回答ほしいです

質問者が選んだベストアンサー

PICは有名ですから、製作例や解説をしているサイトは数え切れないほどありますし、検索すればいやって程当たります。

ココでは個人サイトのURLを貼ってはいけないそうなので、「PIC入門」でgoogle検索して一番先頭のサイトに行ってください。そのページ一番下の「PICを使用した電子回路集」のリンクへ飛ぶとあなたの欲しい情報がずばりです。
「LEDフラッシャー」
「LEDフラッシャー2」
と有り、前者がループを使ったタイマールーチンで、後者がタイマー割り込みを使っています。プログラムを詳細に解説されていて、回路図もあります。

このサイトで更にわからない事が出れば、関連するキーワードで検索すれば出ない答えはないと思います。

投稿日時 - 2003-12-05 21:50:07

お礼

ありがとうございました

早速さいとにいってみてみようと思います。

又何かあったら質問しますのでそのときはどうぞよろしくお願いいたします。

投稿日時 - 2003-12-06 11:35:30

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

あなたのおっしゃっているタイマールーチンとは、規定のクロック数だけループして戻ってくるだけのルーチンでしょうか?

通常、時間をカウントして何か制御しようと言うなら、タイマー割り込みは必須です。
質問のように2つだけを独立して制御したいなら、割り込みを使わなくても出来ないことはありませんが、3つ4つと独立した制御が増えてくればすぐに破綻します。

マイコンを使ったプログラムでは、タイマー割り込みを使うのは基本であると考えますので、この機会に修得された方がよいと思いますよ。

投稿日時 - 2003-12-05 13:02:59

補足

アドバイスありがとうございます。

できれば、ソースファイルにするとどうなるのかおしえていただけないでしょうか?

又、タイマールーチンについて説明しているサイト等あるのでしょうか?

以上よろしくお願いいたします。

投稿日時 - 2003-12-05 13:17:55

ANo.1

<通常ルーチン>
A=ON & フラグA=OFFなら
 → カウンタA=250、出力A=OFF、フラグA=ON

A=OFF & フラグA=ONなら
 → フラグA=OFF、出力A=ON

Bも同様

以上の無限ループ


<100uSタイマー割り込みルーチン>
フラグA=ONなら
 → カウンタA-1、カウンタA=0なら出力A反転&カウンタA=250

Bも同様

割り込みから抜ける



こんなところでしょうか、他にもいろいろやり方は有りますが。
通常ルーチンでフラグを操作するタイミングを間違えると、微妙なタイミングで割り込みが発生した時に動作がおかしくなります。ご注意ください。
割り込み禁止命令を使わない場合、フラグONは最後、フラグOFFは最初にしているのがミソです。
初期化ルーチンは省きましたが、わかるでしょうか?

投稿日時 - 2003-12-04 23:03:03

補足

早速の回答ありがとうございます

初心者なので、少々わかりずらいでしょうが追記です。

入力Aと出力Aだけであれば(他各信号の動作タイミングが同時ONというタイミングでなければ)タイマーのサブルーチンを使って入力Aの信号がONの間、出力Aの信号を25mSecのON⇔OFF繰り返しするというのはわかるのですが、タイマー割り込みルーチン等わかりません。

割り込みを使用しないとむりなのでしょうか?

わかりずらいですが、よろしくお願いいたします。

投稿日時 - 2003-12-05 09:16:48

あなたにオススメの質問