• 追加された行はこの色です。
  • 削除された行はこの色です。
 #freeze
 閲覧総計:&counter();  (本日:&counter(today);  昨日:&counter(yesterday);)~
 *発光ダイオード(LED)の点滅(16F1827 XC8) [#u587f631]
 
 PIC16F1827で、XC8でLED(発光ダイオード)の点滅動作を確認した。
 
 【ポイント】
 1.出力には16F1XXXシリーズに装備されたLATレジスターを利用した。
 ↓なぜLATレジスターが必要か?を解りやすく解説したページ
 http://homepage3.nifty.com/mitt/pic/pic1320_06.html
  2.__delay_ms()は引数に変数が設定できないので、引数に変数が設定できる
 2.__delay_ms()は引数に変数が設定できないので、引数に変数が設定できる
 arg_delay_ms()関数を定義した。    2014/1/2
 
 |&attachref(,zoom,200x300,button){新しい写真添付};|&attachref(,zoom,200x250,button){新しい写真添付};|
 |&attachref(1827led点灯画像.jpg,zoom,200x300,button){新しい写真添付};|&attachref(16F1827ピン配置.JPG,zoom,200x250,button){新しい写真添付};|
 
  /* LEDの点滅
   * PIC16F1827
   * XC8 v1.20
   * LED:RA1,RA2
   */
  #include <xc.h>
  
  #pragma config FOSC = INTOSC, WDTE = OFF, BOREN = OFF, IESO = OFF, FCMEN = OFF
  #pragma config PLLEN = OFF, STVREN = OFF, LVP = OFF
  
  //__delay_us(), __delay_ms()へのクロック情報の設定
  #define _XTAL_FREQ 8000000 //PICのクロックをHzで設定(8MHz)
  
  //関数のプロトタイプ宣言
  void arg_delay_ms(unsigned int x);
  
  int main(void) {
      //使用変数の定義
     unsigned int wait = 500; //待ち時間の設定
  
     //PICの初期設定
     PORTA = 0b00000000; //PORTAの中身をきれいにする
     TRISA = 0b00000000; //PORTA全てを0:出力に設定
     OSCCON = 0b01110000; //PLL:OFF, 内部クロック8MHzで駆動
     ANSELA = 0b00000000; //RA4(AN4)-RA0(AN0)は全て0:デジタルI/Oとする
     ANSELB = 0b00000000; //RB7(AN6)-RB1(AN11)は全て0:デジタルI/Oとする
   
      //メイン処理
     LATAbits.LATA2 = 1; //RA2:パワーオンを示すLED点灯
  
     while(1) {
          LATAbits.LATA1 = 1; //RA1 LED ON
          arg_delay_ms(wait); //所定時間待つ
         LATAbits.LATA1 = 0; //RA1 LED OFF
          arg_delay_ms(wait); //所定時間待つ
     }
  }
  
  //待ち時間が変数設定できるarg_delay_ms()関数を定義
  //(__delay_ms()は引数に変数設定が出来ない為)
  void arg_delay_ms(unsigned int x) {
      while(x) {
          __delay_ms(1);
          x--;
      }
  }
 
 ★この情報は役に立ちましたか?
 #vote(はい[0],普通[0],いいえ[0])
 
 #comment_nospam