PIN3~9がキースキャン、PIN3~10がキーリターンで共用。タイミングによって切り替わる。
PIN12(DIR)がHighでパソピアからスキャンラインとブロック信号が届くので、PIN11(CLOCK)の立ち上がりで、その信号を保持。
スキャンライン(KSL)とブロック信号(KB)から、キースキャン(nKS 0~B)の12通りを判断
KSL 0 | KSL 1 | KSL 2 | KSL 3 | |
---|---|---|---|---|
KB_A | nKS 0 | nKS 1 | nKS 2 | nKS 3 |
KB_B | nKS 4 | nKS 5 | nKS 6 | nKS 7 |
KB_C | nKS 8 | nKS 9 | nKS A | nKS B |
DIRがLowになったら、そのキースキャン上で押されているキーをリターン(nKR)
DIRがHighの時間は1usで、CLOCKの立ち上がりは、ほぼその真ん中。
つまりキーボードは0.5us以内に、スキャン信号を読み取り、そのキースキャン上で押されているキーがあればリターン信号として返答していることに。
デフォルトはオールスキャン状態。キーボードは、押されたキーリターンを全て返答すればよい。
何かキーリターンすると、しばらくして37.5us間隔でキースキャン13回(KS 0~Bの12回と、最後はオールスキャン)が届くので、キーボードはそれぞれに対応するキーリターンをする
0 件のコメント:
コメントを投稿