keil C语言与汇编语言的混合编程方法.pdf

keil C语言与汇编语言的混合编程方法.pdf

ID:48021575

大小:516.55 KB

页数:22页

时间:2020-01-20

keil C语言与汇编语言的混合编程方法.pdf_第1页
keil C语言与汇编语言的混合编程方法.pdf_第2页
keil C语言与汇编语言的混合编程方法.pdf_第3页
keil C语言与汇编语言的混合编程方法.pdf_第4页
keil C语言与汇编语言的混合编程方法.pdf_第5页
资源描述:

《keil C语言与汇编语言的混合编程方法.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、keilC语言与汇编语言的混合编程方法说明:在网上搜集的资料,感觉写得非常好,把它整理出来。感谢原创网友的贡献!1、C语言中加入汇编语言模块的方法:例子:voidfunc(){C语言代码……#pragmaasmMOVR6,#23DELAY2:MOVR7,#191DELAY1:DJNZR7,DELAY1DJNZR6,DELAY2RET#pragmaendasmC语言代码……}其中红色为C语言部分,绿色为嵌入的汇编语言部分。汇编部分需要用#pragmaasm和#pragmaendasm包起来2、Keil提示“asm/endasm”出错的解决方法如果只是像1中那样直接加

2、入汇编代码的话,编译将会报错,错误如下:compilingsendata.c...sendata.c(81):errorC272:'asm/endasm'requiressrc-controltobeactivesendata.c(87):errorC272:'asm/endasm'requiressrc-controltobeactiveTargetnotcreated解决方法如下:首先projectworkspace窗口右键单击包含有汇编部分的c语言文件名,然后在如上图所示的菜单中选择带有红色方框的选项在弹出的对话框中,将上图中红色方框选中的两项打上勾(默认的

3、情况下,前面的勾是灰色的,要让这两项前的勾变为黑色的),点击确定。3、?C_START等相关警告的处理按照2中的方法处理完之后,再编译不会出现错误信息了,但是会出现如下的警告信息:linking...***WARNINGL1:UNRESOLVEDEXTERNALSYMBOLSYMBOL:?C_STARTMODULE:STARTUP.obj(?C_STARTUP)***WARNINGL2:REFERENCEMADETOUNRESOLVEDEXTERNALSYMBOL:?C_STARTMODULE:STARTUP.obj(?C_STARTUP)ADDRESS:000D

4、H处理方法如下:在如上图所示的“SourceGroup1”上点右键,在菜单中选择“AddFilestoGroup'SourceGroup1'”找到你的KEIL安装目录,选择其中的“C51”目录下的“LIB”目录下的“C51S.LIB”文件,点击Add,然后Close即可。注意,上图所示的文件选择框进入LIB目录下后,默认只显示.c文件,需要在“文件类型”中选择“Libraryfile(*.lib)”,即可显示LIB文件了。添加C51S.LIB到工程后,再次编译,警告信息消失。linking...ProgramSize:data=9.0xdata=0code=28c

5、reatinghexfilefrom"sendata"..."sendata"-0Error(s),0Warning(s).4、寄存器冲突问题的解决汇编程序块中常常会使用到51的通用寄存器,比如R0-R7。这种情况下可能会和C语言程序中已经使用到的R0-R7产生冲突,以至于产生一些非常隐蔽和古怪的错误。虽然有人说KEIL可以自动分配寄存器组使之不产生冲突。但是在我这里具体测试时还是有冲突的(或者是我的KEIL设置有问题?),下面是测试小程序:/*************************************************************

6、*测试程序*************************************************************/#include#includetypedefunsignedcharuint8;uint8buf[16]={0x55};uint8i=0;/*************************************************************初始化单片机相关寄存器*********************************************************

7、**/voidUartInit(){SCON=0x50;TMOD

8、=0x21;PCON

9、=0x80;TH1=0xE8;TL1=0xE8;IE

10、=0x90;TR1=1;}/***************************************************延时***************************************************/voiddelay(){#pragmaasmMOVR6,#19DELAY2:MOVR7,#18DELAY1:DJNZR7,DELAY1DJNZR6,DELAY2RET#pragmaendas

11、m}/**

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。