プロが教えるわが家の防犯対策術!

マイコンのソフトウェアとしてYellowIDE6を使用しています。
マイコンの割り込みのポートを変更しようと思いCのソースを変更したのですが下記のメッセージが出てコンパイルできません。対策を教えてください。
《ファイル(..\..\..\STARTUP\CSGH848.ASM)内で未定義の外部シンボル(_nmi)を参照しました。》
また、参考になるサイトがあれば紹介お願いします。

A 回答 (2件)

> Cのプログラムをirq5に変更したら



元々どう書かれていたのを、どう変更したのですか?

さて、mni だろうと、irq5 だろうと同じエラーなのですから、同じように対処してください。
多分、irq1 と書かれていたのを、1カ所ほど irq5 に書き換えたのでしょうが、オリジナルのソース(アセンブラとか、ヘッダとか、もしかしたら、コンフィグレーションも含めて)で、irq1 と書いてある部分を全部探してください。
それらも、ちゃんとつじつまを合わせないと、動作はしません。
※ただし、アセンブラファイルの irq1 を irq5 と書き換えても動作しません。割り込みのメカニズムを理解しないと、irq5 をアセンブラファイルのどこに書けばいいかは、わからないと思います。

データシートなどを本気で読んでください。
参考になるサイト云々より、まず、付属の解説は理解しましょう。
    • good
    • 0
この回答へのお礼

何度も回答ありがとうございます。
焦って結果ばかり追い求めてしまいます。
基礎がないのはわかっているのですがどうしても・・・
まず、データシート、ユーザーマニュアル読み込んでみたいと思います。

お礼日時:2010/12/05 15:35

Cのソースを変更したのですか?


変更前のソースはコンパイルできていたのですか?

だとすると、状況が全くわからないのですが。

そもそも、CSGH848.ASM は、もともとからアセンブラのファイですか?
場所からすると、コンパイラ(というか、IDE が)自動生成したスタートアップファイルのような気はしますが。

あと、エラーは本当にひとつだけですか?
_nmi は、多分、NMI(non maskable interrupt) の飛び先ラベルだと思うのですが、_nmi だけなくなるというのもおかしな話で、必要なファイルが欠如していると、割り込み関連の同じエラーがいろいろ出るはずです。

変更前のソースがちゃんとコンパイルできていたのなら、その中で、nmi というラベルを探しましょう。
そして、変更後、それがどうなってしまっているか確認しましょう。

もしも、どこかから、適当にソースを引っ張ってきて、というのなら、ひとそろいのファイルを探しましょう。

この回答への補足

説明不足の質問で申し訳ないです。
エラーが出るのはnmiではなくirq5でした。すみません
使っているマイコンはhttp://www.yellowsoft.com/products/h8gset2.htmlのH8/3048one学習キットを使用しているのですが、
そこにサンプルプログラムがあり、ストップウォッチのサンプルを動かしたのですが、スタート、ストップのボタンをサンプルプログラムで使用しているボタンirq1ではなく外部の割り込みirq5でストップウォッチのスタート、ストップを認識したいと考えています。

irq1のプログラムは動くのですが、Cのプログラムをirq5に変更したら《ファイル(..\..\..\STARTUP\CSGH848.ASM)内で未定義の外部シンボル(_irq5)を参照しました。》というエラーが出ました。
STARTUP\CSGH848.ASMはアセンブラファイルでした。

また、質問になって申し訳ないのですがエラーの対処法お願いします。

補足日時:2010/12/03 11:49
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!