2016.10.23
前へ
次へ
ホームページトップへ戻る

マイコン独立大作戦
キーボードインターフェースの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
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

前へ
次へ
ホームページトップへ戻る