• 追加された行はこの色です。
  • 削除された行はこの色です。
閲覧総計:&counter();  (本日:&counter(today);  昨日:&counter(yesterday);)~
 *スイッチ入力(16F1827 XC8) [#n8347044]
 
 今回はスイッチ動作の確認を行った。
 スイッチ(RB4)を押している間だけLED(RA1)が点灯するプログラム。
 
  【ポイント】
 【ポイント】
 ・スイッチ(RB4)のプルアップは、16F1827のPORTBは内部ウィークプルアップ機能
 を持っているので、これを利用した。
 OPTION_REGbits.nWPUEN = 0; // 0:PORTB内部プルアップ利用に設定
 WPUBbits.WPUB4 = 1; // RB4をウィークプルアップ
 2014/1/1
 
 |&attachref(,zoom,200x300,button){新しい写真添付};|&attachref(,zoom,200x250,button){新しい写真添付};|
 |&attachref(TS3V0004.JPG,zoom,200x300,button){新しい写真添付};|&attachref(1827switchのプログラム画面.jpg,zoom,200x250,button){新しい写真添付};|
 
  /*スイッチを押してる間だけLEDが点灯する
   * PIC16F1827
   * XC8 v1.20
   * LED:RA1,RA2
   * スイッチ:RB4
   */
  #include <xc.h>
   
  #pragma config FOSC = INTOSC, WDTE = OFF, BOREN = OFF, IESO = OFF, FCMEN = OFF
  #pragma config PLLEN = OFF, STVREN = OFF, LVP = OFF
   
  int main(void) {
       //PICの初期設定
      PORTA = 0b00000000; //PORTAの中身をきれいにする
      PORTB = 0b00000000; //PORTBの中身をきれいにする
      TRISA = 0b00000000; //PORTA全てを0:出力に設定
      TRISB = 0b00010000; //PORTBはRB4を1:入力に他を全て0:出力に設定
      OSCCON = 0b01110000; //PLL:OFF, 内部クロック8MHzで駆動
      OPTION_REGbits.nWPUEN = 0; // 0:PORTB内部プルアップ利用に設定
      WPUBbits.WPUB4 = 1; // RB4をウィークプルアップ
      ANSELA = 0b00000000; //AN0-AN4は全て0:デジタルI/Oとする
      ANSELB = 0b00000000; //AN5-AN11は全て0:デジタルI/Oとする
   
      //メイン処理
      LATAbits.LATA2 = 1; //RA2:パワーオンを示すLED点灯
      while(1) {
           if(PORTBbits.RB4 == 0) { //RB4のswitch 0:downの時
              LATAbits.LATA1 = 1; //RA1 LED ON
           } else { //RB4のswitch 1:upの時
              LATAbits.LATA1 = 0; //RA1 LED OFF
           }
      }
  }
 
 ★この情報は役に立ちましたか?
 #vote(はい[0],普通[0],いいえ[0])
 
 #comment_nospam