2026.3.4
前へ

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


KL5C80A12マイコンボードの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
KL5C80A12はZ80互換の高速高性能8ビットマイクロコントローラです。
残念なことに数年前に生産中止になってしまいました。
しかし当社ではKL5C80A12を使った組込みマイコンボードはまだ健在です。
そのKL5C80A12を使ったND80Z3.5上位互換マイコンボードの製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第87回]



●KL5C80A12のSTEP問題解決!(2)

KL5C80A12の割込み動作についてなんとなくZ80と同じ感覚で捉えていました。
思い込みと考え違いが同居していたようです。
KL5C80A12ではINT信号はプログラムの進行と非同期に受け付けられます。
そこをよく理解していませんでした。
Z80の場合には命令実行の最後のクロックのときにのみINT信号を受け付けます。
KL5C80A12の場合INT信号は直ちに受け付けられます。


[出典]川崎製鉄鰍jL5C80A12ハードウェアマニュアル

そこのところを思い違いしてしまっていました。
Z80と同じように命令の最後のクロックで受け付けられるものだと…。
よくよく確認してみるべきでした。
つまり。
EIが実行されているかどうかに関係なくINT信号は常に受け付けられるということのようです。
ということになると。
やっぱりRAMに置いたキー入力ルーチンへのJMP命令が実行された時点で発生したINT信号は直ちに受け付けられていたことになります。
それがロジアナの波形に反映されなかったのはロジアナの実行開始のタイミングにありました。
ND80KL86ボードをステップモードで立ち上げた直後に実行された最初のキー入力コールで発生したINT信号が受け付けられていたと考えられます。
そこを考え違いしていたために[8][0][0][0][ADRSSET]まで入力してキー入力待ちのループのとき(このときはROMのプログラムでキーの読み込みだけを監視する短いループになっています)、ロジアナをスタートさせていました。
ROMのキー入力ルーチンは何かキー入力しなければループしているだけでそこから抜け出しません。
何かキーを入力するとそこで処理ルーチンに戻って入力処理を行なった後再びキー入力ルーチンをコールします(ここの先頭がRAMになっていてそのときINTが発生します)。
それならということで、ロジアナをスタートさせておいて適当な数値キーを押してみました。



思った通りINT信号がキャッチされました。
RAMに置いたキー入力ルーチンへのJMP命令 C3 16 06 の先頭部分(M1)のところでINTが出力されました。
そういうことだったのでした。
このINT信号はこのタイミングで割込みコントローラに認識されるのですがすでにそれ以前にINTが受け付けられていれば重ねて受け付けはされません。
私はここでも思い違いをしていました。
これが最初のINT信号だったとするとそれは割込み信号としてKL5C80A12内部の割込みコントローラ機構に認識され確かに受け付けられます。
しかしそれはCPUがEIを実行したかDIを実行したかということとは全く無関係です。
そこで直ちにCPU(演算処理機構)によって受け付けられるわけではありません。
プログラムでEIを実行したあとではじめてCPUに割込みとして受け付けられます。

肝心のところの説明の途中なのですが時間がなくなってしまいました。
次回に続きます。

KL5C80A12マイコンボードの製作[第87回]
2026.3.4upload

前へ

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