- 9729. 入力について。 [ゼロ] 2006/02/24 16:54
- 初めまして。初心者なので質問もおかしいかもわかりませんが、よろしくお願いします。早速質問です。PICは16F84Aを使っています。入力はRA0からRA4を使用しRA0,RA1,RA2にスイッチをつなぎ、RA0に1が入力されたらLEDが点灯、同様にRA1,RA2もLEDが点灯するようにしました。それぞれ入力を単体で処理はできるのですがたとえば、RA0,RA1が1なら点灯のような2つの入力を同時に処理することはできるのでしょうか?わかりにくい質問で申し訳ありませんがよろしくお願いします。
- 9730. Re: 入力について。 [Zero] 2006/02/24 17:18
- >初めまして。初心者なので質問もおかしいかもわかりませんが、よろしくお願いします。早速質問です。PICは16F84Aを使っています。入力はRA0からRA4を使用しRA0,RA1,RA2にスイッチをつなぎ、RA0に1が入力されたらLEDが点灯、同様にRA1,RA2もLEDが点灯するようにしました。それぞれ入力を単体で処理はできるのですがたとえば、RA0,RA1が1なら点灯のような2つの入力を同時に処理することはできるのでしょうか?わかりにくい質問で申し訳ありませんがよろしくお願いします。
当然できます。
- 9731. Re: 入力について。 [しおん] 2006/02/24 17:40
- はい、可能です。特別問題はありません。
(両方押されていたらLEDを点灯させたい言う事ですよね?)
あとは、プログラムでどのように判断させるかだけです。
基本は「RA0,RA1両方とも1か?」という判断をさせれば良いのです。
やり方はいろいろありますが、一例の「考え方を」載せます。
PORTAの値(8ビット)を読み出して、3とand(アンド)をとります。
その結果が3であれば両方1という事になります。
なぜ、3とアンドをとるかというと、
RA0はビット0つまり1
RA1はビット1つまり2進で10つまり、10進で2、両方あわせると3。
PORTAの内容と3のANDをとると、ビット0とビット1つまりRA0とRA1の内容のみ取り出せる事になります。
その、取り出した結果が3つまり両ビットとも1であれば、RA0,RA1ともに1であると判断できるのです。
わかりにくいかな?
- 9782. Re: 入力について。 [ゼロ] 2006/02/27 08:19
- ご回答ありがとうございます。こちらの勉強不足であることを大変恥ずかしく思います。今回のお返事を参考にもう少し勉強したいと思いますのでまた何かありましたらよろしくお願いします。