为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > keil中怎么在c语言里嵌入汇编语言

keil中怎么在c语言里嵌入汇编语言

2013-05-15 3页 doc 34KB 28阅读

用户头像

is_539445

暂无简介

举报
keil中怎么在c语言里嵌入汇编语言C语言中嵌入汇编51单片机2010-08-0716:12:34阅读0评论0字号:大中小step1、在C文件中要嵌入汇编代码片以如下方式加入汇编代码:#pragmaASM;AssemblerCodeHere#pragmaENDASMstep2、在Project窗口中包含汇编代码的C文件上右键,选择“Optionsfor...”,点击右边的“GenerateAssemblerSRCFile”和“AssembleSRCFile”,使检查框的勾由灰色变成黑色(有效...
keil中怎么在c语言里嵌入汇编语言
C语言中嵌入汇编51单片机2010-08-0716:12:34阅读0评论0字号:大中小step1、在C文件中要嵌入汇编代码片以如下方式加入汇编代码:#pragmaASM;AssemblerCodeHere#pragmaENDASMstep2、在Project窗口中包含汇编代码的C文件上右键,选择“Optionsfor...”,点击右边的“GenerateAssemblerSRCFile”和“AssembleSRCFile”,使检查框的勾由灰色变成黑色(有效)状态;step3、把Keil\C51\Lib中的C51S.Lib添加到工程中来step4、编译,即可生成目标代码。来个实例吧:#include<reg51.h>voidmain(void){P2=1;#pragmaasm         MOVR7,#10DEL:MOVR6,#20         DJNZR6,$         DJNZR7,DEL#pragmaendasmP2=0;}汇编函数调用step1.按写普通c51程序,建立工程,在里面导入main.c文件和CFUNC.c文件。相关文件如下://main.c文件#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintexternintAFUNC(charv_a,charv_b);voidmain(){      charv_a,v_b;      AFUNC(v_a,v_b);}//CFUNC.c文件intAFUNC(charv_a,charv_b){ inttemp; temp=v_a+v_b; return(temp);}step2.在Project窗口中包含汇编代码的C文件上右键,选择“Optionsfor...”,点击右边的“GenerateAssemblerSRCFile”和“AssembleSRCFile”,使检查框由灰色变成黑色(有效)状态;step3、把Keil\C51\Lib中的C51S.Lib添加到工程中来。step4.编译这个工程后将会产生一个CFUNC.SRC的文件,将这个文件(CFUNC.SRC)改名为CFUNC.A51(也可以通过编译选项直接产生CFUNC.A51文件),然后在工程里去掉库文件(如C51S.Lib)和CFUNC.c,而将CFUNC.A51添加到工程里。//CFUNC.SRC文件如下;.\AFUNC.SRCgeneratedfrom:AFUNC.c;COMPILERINVOKEDBY:;       D:\ProgramFiles\Keil\C51\BIN\C51.EXEAFUNC.cBROWSEDEBUGOBJECTEXTENDSRC(.\AFUNC.SRC)NAMEAFUNC?PR?_AFUNC?AFUNC    SEGMENTCODE PUBLIC_AFUNC;intAFUNC(charv_a,charv_b) RSEG ?PR?_AFUNC?AFUNC_AFUNC: USING0  ;SOURCELINE#1;----Variable'v_b?041'assignedtoRegister'R5'----;----Variable'v_a?040'assignedtoRegister'R7'----;{  ;SOURCELINE#2; inttemp;; temp=v_a+v_b;  ;SOURCELINE#4 MOV  A,R5 RLC  A SUBB A,ACC MOV  R4,A MOV  A,R7 RLC  A SUBB A,ACC MOV  R6,A MOV  A,R7 ADD  A,R5 MOV  R7,A MOV  A,R6 ADDC A,R4 MOV  R6,A;----Variable'temp?042'assignedtoRegister'R6/R7'----; return(temp);  ;SOURCELINE#5;}  ;SOURCELINE#6?C0001: RET  ;ENDOF_AFUNC END(在文件中会提示相关变量所对应的寄存器,例如“;----Variable'v_b?041'assignedtoRegister'R5'----;”“----Variable'v_a?040'assignedtoRegister'R7'----”“;----Variable'temp?042'assignedtoRegister'R6/R7'----”,操作这些寄存器就是操作对应的变量)step5.检查main.c的“GenerateAssemblerSRCFile”和“AssembleSRCFile”是否有效,若是有效则点击使检查框变成无效状态;再次build这个工程,到此你已经得到汇编函数的主体,修改函数里面的汇编代码就得到你所需的汇编函数了。注意:文件名最好全部用英文,不使用中文,中文有时候会出现编译错误,如用“example.c”而不用“例子.c”。   注:以上方法是先建两个.C的文件,再将要调用的文件转为汇编.A51的文件。然后把.A51文件加到工程中去。如果是已经写好了汇编文件。就可以按照c语言中文件调用的方法,具体操作如下:第一、建立C工程;第二、把汇编文件(以点A51为后缀的文件)添加到工程中来(如果只有程序代码可以新建文件,文件后缀为.A51)。第三、在main文件中调用它即可。 其中: ?PR?DELAY100  SEGMENTCODE;//      在程序存储区中定义段/////而DELAY100是函数名PUBLICDELAY100;    //声明函数RSEG?PR?DELAY100;  //函数可被连接器放置在任何地方
/
本文档为【keil中怎么在c语言里嵌入汇编语言】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索