| HOME | 回路チェック | SWICHシリアル出力 | シリアル入力 | RESPONSE | WEB |
/*********************************************************/
/*     SWICH                                 */ 
/*********************************************************/      



swich.c

 今度はスイッチのチェックです。
スイッチを押したり放したりするたびにLEDが交互に点滅を繰り返します。

 /********************************************************/
 /* スイッチ(RA0)により 交互に点灯消灯します             */
 /*             swich.c                       */
 /*             pic16F84A                      */
 /********************************************************/

 #include<pic.h>
 __CONFIG(UNPROTECT & PWRTEN & WDTEN & XT );

 main()
 {
     unsigned int i; //変数の宣言
     TRISA=0x01; //入出力設定 A0ポートを入力他は出力に
     TRISB=0x00; //入出力設定 Bポートすべて出力に

     for(i=2000;i>0;i--); //動作安定のためのウェイト

     while(1){
          if(RA0){             //スイッチが押されたか
               RB0 = 1; //RB0点灯
               RB2 = 1; //RB2点灯
               RB4 = 1; //RB4点灯
               RB6 = 1; //RB7点灯

               RB1 = 0; //RB1消灯
               RB3 = 0; //RB3消灯
               RB5 = 0; //RB5消灯
               RB7 = 0; //RB7消灯
          }
          else{
               RB1 = 1; //RB1点灯
               RB3 = 1; //RB3点灯
               RB5 = 1; //RB5点灯
               RB7 = 1; //RB7点灯

               RB0 = 0; //RB0消灯
               RB2 = 0; //RB2消灯
               RB4 = 0; //RB4消灯
               RB6 = 0; //RB7消灯

          }
     }
 }

注)CONFIG の先頭はアンダーバー2つです。
注)for(i=2000;i>0;i--);
のi の最後の後ろはマイナスが2つです。

 if 以下は下のようにも簡単に書けます。

 if(RAO){
     PORTB=b10101010;
 }
 else{
     PORTB=b01010101;
 }

⇒Next