7セグLEDを使って,押しボタンスイッチの押した回数(0~9)を7セグで表示するプログラムをHitec社のPIC CLiteで作りたいのですが,押しボタンを押しても回数がランダムで表示されてしまいます.どういったところを直したらいいでしょうか?
***プログラム***
ボタンスイッチを押したぶんだけ数値をカウントする
main{
while(1){
if(RA0==0){ …押しボタンのポート
++a;
{
if(a>=10){ …10回押したら0になる
a=0;
}
↓7セグに出力
RB4=a%2;
RB5=(a/2)%2;
RB6=(a/4)%2;
RB7=a/4;
}
}
No.1ベストアンサー
- 回答日時:
コンパイラの問題よりも、ハードウエア構成が全く提示されていないので
答えようがないですね。
とりあえず、PB4~7の各ビットに7セグデコーダでもついているのでしょうか?
この部分が問題ないと仮定し、質問内容が「押しボタン回数がランダムに
記録されている」というところに限定しておきますね。
回路がどのように構成されているかはわかりませんが、最初の押しボタン検出ループで、押されている間はず~~とカウントアップするわけですね。
作成意図はたぶん押された回数を取得したいということでしょうから、これでは意図した結果にならないとおもいます。
ではどうすればよいのでしょうか。オーソドックスな解答では
微分をとればよい、ということになるのでしょう。
つまり、
前回のキーセンスでは押されていない
かつ
今回のキーセンスでは押されている
という条件をみればよいのです。
ただし、ハード的にボタンのチャタリングがとれていれば、の話ですが。
チャタリング防止回路がないばあいには、チャタリングがとれるのに十分な時間をおいて複数回の検出をおこなうことになるとおもいます。
とりあえず、答えられるのはこれくらいでしょうか。
がんばってくださいね。
ありがとうございます.
チャッタリング防止回路がないので,十分な時間を取ることにしました.
if(RA0==0){
DelayMs(10);
if(RA0==0){
++up_1;
}
}
No.2
- 回答日時:
ボタンスイッチのポートの読み方がよくありません。
ポートを直接読んでいるのが誤りです。
ボタンスイッチのポートの読みをスイッチの立ち上がりエッジでスイッチONとするような処理を入れないとうまく行きません。
インターバル・タイマーを使ってボタンスイッチのポートの読みを立ち上がりエッジで捕らえるように改造するとうまく行くと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 工学 1つのタクトスイッチで複数の並列回路を閉じ、アースにつなげることができるスイッチはありますか。 2 2022/08/06 10:38
- Visual Basic(VBA) Powerpointでランダムな数字の結果を表示するマクロ 2 2023/08/04 10:04
- JavaScript jsで診断コンテンツのページ内切り替えについて 1 2023/04/14 17:31
- その他(趣味・アウトドア・車) Arudino nanoが正常に動作しない原因 1 2022/10/30 18:29
- Visual Basic(VBA) VBAで早押しゲームを作りたい 4 2022/05/12 13:46
- Excel(エクセル) excelvbaでスライドショーを作りたい 2 2023/04/20 14:32
- その他(プログラミング・Web制作) uwscとWinShotを使いスクリーンショットを撮る 1 2022/06/30 21:15
- その他(プログラミング・Web制作) micropythonコード 修正 1 2023/06/13 17:22
- JavaScript HTMLでJavaScriptを使用してプログラムを作ります。 入力されたパスワードを取得して、パス 2 2022/10/18 01:05
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ネットワークにある不明なIPを...
-
リピータハブとL2スイッチの違...
-
SW、HUBのIPアドレスの調べ方
-
スイッチングハブのスピード混...
-
ケーブルの芯の数について
-
hostsファイルで8080ポート指定
-
成端と整端どっち?
-
VLANインターフェースがDownす...
-
VNCでリモート 接続できない
-
どのHUBのポートに刺さっている...
-
スピーカーからラジオらしき音...
-
セカンダリIPアドレスって何で...
-
LANのハブをつなぐと末端ほど遅...
-
社内ネットワークには繋がるが...
-
イーサネットケーブルとLANケー...
-
Windows10を再インストールしよ...
-
FTPサーバのポートを変更したら...
-
USB タコ足をするとスピードは...
-
8極4芯と8極8芯のケーブルの違い
-
TCP 445, 5554, 9996を塞ぐとは
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ちょびっつ」について
-
スイッチングハブのMACアドレス
-
ネットワークにある不明なIPを...
-
リピータハブとL2スイッチの違...
-
スイッチの末端の接続可能PC台...
-
回線速度の実験
-
成端と整端どっち?
-
ケーブルの芯の数について
-
hostsファイルで8080ポート指定
-
SW、HUBのIPアドレスの調べ方
-
スイッチングハブのスピード混...
-
VLANインターフェースがDownす...
-
イーサネットケーブルとLANケー...
-
どのHUBのポートに刺さっている...
-
スピーカーからラジオらしき音...
-
TEIとは?
-
LANケーブルの色順を、まったく...
-
社内ネットワークには繋がるが...
-
NNTの代理店が「モデムを無償で...
-
1000BASE-TXと1000BASE-Tってそ...
おすすめ情報