PIC18F デバイスから dsPIC30F (特に 4013) への移行に問題があります。MPLAB と ASM30 をコンパイラとして使用しています。件名が示唆しているように、問題は extern サブルーチンです。つまり、別のソース ファイルで定義されているということです。18F では、それは素晴らしくシンプルでした。ソース ファイル "init.asm" に "initiateData" というプロシージャがあり、それを "main.asm" から呼び出したいとしましょう。
EXTERN initiateData
main.asm と
GLOBAL initiateData
init.asm. 次に、メインから呼び出します。
call initiateData
ただし、dsPIC30 の場合、次のようなことを試みます (init.s)
.global initiateData
.text
initiateData:
MOV #0x0400, W2
return
.end
および (main.s):
.equ __30F4013, 1
.include "P30F4013.inc"
.extern initiateData
.global __reset
.text
__reset:
call initiateData
.end
このコード (実際にはもっと複雑ですが、重要だと思うことの要約を投稿しただけです) は正しくコンパイルされ、リンクされます (しかし、イライラする警告: main.s:0: 警告: end of file not at a line が表示されます)。 ; 改行が挿入されました - どうすれば修正できますか?)。ここでの問題は、デバッグ モードでトラッカー (ああ、デバッグに PICkit2 を使用します) が inititationData に入ることですが、mov コマンドでエラーが発生し、プログラム カウンターがその場所にジャンプします。
0100 DA4000 ReservedBR
0102 FE0000 reset
別の __reset 呼び出しを引き起こします。何が間違っているのかよくわかりません.asm30で複数のソースプロジェクトを作成する方法についてはウェブ上にあまりありません.
よろしく、
酒飲み