我无法从PIC18F器件迁移到dsPIC30F(特别是4013)。我正在使用MPLAB和ASM30作为编译器。因此,主题建议问题是外部子程序 - 我的意思是在不同的源文件中定义。在18F中,它非常简单:假设我在源文件“init.asm”中有一个名为“initiateData”的过程,我想从“main.asm”调用它 - 没有比那更容易了:只需放置一个< / p>
EXTERN initiateData
在main.asm和
中GLOBAL initiateData
在init.asm中。然后从main:
调用它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:警告:文件末尾没有结束一行;插入换行符 - 如何解决?)。这里的问题是,在调试模式下,跟踪器(噢 - 我使用PICkit2进行调试)按照原样输入inititateData,但是在mov命令中出现错误并且程序计数器跳转到位置
0100 DA4000 ReservedBR
0102 FE0000 reset
导致另一个__reset调用。 我真的不知道我做错了什么 - 网上关于如何在asm30中创建一个多源项目的内容并不多,所以我谦虚地请求任何帮助。
此致
饮酒