• 追加された行はこの色です。
  • 削除された行はこの色です。
#freeze
 閲覧総計:&counter();  (本日:&counter(today);  昨日:&counter(yesterday);)
 
 【目次】(項目をクリックすると飛べます)
 #contents
 ~
 *スイッチ入力(18F2320) [#tbe5d351]
 
 18F2320は、16F系と同様に「PORTB内部プルアップ機能」が装備されている。この機能
 を利用し、18F2320におけるスイッチのオン(ON)、オフ(OFF)信号をPICに取り込む方法
 (スイッチ入力)と稼動を確認した。 07/09/29
 
 ・「PORTB 内部プルアップ機能」を利用
    (INTCON2.NOT_RBPU = 0; //PORTBを内部プルアップ)
 ・MikroCで用意されている、スイッチのチャタリングを回避できる「Button()関数」を
 用いる。
 
 ※C18のプログラムを追記 07/10/04
 
 &attachref(P1010550.JPG,zoom,150x150,button){新しい写真添付};
 
 **MikroCのプログラム [#zf91387c]
 
  /**
  * 18F2320の稼働テスト スイッチ入力
  * (スイッチを押している間だけON、はなすとOFF)
  *
  * スイッチ:RB6  LED:RC1
  *
  *Clock: 8.0MHz 内蔵発振器使用
  *Device Flags:
  * _INTIO2_OSC_1H _WDT_OFF_2H _MCLRE_OFF_3H _LVP_OFF_4L
  * (その他はデフォルト設定でOK)
  *
  * MikroC v7.0.0.3
  */
  void main()
  {
      //PICの初期化
      PORTB = 0b00000000; //PortBの中身をきれいにする
      PORTC = 0b00000000; //PortCの中身をきれいにする
      OSCCON = 0b01110000; //内蔵発信機 8MHz使用に設定
      INTCON2.NOT_RBPU = 0; //PORTBを内部プルアップ
      TRISB = 0b01000000; //PortBのRB6を1:入力に他は0:出力に設定
      TRISC = 0b00000000; //PortC 8個全て0:出力設定
      
      while (1)
      {
          if(Button(&PORTB, 6, 1, 0)) //スイッチONの場合
          {
              PORTC.F1 = 1; //LED ON
          }
          else        //スイッチOFFの場合
          {
              PORTC.F1 = 0; //LED OFF
          }
      }
  }
 
 ★この情報は役に立ちましたか?
 #vote(はい[1],いいえ[1])
 #vote(はい[2],いいえ[2])
 
 #comment_nospam
 
 **C18のプログラム [#wcd0f945]
 
  /**
  * 18F2320の稼働テスト スイッチ入力
  * (スイッチを押している間だけON、はなすとOFF)
  *
  * スイッチ:RB6  LED:RC1
  * Clock: 8.0MHz 内蔵発振器使用
  *
  * C18 StudentEdition v3.12
  */
  #include <p18f2320.h>
  #include <delays.h>
  
  //config設定
  #pragma config OSC = INTIO2 //内部発振器を利用
  #pragma config WDT = OFF //ウォッチドッグタイマOFF
  #pragma config MCLRE = OFF //MCLRを内部プルアップ
  #pragma config LVP = OFF //低電圧ICSP制御OFF
  //その他のconfigはデフォルト設定のまま
  
  void main(void)
  {
      //初期化
      PORTB = 0b00000000; //PortBの中身をきれいにする
      PORTC = 0b00000000; //PortCの中身をきれいにする
      OSCCON = 0b01110000; //内蔵発振器を8MHz使用に設定
      INTCON2bits.NOT_RBPU = 0; //PortBを内部プルアップ
      TRISB = 0b01000000; //PortBのRB6を1:入力に他は0:出力に設定    
      TRISC = 0b00000000; //PortC 8個全て0:出力設定
  
      while(1)
      {
          if (PORTBbits.RB6 == 0) //スイッチON(Low)の場合
          {
              LATCbits.LATC1 = 1; //LED ON
          }
          else  //スイッチOFF(Hight)の場合
          {
              LATCbits.LATC1 = 0; //LED OFF
          }
      }
  }
 
 
 ★この情報は役に立ちましたか?
 #vote(はい[4],いいえ[2])
 
 #comment_nospam