用Keil uVision2编写单片机程序时,如何调用已存档的子程序文件?
$INCLUDE(RESET.ASM),这条语句是什么意思?原本我的程序里面有很多子程序,为了能方便浏览以及更正错误,所以就把一些子程序分别以.ASM格式文件存档了,然后...
$INCLUDE(RESET.ASM),这条语句是什么意思?原本我的程序里面有很多子程序,为了能方便浏览以及更正错误,所以就把一些子程序分别以.ASM格式文件存档了,然后在组程序中使用如这样的语句 $INCLUDE(RESET.ASM),先定义一下,再用CALL RESET 来调用,可是程序就不行了,心虽然没有提示错误,但烧写到开发板就不行了,观察不到原来程序的结果,求解》??
展开
2个回答
展开全部
如果是main.asm中有这句话$INCLUDE(RESET.ASM),简单的说就是在编译main.asm前,编译器先把RESET.ASM这个文件的所有语句放到main文件中,然后再编译main,相当于RESET.ASM是main.asm的一部分代码。
这样设计的话,要求工程里不能再单独编译连接RESET.ASM,这样会出现同名的警告。另一点,RESET.ASM中不能有END的结束符,否则编译器在编译到END后面的代码就不编译了,你的main函数实际就没有被编译,这可能是你烧到开发板上不行的原因。
具体没看到代码,先做如上猜想。不过如果有调试环境的话,单步debug应该能很快发现问题。
这样设计的话,要求工程里不能再单独编译连接RESET.ASM,这样会出现同名的警告。另一点,RESET.ASM中不能有END的结束符,否则编译器在编译到END后面的代码就不编译了,你的main函数实际就没有被编译,这可能是你烧到开发板上不行的原因。
具体没看到代码,先做如上猜想。不过如果有调试环境的话,单步debug应该能很快发现问题。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询