
我不了解你说的自称程序是什么意思,我这里只说说如何添加自己写的模块程序(包括h和c)添加到已存在的工程项目中。
拷贝源码到工程目录下
Project>>manager>>manager items,添加加源码文件到工程。
Project>>Options for Target >>C/C++ >>Include path 添加头文件的路劲。
完成上面三步添加完成。
如果是mainasm中有这句话$INCLUDE(RESETASM),简单的说就是在编译mainasm前,编译器先把RESETASM这个文件的所有语句放到main文件中,然后再编译main,相当于RESETASM是mainasm的一部分代码。
这样设计的话,要求工程里不能再单独编译连接RESETASM,这样会出现同名的警告。另一点,RESETASM中不能有END的结束符,否则编译器在编译到END后面的代码就不编译了,你的main函数实际就没有被编译,这可能是你烧到开发板上不行的原因。
具体没看到代码,先做如上猜想。不过如果有调试环境的话,单步debug应该能很快发现问题。
四个字节加上四个字节,和应该是4~5个字节。
本程序,需要三个地址指针,但是一般只有两个(R0和R1)可以用;如果换用工作区,就比较麻烦了。下面使用B充当“和”的地址指针,RESULT + 4单元,充当加数2的地址指针。
程序如下:
RESULT equ 30H ;和数的地址
ORG 0000H
;实验数据如下:
MOV 20H, #22H ;加数1
MOV 21H, #33H
MOV 22H, #44H
MOV 23H, #0F3H
MOV 24H, #12H ;加数2
MOV 25H, #34H
MOV 26H, #56H
MOV 27H, #78H
MOV R0, #20H ;给定地址
MOV R1, #24H
LCALL _4_JIA_4 ;调用加法子程序
NOP
SJMP$
_4_JIA_4:
MOV RESULT + 4, R1 ;保存加数2地址
MOV B, #RESULT ;保存和的地址
CLR C
MOV R2, #4
LOOP:
MOV A, @R0
INC R0
MOV R1, RESULT + 4
ADDC A, @R1 ;加上加数2
INC R1
MOV RESULT + 4, R1
MOV R1, B
MOV @R1, A ;保存和数
INC R1
MOV B, R1
DJNZ R2, LOOP
CLR A
ADDC A, #0
MOV RESULT + 4, A ;保存第五字节
RET
减法子程序,与上面的加法子程序雷同,只要把ADDC换成SUBB即可改为减法子程序。请楼主自行改写。
以上就是关于在keil软件中子程序怎么导进工作区全部的内容,包括:在keil软件中子程序怎么导进工作区、用Keil uVision2编写单片机程序时,如何调用已存档的子程序文件、51单片机,使用keil软件,4字节加法或减法子程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)