プロが教えるわが家の防犯対策術!

PICを最近はじめました。

スイッチを10回押せば、出力がONするようなプログラムを作るにはどうすればよろしいでしょうか?

PICは16F819で、コンパイラはCCS社のPCMを使用しています。

わかる方、よろしくお願いいたします。

A 回答 (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
    • good
    • 1

アルゴリズムだけ。


(1)カウント0にする。
(2)スイッチのOFFを待つ。20ms後OFFを再確認(チャタリング対策)。
(3)スイッチのONを待つ。20ms後ONを再確認(チャタリング対策)。
(4)カウントアップ
(5)カウントが10未満なら(2)へ。
(6)出力をONにする。

この回答への補足

申し訳わけありませ。
C言語もPICも初めてですので、実際のプログラムで教えていただけるとうれしいのですが...
一応PLC制御はわかるので、回答していただいたに、順番に考えていくことはわかるのですが。

補足日時:2009/06/08 19:10
    • good
    • 0
この回答へのお礼

教えていただいた通りに考えたら解決しました。
ありがとうございました。

お礼日時:2009/06/14 15:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!