NSC800ボードに8ビット16チャンネルA/DコンバータADC0817を実装しました。ファミリではありませんがCPUバスに直結できます。
NSC800はZ80とソフトウェアコンパチなのでCコンパイラSDCCがそのまま使えます。例えばこんなバッチでSRAM領域にロードするプログラムを作れます
sdcc %1.c -mz80 --code-loc 0x8000 --data-loc 0x8800 --no-std-crt0 -V
ロードされる領域は全面SRAMですが仮想的に0x8000-をROM(codeセグメント)、0x8800-をRAM(data/bssセグメント)と見做しています
A/Dコンバータのドライバもこのように簡単に記述できました。変換終了EOCをNSC810Aの汎用ポートでポーリングしています
今回、ADC0817の動作クロックにはCPU原振の1/2:2.1MHzを8分周した約260kHzを入力しています。このときの変換速度(EOCがLの期間)を見てみると約430uS。サンプリングレートにしたら約2kHzですからかなりのんびりした変換です。
ADC0817のクロック入力は640kHztypとされているので分周カウンタのタップを1個上にしておけばよかったのですが、手で回すボリウムの位置や温度センサを読んだりするぶんには十分でしょう。
アナログ入力ポートに電源電圧を分圧するボリウムを接続しAD値を7セグ表示してみました。ノイズで1LSB程度バタつきますがほとんど問題ありません。ボード上に各チャンネル毎のCRフィルタを置けばさらに良かったかもです。