閲覧総計:&counter();  (本日:&counter(today);  昨日:&counter(yesterday);)

*トグルスイッチ [#w5775228]

トグルスイッチ(toggle switch)とは、スイッチを押すたびにオン(ON)、オフ(OFF)の
状態が入れ替わる動作をするスイッチの事です。

トグルスイッチ機能を実現する為の定石プログラム記法がありますので紹介します。
  07/02/11

|&attachref(P1010293.JPG,zoom,150x150,button){新しい写真添付};|&attachref(,zoom,150x150,button){新しい写真添付};|

 /**
 * トグル スイッチ
 * (スイッチを押すたびにON、OFFを切り替え)
 *
 * PIC16F628A   内蔵4MHz
 * LED: RB3 スイッチ: RB4
 * 電源:乾電池3本(4.5V)
 *
 * 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 short int oldstate;
 
     PORTB = 0b00000000; //PORTBの中身をきれいにする
     TRISB = 0b00010000; //RB4を1:入力、他は0:出力に設定
     OPTION_REG.NOT_RBPU = 0; //PORTBを内部プルアップ
 
     //LED初期点灯状態の設定
     PORTB.F3 = 1; //RB3 ON
     oldstate = 0;
 
     do {
         if(Button(&PORTB, 4, 1, 1)) oldstate = 1;
         if(oldstate && Button(&PORTB, 4, 1, 0)) { //RB4スイッチ状態の判別
             PORTB.F3 = ~PORTB.F3; //RB3状態の反転
             oldstate = 0;
         }
     }while(1);
 }

Button関数
|構文|unsigned short Button(unsigned short *port, unsigned short pin, unsigned short time, unsigned short active_state);|
|戻り値|0〜255の整数を返します。|
|説明|・この関数はボタンのチャタリング現象の影響を除去します。  ・*port:ボタンが設置したポート情報、pin:ボタンを設置したピン番号(0..7)、time:チャタリング除去時間(ミリ秒)、active_state:0か1を設定する。ボタンがアクティブか?どうか?の判別設定?parameter active_state can be either 0 or 1, and it determines if the button is active upon logical zero or logical one.|
|要求事項|ボタンピンは「入力」に設定されていなければならない。|



★この情報は役に立ちましたか?
#vote(はい[9],普通[4],いいえ[5])