欢迎来到天天文库
浏览记录
ID:22376210
大小:60.00 KB
页数:6页
时间:2018-10-28
《keilc51中嵌入汇编》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、KEILC51中嵌入汇编
2、第1如何在KEILC51(v6.21)中调用汇编函数的一个示例[ycong_kuang]有关c51调用汇编的方法笔者通过一个简单例子对这个过程进行描述,希望能对初学者有所帮助。几年来,在这个论坛里笔者得到很多热心人指导,因此也希望藉此尽一点绵薄之力。在这个例子里,阐述了编写c51程序调用汇编函数的一种方法,这个外部函数的入口参数是一个字符型变量和一个位变量,返回值是一个整型变量。例中,先用c51写出这个函数的主体,然后用SRC控制指令编译产生asm文件,进一步修改这个asm文件就得到我们所要的汇编函数。该方法让编译器自动完成各种段的安排,提高了汇编程序的编写效
3、率。step1.按写普通c51程序方法,建立工程,在里面导入main.c文件和CFUNC.c文件。相关文件如下://main.c文件#include<;reg51.h>#defineucharunsignedchar#defineuintunsignedintexternuintAFUNC(ucharv_achr,bitv_bflag);voidmain(){;bitBFLAG;;ucharmav_chr;;uint;mvintrslt;;mav_chr=0xd4;BFLAG=1;;mvintrslt=AFUNC(mav_chr,BFLAG);}//CFUNC.c文件#de
4、fineucharunsignedchar#defineuintunsignedintuintAFUNC(ucharv_achr,bitv_bflag){;uchartmp_vchr;;uint;tp_vint;;tmp_vchr=v_achr;;tp_vint=(uint)v_bflag;;returntmp_vchr+(tp_vint<<8);}step2.在Project窗口中包含汇编代码的C文件上右键,选择“Optionsfor...”,点击右边的“GenerateAssemblerSRC;File”和“AssembleSRCFile”,使检查框由灰色变成黑色(有效
5、)状态;step3.根据选择的编译模式,把相应的库文件(如Small模式时,是Keil/C51/Lib/C51S.Lib)加入工程中,该文件必须作为工;程的最后文件;step4.build这个工程后将会产生一个CFUNC.SRC的文件,将这个文件改名为CFUNC.A51(也可以通过编译选项直接产生CFUNC.A51文;件),然后在工程里去掉库文件(如C51S.Lib)和CFUNC.c,而将CFUNC.A51添加到工程里。//CFUNC.SRC文件如下./CFUNC.SRCgeneratedfrom:CFUNC.cNAMECFUNC?PR?_AFUNC?CFUNC;SEGMENTCODE
6、?BI?_AFUNC?CFUNC;SEGMENTBITOVERLAYABLE;PUBLIC;?_AFUNC?BIT;PUBLIC;_AFUNC;RSEG;?BI?_AFUNC?CFUNC?_AFUNC?BIT:;v_bflag?041:;DBIT;1;#defineucharunsignedchar;#defineuintunsignedint;;uintAFUNC(ucharv_achr,bitv_bflag);RSEG;?PR?_AFUNC?CFUNC_AFUNC:;USING;0;;SOURCELINE#5;----Variable'v_achr?040'assignedtoRe
7、gister'R7'----;{;;SOURCELINE#6;uchartmp_vchr;;uint;tp_vint;;;tmp_vchr=v_achr;;;SOURCELINE#10;----Variable'tmp_vchr?042'assignedtoRegister'R5'----;MOV;R5,AR7;tp_vint=(uint)v_bflag;;;SOURCELINE#11;MOV;C,v_bflag?041;CLR;A;RLC;A;----Variable'tp_vint?043'assignedtoRegister'R6/R7'----;returntmp_vchr+(
8、tp_vint<<8);;;SOURCELINE#12;MOV;R6,A;MOV;R4,#00H;CLR;A;ADD;A,R5;MOV;R7,A;MOV;A,R4;ADDC;A,R6;MOV;R6,A;};;SOURCELINE#13?C0001:;RET;ENDOF_AFUNC;ENDstep5.检查main.c的“GenerateAssemblerSRCFile”和“AssembleSRCFile”是否有效,若是有效则点击使检查
此文档下载收益归作者所有