#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(はい[6],いいえ[6]) #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(はい[7],いいえ[2]) #comment_nospam