keil中怎么用 asm函数

keil中怎么用 asm函数,第1张

使用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/ 目录中。

你选中了ASM文件,并双击了,其实,这个ASM文件就已经添加到工程中了,再次添加就是重复了,就是出现这个提示。这时,你只要点Close,关闭这个对话框就行了。在左边工程的程序组前面的+号点开,就会看到已经有ASM文件了。

如下图所示,左边工程中已经有了ASM文件,再添加就会出错了。画红圈的两个相同的文件。

首先新建一个工程,点击Proctect的第一个new project选项。

2、接着选择你要下载进去的单片机芯片,一般为AT89C51居多。

3、新建一个文本,并将文本保存。代码用汇编语言写的,保存为.asm文件。代码使用C语言编写的,则保存为.c文件。

4、将保存的文本保存进Source Group1。右键点击Source Group1,选择Add Exitting ,找到刚刚保存的文件添加即可。

5、完成以上步骤就可以在文本中编写代码了。

6 、写完编译,没有ERROR即没有语法错误,有错误即找到错误所在观察。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/bake/11492119.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存