マイコン独立大作戦
キーボードインターフェースの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
WindowsパソコンにUSB接続して使う現行方式はそれなりに便利ではありますが、ときとしてWindows
のしがらみから開放されて、小さいながらも独立した一個のパソコンとして機能したいと思うこともあります。
独立大作戦の作戦その1はCRTインターフェースボードの製作です。
そして作戦その2は、やっぱりキーボードインターフェースしかありませんでしょう。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第13回]
●PICの割込み動作の確認
前回PICプログラムのところで説明しました割込みの動作確認のためのRA7出力を確認してみました。
上側(CH1)がPS/2キーボードから出力されたCLKです。
下側(CH2)はPIC16F87のRA7出力です。
RA7はCLKの立下りで発生した割り込み処理毎にトグル出力されます。
この波形を見ると割込みは正しく機能しているようです。
ここまでできたところで、準備完了です。
それではいよいよND80Z3.5のプログラムでPIC16F87から出力されるはずのキーコードを読み取ってみることにします。
●ND80Z3.5のキー入力プログラム
下が作成したキー入力プログラムです。
2016/10/21 8:57 keypic1a.txt END=8119 ;;; keyboard test program from pic16f87 ;16.10.8 10.21 ; ORG $8100 ; HXDP2=$104B ; 8100 3E8A START0:LD A,8A 8102 D383 OUT (83),A 8104 3EFF LD A,FF 8106 D382 OUT (82),A 8108 DB81 START:IN A,(81);keycode 810A B7 OR A 810B CA0881 JP Z,START 810E 4F LD C,A 810F 67 LD H,A 8110 CD4B10 CALL HXDP2 8113 79 LD A,C 8114 FE1A CP 1A;=Z 8116 C8 RET Z 8117 C30881 JP START ; ;END HXDP2 =104B START =8108 START0 =8100 |
まずはうまく読み取れるかどうかをテストするだけですから、たったこれだけの簡単なプログラムです。
ASCIIコードへの変換などはやっていません。
キーが押されたときにPIC16F87から出力されるスキャンコードを読み取って、それを16進数で表示するだけのプログラムです。
[第5回]のキー入力プログラムで、KEYINサブルーチンをPIC16F87から出力される8ビットデータを読み取る命令、
IN A,(81)
に置き換えました。
下が実行結果です。
logfile nd80zlog\10210859.txt open ND80ZVに接続しました 0001 0000 - z 1000 00C3 - *** nd80z3 basic **** ndwr2h.bin loaded,from E23F to E535 >/ld keypic1a.bin,8100 loading KEYPIC1A.BIN ...001a(26)bytes loaded,from 8100 to 8119 >usr($8100) FFFFFFFF161616161616161616161616161616161616161616161616161616161616161616161616 16161616161616161616161616161616161616161616161616161616161616161616161616161616 16161616161616161616161616161616161616161616161616161616161616161616161616161616 16161616161616161616161616161616161616161616161616161616161616161616161616161616 16161616161616161616161616161616161616161616161616161616161616161616161616161616 16161616161616161616161616161616161616161616161616161616161616161616161616161616 16161616161616161616161616161616161616161616161616161616161616161616161616161616 16161616161616161616161616161616161616161616161616161616161616161616161616161616 16161616161616161616161616161616161616161616161616161616161616161616161616161616 16161616161616161616161616161616161616161616161616161616161616161616161616161616 16161616161616161616161616161616161616161616161616161616161616161616161616161616 16161616161616161616161616161616161616161616161616161616161616161616161616161616 16161616161616161616161616161616161616161616161616161616161616161616161616161616 16161616161616161616161616161616161616161616161616161616161616161616161616161616 16161616161616161616161616161616161616161616161616161616161616161616161616161616 16161616161616161616161616161616161616161616161616161616161616161616161616161616 16161616161616161616161616161616161616161616161616161616161616161616161616161616 16161616161616161616161616161616161616161616161616161616161616161616161616161616 16161616161616161616161616161616161616161616161616161616161616161616161616161616 16161616161616161616161616161616161616161616161616161616161616161616161616161616 16161616161616161616161616161616161616161616161616161616161616161616161616161616 16161616161616161616161616161616161616161616161616161616161616161616161616161616 161E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E 1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E 1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E 1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E 1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E 1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E 1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E 1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E 1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E 1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E 1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E 1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E 1E1E1E1E1E1E1E1E1E1E262626262626262626262626262626262626262626262626262626262626 26262626262626262626262626262626262626262626262626262626262626262626262626262626 26262626262626262626262626262626262626262626262626262626262626262626262626262626 26262626262626262626262626262626262626262626262626262626262626262626262626262626 26262626262626262626262626262626262626262626262626262626262626262626262626262626 26262626262626262626262626262626262626262626262626262626262626262626262626262626 26262626262626262626262626262626262626262626262626262626262626262626262626262626 26262626262626262626262626262626262626262626262626262626262626262626262626262626 26262626262626262626262626262626262626262626262626262626262626262626262626262626 26262626262626262626262626262626262626262626262626262626262626262626262626262626 262626262626262626262626262626262626262626262626262626262626262626261C1C1C1C1C1C 1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C 1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C 1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C 1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C 1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C 1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C 1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C 1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C 1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C 1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C 1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C 1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C 1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C 1C1C1C32323232323232323232323232323232323232323232323232323232323232323232323232 32323232323232323232323232323232323232323232323232323232323232323232323232323232 32323232323232323232323232323232323232323232323232323232323232323232323232323232 32323232323232323232323232323232323232323232323232323232323232323232323232323232 32323232323232323232323232323232323232323232323232323232323232323232323232323232 32323232323232323232323232323232323232323232323232323232323232323232323232323232 32323232323232323232323232323232323232323232323232323232323232323232323232323232 32323232323232323232323232323232323232323232323232323232323232323232323232323232 32323232323232323232323232323232323232323232323232323232323232323232323232323232 32323232323232323232323232323232323232323232323232323232323232323232323232323232 21212121212121212121212121212121212121212121212121212121212121212121212121212121 21212121212121212121212121212121212121212121212121212121212121212121212121212121 21212121212121212121212121212121212121212121212121212121212121212121212121212121 21212121212121212121212121212121212121212121212121212121212121212121212121212121 21212121212121212121212121212121212121212121212121212121212121212121212121212121 21212121212121212121212121212121212121212121212121212121212121212121212121212121 21212121212121212121212121212121212121212121212121212121212121212121212121212121 21212121212121212121212121212121212121212121212121212121212121212121212121212121 21212121212121212121212121212121212121212121212121212121212121212121212121212121 2121212121212121212121212121212121212121212121211A >/exit 0000 00C3 - リモート接続を終了しました logfile closed at Fri Oct 21 09:00:19 2016 |
PS/2キーボードで[1][2][3][a][b][c][z]と押しました。
各キーのスキャンコードは次の通りです([第9回]参照)。
[1] 16
[2] 1E
[3] 26
[a] 1C
[b] 32
[c] 21
[z] 1A
ちょいちょいと押しただけですけれど、ツツツーと表示が走りました。
[第5回]の実行結果と比べてみてください。
ログですから実際の表示速度を体感することはできませんが、表示回数の違いから、速度の違いは推測できると思います。
次回はこのプログラムを発展させて、ASCIIコードへの変換や[Shift]機能の組込みを行います。
キーボードインターフェースの製作[第13回]
2016.10.23upload
前へ
次へ
ホームページトップへ戻る