IOからスイッチ情報を入力

スイッチの入力を付け、押し下げを判断しする処理

 

マイコンH8にスイッチ接続し、スイッチ押し下げをマイコンで検出、LEDを動作させる方法


スイッチ情報

考え方など基本は同じですので、まず 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が消灯します。ボタンを離せば、またピコピコ点灯します。

 

 

 

 

スポンサーリンク
  • facebook
  • twtter
  • google+
  • hatena