0

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で複数のソースプロジェクトを作成する方法についてはウェブ上にあまりありません.

よろしく、

酒飲み

4

0 に答える 0