Ste*_*ven 0 c++ embedded assembly microchip
今天敲我的头;)
在这里,我询问了如何将ASM文件转换为C,并且从响应中看起来没有合理的方法来执行它.精细.因此,其中一个回复建议我只是按原样使用函数并完成它.听起来不错.
但是怎么样?
神圣的废话我已经尝试了我能想到的一切!我正在使用Microchip品牌的MCU(PIC18F4480)和Microchip品牌的IDE(MPLAB IDE),而ASM文件是Microchip编写的...所以你认为我会找到一些方法来使用它们!到目前为止还没有运气.
我对ASM(汇编)一无所知.我用C++编写代码,坦率地说,这不会改变.必须有一种方法可以访问Microchip ASM文件中的函数,而无需用新语言重写我的所有代码.
如果有人想看看,ASM文件和应用笔记就在这里.
看看PIDInt.asm,从C/C++调用函数应该是相当简单的.首先,为VARIABLE DEFINITIONS中列出的所有内容声明外部变量:
extern unsigned char error0, error1; /* etc */
Run Code Online (Sandbox Code Playgroud)
然后,为所有具有"Function:"注释的事物声明extern函数,不带参数并且不返回任何结果:
extern void Proportional(); // extern "C" for C++
Run Code Online (Sandbox Code Playgroud)
要调用其中一个,请填充输入变量,调用函数,然后读取输出变量.
我希望你需要以某种方式从汇编代码构建一个对象(.o)文件,然后将你的C++文件链接到该目标文件.您可能需要将这些函数声明为extern "C"从C++调用它们.
这里不详细说明,C++和汇编之间的调用约定可能存在问题,特别是对于像PIC这样的微控制器.
您是否真的在为微控制器使用完整的C++功能集,即对象,虚函数,重载等?那是......不错,但我认为大多数PIC开发仍然是普通的C(当然还有汇编).