CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

ピン機能設定トラブル(2)

プログラムを最小構成になるようにどんどん削っていきながら原因を調べているうちわかったのがこれ。
 
イメージ 1
 
 
 
 
ブザーやリレーを制御するポートのON/OFFをコーディング上わかりやすいように
途中から「ON」と「OFF」というマクロを定義し、ヘッダファイルに追加していました。
 
これをメインルーチンの先頭でincludeし、その直後に続いていたのがconfig設定です。
どうやらもともと定義しなくても「ON」「OFF」はconfig設定の記述のみに使える予約語だったようです
(そのビットの正論理/負論理も考慮されている。ただしプログラム中では使用すると未定義エラーになる)
 
ところが自作のヘッダファイルを取り込んだため「ON」「OFF」が強制的に再定義されてしまい、
 
イメージ 2
 
 
 
 
 
 
 
 
 ← 「CLKOUTEN=0」になった?
 
 
 
 
 
 
 
 
CLKOUTENは負論理なので0(OFF)にしたらSEG1端子はクロック出力端子になってしまいます
 
イメージ 3
 
予約語なのに再定義できてしまい、コンパイラは警告も出さないのが腑に落ちませんがこれが
原因だったようです。
とりあえず自分が使用するマクロは「P_ON」、「P_OFF」に名前を変えて対応しました。