TK80/85のようにボード上のキーとLEDによって操作するモニタを書いてみました。
核となる部分はたったのこれだけです
核となる部分はたったのこれだけです
while(1){ i=hex_inkey(4,&data); switch(i){ case KEY_ADRSET: adrs=data; break; case KEY_RDDECR: adrs--; break; case KEY_RDINCR: adrs++; break; case KEY_WRINCR: *(unsigned char *)adrs++=data; break; case KEY_RUN: ((void (*)())adrs)(); break; default: break; } dsp_adrdat(adrs); }この中で
hex_inkey()は16進キーからの入力をLEDに置数してファンクションキーが押されたら
置数された値をポインタにセットしてキーコードを返す関数、
dsp_adrdat()は与えられたアドレスをLEDの左4桁に、そのアドレスのデータを右2桁に
表示する関数です
アドレスセットキーでadrsにアドレス値を保持し、ライトインクリメントキーでデータ書込みしてアドレスを1つ進めます。
RUNキーを押すと現在のアドレス値をコールしますが、ここは関数へのポインタを使って
RUNキーを押すと現在のアドレス値をコールしますが、ここは関数へのポインタを使って
((void (*)())adrs)();と処理しています。括弧が多くて一瞬こんがらがりますがこれでOKのはずです