- ベストアンサー
PICでの入力カウントについて
PICを最近はじめました。 スイッチを10回押せば、出力がONするようなプログラムを作るにはどうすればよろしいでしょうか? PICは16F819で、コンパイラはCCS社のPCMを使用しています。 わかる方、よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
16F819を使った事がないCCS社のコンパイラも使ったことが無いのでとりあえずサイトを紹介します。 http://www.picfun.com/ctechframe.html それと質問時は、回路図とか動作クロックとか詳細な情報を書いたくださいね。とりあえず、そこらを適当に書いたC言語コードです。 動作確認もコンパイルもしてないんでエラーがある可能性は高いです。 #device PIC16F819 #use delay(clock=10000000) #byte port_b=6 main() { int count; set_tris_b(0x01);//b0:SW b1:LED count=0;//カウント // LED出力OFF。LEDが負論理ドライブの場合。 port_b = 0x02; while(count<10){ //OFF待ち while(1){ if( (port_b&0x01) == 0x00 ) { delay_ms(20);//20ms待ち if( (port_b&0x01) == 0x00 ) { break; } } } //ON待ち while(1){ if( (port_b&0x01) == 0x01 ) { delay_ms(20);//20ms待ち if( (port_b&0x01) == 0x01 ) { break; } } } //カウント count++; } // LED出力ON port_b = 0x00; } >C言語もPICも初めてですので、実際のプログラムで教えていただけるとうれしいのですが... C言語の勉強をPICで実際に動いているか確認するのが面倒なため、PICで行うのはお勧めしません。Win上で動くC言語での勉強をお勧めします。 WinでのC言語の勉強は、こちらを使いましょう。 http://cvwww.ee.ous.ac.jp/vc08prog.html
その他の回答 (1)
- zwi
- ベストアンサー率56% (730/1282)
アルゴリズムだけ。 (1)カウント0にする。 (2)スイッチのOFFを待つ。20ms後OFFを再確認(チャタリング対策)。 (3)スイッチのONを待つ。20ms後ONを再確認(チャタリング対策)。 (4)カウントアップ (5)カウントが10未満なら(2)へ。 (6)出力をONにする。
お礼
教えていただいた通りに考えたら解決しました。 ありがとうございました。
補足
申し訳わけありませ。 C言語もPICも初めてですので、実際のプログラムで教えていただけるとうれしいのですが... 一応PLC制御はわかるので、回答していただいたに、順番に考えていくことはわかるのですが。