微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 在Keil C51函数中加入ASM代码

在Keil C51函数中加入ASM代码

时间:11-11 来源:互联网 点击:
使用C51进行单片机编程是事半功倍的事,但是很多算法上以及编译上的问题,往往使用ASM代码更为方便又高效。但不知什么原因,Keil在实现C51夹杂ASM代码比SDCC麻烦很多,方法如下:

预处理指令 #pragma asm 开始ASM代码
预处理指令 #pragma endasm 结束ASM代码

如果就这样直接编译的话,会出现以下错误:
error C272: asm/endasm requires src-control to be active

解决方法:在 Files Toolbar 中选中当前C51文件,点右键查看文件选项,将 Generate Assembler SRC File 与 Assemble SRC File 的勾选由灰色变为黑色,即使这两项有效!

这时进行编译没有问题,但是Link时产生了两个警告:
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL

解决方法是需要在 Source Group 中添加一个 LIB 文件,根据专案的内容不同有所区别:
C51S.LIB - 没有浮点运算的 Small model
C51C.LIB - 没有浮点运算的 Compact model
C51L.LIB - 没有浮点运算的 Large model
C51FPS.LIB - 带浮点运算的 Small model
C51FPC.LIB - 带浮点运算的 Compact model
C51FPL.LIB - 带浮点运算的 Large model

LIB 方件在 Keil 安装目录下的 \C51\LIB\ 目录中。

上一篇:PC2004 LCM驱动
下一篇:ARM中MMU使用实例

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top