• 追加された行はこの色です。
  • 削除された行はこの色です。
 #freeze
 閲覧総計:&counter();  (本日:&counter(today);  昨日:&counter(yesterday);)
 
 *スイッチ入力(基本) [#vf52c2fe]
 
 スイッチのオン(ON)、オフ(OFF)信号をPICに取り込む方法(スイッチ入力)を紹介します。
 「PORTB 内部プルアップ機能」を利用
 MikroCではスイッチのチャタリングを回避できる「Button()関数」が用意されている。
   07/02/11
 
 |&attachref(,zoom,150x150,button){新しい写真添付};|&attachref(,zoom,150x150,button){新しい写真添付};|
 ・「PORTB 内部プルアップ機能」を利用
 ・MikroCではスイッチのチャタリングを回避できる「Button()関数」が用意されている。  07/02/11
 
 |&attachref(P1010293.JPG,zoom,150x150,button){新しい写真添付};|&attachref(16F628Aピンデザイン画像.jpg,zoom,150x150,button){新しい写真添付};|
 
  /**
  * 16F88 アナログ入力テスト 抵抗ーLED点滅時間
  * A/D値で発光ダイオード(LED)の点滅間隔を変更する
  * スイッチ入力
  * (スイッチを押している間だけON、はなすとOFF)
  *
  * PIC16F88
  * PIC16F628A   内蔵4MHz
  * LED: RB3 スイッチ: RB4
  * 電源:乾電池3本(4.5V)
  *
  * A/D: RA3 (10KΩ半固定抵抗で分圧しアナログ値を生成)
  * LED: RA0
  * Clock: 8.0MHz 内蔵発振器使用
  * Devvice Flags:
  * _CP_OFF  _CCP1_RB3  _DEBUG_OFF  _WRT_ENABLE_OFF
  * _CPD_OFF  _LVP_OFF  _BODEN_OFF  _MCLR_OFF  _PWRTE_ON
  * _WDT_OFF  _INTRC_IO  _IESO_ON__CFG2  _FCMEN_ON__CFG2
  *
  * MikroC v6.2.1
  * Device Flags: _BODEN_OFF _BOREN_OFF _CP_OFF _PWRTE_ON _WDT_OFF
  *        _LVP_OFF _MCLRE_OFF _INTRC_OSC_NOCLKOUT
  * MikroC 2.1
  */
  void main() {
      //使用変数の定義
      unsigned int temp;
      PORTB = 0b00000000; //PORTBの中身をきれいにする
      TRISB = 0b00010000; //RB4を1:入力、他は0:出力に設定
      OPTION_REG.NOT_RBPU = 0; //PORTBを内部プルアップ
  
      //マイコンの初期化
      //内臓クロック8MHzに設定
      OSCCON.IRCF2=1;
      OSCCON.IRCF1=1;
      OSCCON.IRCF0=1;
  
      //A/D変換clock設定 0.125us*16倍=2.0us
      ADCON1.ADCS2=1;
      ADCON0.ADCS1=0;
      ADCON0.ADCS0=1;
  
      // A/D利用PORTの設定 // ANALOG=1, DIGITAL=0 //
      ANSEL = 0b00001000; //RA3のみアナログ使用
  
      PORTA = 0b00000000; //PORTAの中身をきれいにする
      TRISA = 0b00001000; //RA3のみ1:入力に設定、他は0:出力
      //マイコンの初期化終わり
  
      do {
          //アナログデータの取得 10bit(0~1023)
          temp = ADC_Read(3); //RA3(AN3)アナログ入力
  
          //LED点滅間隔が0-1023msecで滑らかに変更出来る
          PORTA.F0 = 1;
          VDelay_ms(temp);
          PORTA.F0 = 0;
          VDelay_ms(temp);
      } while(1);
          if(Button(&PORTB, 4, 1, 0)) { //スイッチONの場合
              PORTB.F3 = 1; //LED ON
          } else {              //スイッチOFFの場合
              PORTB.F3 = 0; //LED OFF
          }
      }while(1);
  }
 
 
 ★この情報は役に立ちましたか?
 #vote(はい[0],いいえ[0])
 #vote(はい[45],普通[16],いいえ[21])
 
 #comment