keil内联汇编的设置问题

keil内联汇编的设置问题

ID:32179345

大小:137.00 KB

页数:9页

时间:2019-02-01

keil内联汇编的设置问题_第1页
keil内联汇编的设置问题_第2页
keil内联汇编的设置问题_第3页
keil内联汇编的设置问题_第4页
keil内联汇编的设置问题_第5页
资源描述:

《keil内联汇编的设置问题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、在keilC语言与汇编语言的混合编程中曾经遇到过的一些问题,写下来留作以后参考。(本文写于09.08.15,在8.18日加入了第4点的内容)1、C语言中加入汇编语言模块的方法:例子:voidfunc(){   C语言代码……#pragmaasm     MOVR6,#23DELAY2:   MOVR7,#191DELAY1:   DJNZR7,DELAY1DJNZR6,DELAY2RET#pragmaendasm   C语言代码……}其中红色为C语言部分,绿色为嵌入的汇编语言部分。汇编部分需要用#pragmaasm和#pragmaendasm包起来2、Keil提示“asm/

2、endasm”出错的解决方法如果只是像1中那样直接加入汇编代码的话,编译将会报错,错误如下:compilingsendata.c...sendata.c(81):errorC272:'asm/endasm'requiressrc-controltobeactivesendata.c(87):errorC272:'asm/endasm'requiressrc-controltobeactiveTargetnotcreated解决方法如下:首先左键单击包含有汇编部分的c语言文件名,然后在菜单栏中选择Project->OptionforFile‘……’中选择带有红色方框的选项在弹

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

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

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

6、***************** 测试程序*************************************************************/#include#includetypedef unsigned char uint8 ;uint8 buf[16]={0x55 };uint8 i=0 ;/************************************************************* 初始化单片机相关寄存器************************************

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

8、=0x21 ;PCON

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

10、=0x90 ;TR1=1 ;}/***************************************************    延时***************************************************/void delay(){#pragma asm MOV R6,#19 D

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

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

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