スイッチ情報
考え方など基本は同じですので、まず Tekurobo工作室
102.PIOからスイッチ情報を入力する を見てください
今度は前のLED回路にスイッチ入力を加えてみます。
スイッチの入力でLEDの点灯が変化するプログラムを作ります。
入力方法の説明なので手軽に、スイッチ1つを追加し、プログラムを追加、修正しただけす。
前のLEDプログラムの実行の条件をつけ、P17が1の時だけは同様に実行する処理をしました。
回路図
スイッチ入力を P17(23ピン) に加える (抵抗10KΩでプルアップ)
5Vの電源は CH1の 5V(22ピン) から取る
スイッチON で P17(23ピン)は0V、 スイッチOFF で5Vとなる
プログラム
PIO3
#include <3664.h>
void msecwait(int msec)
/*なにもしない時間稼ぎ関数*/
{
int i,j;
for (i=0;i< msec;i++) {
for (j=0;j<1588;j++); /*1588は約 1/1000s */
}
}
void main()
{
IO.PMR1.BYTE=0x00; /* 全て0にセットし、ポート使用に設定 0000 0000*/
IO.PCR1=0x7F; /* Bit7だけは0 他は全て1にセットし、出力に設定 0111 1111 */
/* PCRレジスタは IO.PCR1.BYTE 記述でない!*/
IO.PUCR1.BYTE=0x00; /* 全て0にセットし、プルアップなし*/
while (1) {
if( IO.PDR1.BIT.B7==1){ /* スイッチOFFのとき */
IO.PDR1.BIT.B4=1; /* P14--pin20 */
IO.PDR1.BIT.B5=0;
msecwait(500);
IO.PDR1.BIT.B5=1; /* P15--pin21 */
IO.PDR1.BIT.B4=0;
msecwait(500);
}
else{ /* スイッチON のとき */
IO.PDR1.BIT.B4=0; /* P14--pin20 */
IO.PDR1.BIT.B5=0;
}
}
}
前回のLED点灯と違う点は
P17(23ピン)を入力にするので、 PCRレジスタの P17(23ピン) だけ入力設定にします。
PCRレジスタ
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Data | 0 | 1 | 1 | 1 | - | - | - | - |
IO.PCR1=0x7F に変更します。
データアクセスは
23ピン-P17 の状態を見て、
- 1のときは if文の{ }内を if( IO.PDR1.BIT.B7==1){
- 0のときは else文の{ }内を 実行します。 else{
実行結果
ボタンを押している間だけ全てのLEDが消灯します。ボタンを離せば、またピコピコ点灯します。
スポンサーリンク
- twtter
- google+
- hatena