2007年5月29日火曜日

エラーが消えない!!! MPLAB PIC16F873A にて Error[118] : Overwriting previous address contents (0000) ってなに?

最近PICのプログラミングにはまっています。
2センチほどの小さなICにプログラムが書き込めて電池で動作します。
LEDを8個ならべて順番に光らせてナイトライダーってのも簡単にできちゃいます。

で、今日遭遇したエラーメッセージ

Error[118] C:\PROJECT\PIC\KITCHINTIMER\KT03A.ASM 74 : Overwriting previous address contents (0000)
Error[118] C:\PROJECT\PIC\KITCHINTIMER\KT03A.ASM 74 : Overwriting previous address contents (0000)
Error[118] C:\PROJECT\PIC\KITCHINTIMER\KT03A.ASM 75 : Overwriting previous address contents (0001)
Error[118] C:\PROJECT\PIC\KITCHINTIMER\KT03A.ASM 75 : Overwriting previous address contents (0001)

オーバーライトしているとかって。。。分からん。
何を修正してから出てきたのか調べていたら、サブルーチンを追加してから出てきていた。
かれこれ調べて6時間。やっと分かった!!!


== kto3a.asm ============

#include "mathlib.inc"

ORG 0x000
nop ; nop required for icd
goto main

:

== mathlib.inc ============

h2bcd
nop
nop
return

========================

ってな感じでサブルーチンをインクルードファイルに入れていた!!!
展開されてコンパイルされるとこんな感じになるので
========================
h2bcd
nop << 0x000
nop << 0x001

return

ORG 0x000
nop << 0x000 no !!!!!!
goto main

========================
インクルードされたh2bcdがアドレス0x000に展開されているのに、
その後のORG 0x000でアドレスがリセットされ
メインプログラムを0x000から書き込もうとしているのでエラーメッセージが出ていた。
なるほど。エラーになるわけですねぇ。。。
C言語の感覚が残っているとこんなポカミスしちゃうんですねぇ。

0 件のコメント: