松原拓也氏著作の[「わかるマイコン電子工作USB機器の製作」|http://www.nicotak.com/usb/index.html]の「ミニキーボードの製作」のプログラムを改造します。ポイントのみ示しています。プログラム全体については本を参照して下さい。 ""改造前の元プログラムbulkloopの著作権はサイプレスセミコンダクタ社にあります。 !!キーテーブル まずは解析結果から、キーテーブルを書き換えます。ミニキーボードは5×5マトリクスですが、このキーボードは8×11です。こんな感じ。 #define ROWMAX 11 // キーボード行数 #define COLMAX 8 // キーボード列数 BYTE xdata keytable[ROWMAX][COLMAX]={ {58,83,60,78,62,64,66,77}, //[F1 ][Num][F3 ][PgD][F5 ][F7 ][F9 ][End] . . . (中略) . . . {154,99, 0, 0, 0, 0, 0, 0} //[SRq][Fn ][ ][ ][ ][ ][ ][ ] }; xdada(またはcode)オプションを付けています。こうしないとレジスタにテーブルを作ろうとしてメモリ不足エラーになります。xdataについては本(P31)に詳しく説明されています。 !!9〜11ラインの処理 IOポートは8ビットなので足りない9〜11ラインはDポートの下位3ビットを割り当てて使います。キースキャンのはじめの辺りのコードは、 for(row=0;row