閲覧総計:&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の中身をきれいにする
     //内蔵発信機 8MHz使用に設定
     OSCCON = 0b01110000;
     INTCON2.NOT_RBPU = 0; //PORTBを内部プルアップ
     TRISB = 0b01000000; //PortBのRB6を1:入力に他は0:出力に設定
     TRISC = 0b00000000; //PortC 8個全て0:出力設定
     
     do //doとwhileの間を繰り返す
     {
         if(Button(&PORTB, 6, 1, 0)) //スイッチONの場合
         {
             PORTC.F1 = 1; //LED ON
         }
         else        //スイッチOFFの場合
         {
             PORTC.F1 = 0; //LED OFF
         }
     } while(1); //doとwhileの間を繰り返す
 }

**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(はい[0],いいえ[0])

#comment