キー入力処理方法

【キー入力とは?】

 コンピュータ、特にマイクロコンピュータは直接ハードウェアと
接続されることが多く、それらとの接続の際のノウハウがあります。
ここではいわゆるスイッチをマイクロコンピュータに接続し、プログ
ラムでこの入力を行う場合のノウハウを説明します。


【キーとの接続方法】

 一般にスイッチはONの時GNDつまりゼロ電位になるように接続
します。その方がノイズなどに強くなるからです。これを簡単な回路
図で示したのが下図です。
まず、スイッチの片方は接地し、もう片方をマイコンの入力ポートに
接続します。その時その同じスイッチの端子を数kΩの抵抗を通して
5Voltに接続します。こうすると、スイッチがOPENの間は入力ポート
には5Vが加わりこれをプログラムで命令を使って読むと「1」とな
ります。またスイッチをONとすると入力ポートには0Voltが加わる
ことになり、これを読むと「0」となります。
これで、プログラムで入力ポートを命令で読むとスイッチのON/OFFの
状態により、0/1となり状態の区別がつくことになります。


【どう入力するか】

 プログラムの命令で読むということはどういうことでしょうか? 
これは結局、レジスタの状態と同じことになります。つまり、外部の
信号のHi/Lowにより、レジスタの1/0と同じことになります。
従って通常のレジスタの読み込みと全く同じ様に読むことができます。
PICシリーズの実際の例でいくと
    
    MOVF  PORTA,W   ポートAからWレジスタに読み込む

    BTFSC  PORTB,1   ポートBのRB1に0入力があったら
               次の命令をスキップする


【チャッタリング】

 キー入力を扱う時にいつも言われることに「チャッタリング」とか
「バウンス」とかいう言葉があります。これは何かというと、スイッチ
の接点がONになるとき、スイッチの可動部に機械的なばねを使っている
ため、非常に短時間でみると接点にすぐ安定して付くわけではなく、何回
かはずんでから安定した状態になります。この間は接点が付いたり離れた
りしているため、信号もHiとLowの間を行ったり来たりしています。
従って高速のコンピュータでこれを読み込むと0と1を非常に短時間の間
繰り返すことになってしまいます。
この繰り返しの時間は、普通数msecですが、コンピュータの時間から見る
とかなりの長い時間となってしまうため、0と1に相当する処理をバタバ
タと繰り返すため非常に不安定な動作をすることになってしまいます。
この状態を時間拡大してあらわしたのが下図で、プログラム処理Aが対策
無しの状態をあらわしています。

  

これを改善する方法は、上図のプログラム処理Bのように、一旦入力の
変化を感知したら、数msecのタイマーを入れて待ち、待った後にもう一度
読み込んで感知した状態と同じであることが確認できたら初めて変化に対応
する処理に進みます。もし再度確認した時に、変化が無い状態であったら
何もせず元の状態のままであったとして無視します。


【チャッタリングの持続時間は?】

 キーのチャッタリングの持続時間はどれぐらいなのでしょうか? これは
キーの種類、構造上の種類によって幅があります。
おおよそ下記のような持続時間と思って処理すれば、ほぼ間違いなく安定し
た処理になると思います。

   1.トグルスイッチ     30〜50msec
   2.キーボードのスイッチ   5〜10msec
   3.押しボタンスイッチ   20〜30msec
   4.大型トグルスイッチ   50〜100msec
   5.小型リレー接点      3〜10msec
   6.ロータリースイッチ    3〜10msec


  次のページへ     目次ページへ