- ベストアンサー
picの連射状態について
閲覧ありがとうございます。 現在学校でPICマイコンを使った授業をしており、スイッチを押すと7セグLEDがカウントアップ されるものを作っているのですが、どう作っても連射状態(スイッチを押しっぱなしだと勝手に カウントアップされる)になるのですが、これをスイッチを押すたびにカウントアップするように するにはどうすれば良いのでしょうか? 言語はCで使用PICは16F84A、環境はMPLABでCCS-Cコンパイラを使用 しています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>すいません、出来れば例えで構いませんので、ソース付きでお願いします >理屈が分かっても記述の仕方がよくわからないもので・・・・・・ なるほど。でもそれは、自分でやってみるべきことなんじゃないかな。 その「理屈と記述を結ぶやり方」こそ、授業で学んだり、自分で考えるべきことだと思う。 まずは、何らかのアウトプットをする努力をしてみて欲しい。 それに対して、何らかの反応を返すことは可能だよ。
その他の回答 (2)
- mrkato
- ベストアンサー率47% (1008/2121)
あまりマルチ記述向きで無い手順の一例 「入力が立ち上がるのを待つループだけ」ではなく、 先に入力が示した値と変化したかを診る 入力値と開放固定値の比較 =比較結果でフラグが立ち分岐出来る命令の流れ 積算レジスタ歩進させる処理と表示更新のセット それと、開放位置の入力値に戻ったかを診るループを 抜けるまでをタスクの一本とする。 鍵盤状のが設置されてる状況なら、 上だと「開放まで見逃ししない」けれども 個々を押したカウントには使えないので 「どこを押してもフラグが立ち上がる」検出と、 入力過去レジスタ比較して押し変化だけ拾い、 離されたビットは無視して押し個数に換算、 積算レジスタへ加えて 入力過去レジスタを入力値に更新、タスク終わる流れ。
- hidebun
- ベストアンサー率50% (92/181)
それは、スイッチのON/OFFの状態を管理していないからではないですか? 例えば、スイッチが押されたら、ある変数の状態が変化すると思うのですが、 ・スイッチの状態を見る→ONならカウントアップする という処理だけ書いていれば、見た回数だけカウントアップしてしまうのは当然だと思います。 ・スイッチの状態を見る →前回見たときOFFで今回がONならボタンが押された→カウントアップ →前回見たときONで今回もONなら押しっぱなし→カウントアップしない というように、前回の状態を覚えておき、それを今回と比較してみましょう。
補足
すいません、出来れば例えで構いませんので、ソース付きでお願いします 理屈が分かっても記述の仕方がよくわからないもので・・・・・・
お礼
遅くなってしまい申し訳ありません。 あの後いろいろと試してみたら上手くいきました。ご回答有難うございます。