当前位置:首页 > 技术心得 > 正文内容

Keil C51中嵌入汇编

xjtudll16年前 (2010-04-20)技术心得17440

   我们知道,用C语言实现精确延时是一件比较困难的事情,而用汇编写精确延时程序就简单多了,但是整个程序都用汇编,那就是件头疼的事情。要是能在C里面嵌入汇编,那就爽了,本文介绍的就是如何在Keil C51里嵌入汇编。

 

1、在 C 文件中以如下方式加入汇编代码:

#pragma ASM

; Assembler Code Here

#pragma ENDASM

 

例如:

//延时1ms程序 晶振:11.0592MHZ

   void delay_1ms(void)                

   {

   #pragma asm

              DELAY1MS: MOV R7,#50

              DD: MOV R6,#10

              D2: DJNZ R6,$

              DJNZ R7,DD

   #pragma endasm

   }

 

2、在 Project 窗口中包含汇编代码的 C 文件上右键,选择“Options for ...”,点击右边的“Generate Assembler SRC File”和“Assemble SRC File”,使检查框由灰色变成黑色(有效)状态。如图所示。

 

3、根据选择的编译模式,把相应的库文件( Small 模式时,是 Keil\C51\Lib\C51S.Lib)加入工程中, 该文件必须作为工程的最后文件

4、编译,即可生成目标代码。 

扫描二维码推送至手机访问。

版权声明:本文由鸟的天空发布,如需转载请注明出处。

本文链接:http://xjtudll.cn/Exp/74/

标签: keilC51
分享给朋友:

“Keil C51中嵌入汇编” 的相关文章

Android Studio 错误: 非法字符: '\ufeff' 解决方案|错误: 需要class, interface或enum

Android Studio 错误: 非法字符: '\ufeff' 解决方案|错误: 需要class, interface或enum

Eclipse可以智能的把UTF-8+BOM文件转为普通的UTF-8文件,Android Studio还没有这个功能。 当将Eclipse工程转为Android Studio工程,并编译,就可能出现” 非法字符: '\ufeff' “之类的错误。 如下图: 如果遇到此种问题...

Quartus II 破解器 在win7无法运行,停止工作

Quartus II 破解器 在win7无法运行,停止工作

参考资料: http://zhidao.baidu.com/link?url=6-4yMJ7njWfCK7grjNaR-EspkM9MqtpoFB5HYFa5yJK7f4sbLrMMXSd8kruGlZnmLZtP9AYQFvD70hEmR8ZV3K 现象如图所示,只要一破解,就会弹出“...

Android APK反编译

Android APK反编译

  反编译需要使用到以下两个软件 1、dex2jar http://code.google.com/p/dex2jar/downloads/list 2、jdgui http://code.google.com/p/innlab/downloads/list 反编译步骤如下: 1、将APK...

Can't place multiple pins assigned to pin location Pin_101

Can't place multiple pins assigned to pin location Pin_101

错误:Error (176310): Can't place multiple pins assigned to pin location Pin_101 (IOPAD_X34_Y18_N21)     Info (176311): Pin addr[8] is as...

BL51: WARNING L13 (RECURSIVE CALL TO SEGMENT) WITH CONSTANTS 解决

问题描述:   将函数名存储在table里,通过函数指针的方式调用函数。 编译提示: BL51: WARNING L13 (RECURSIVE CALL TO SEGMENT) WITH CONSTANTS 使用环境: C51 Version 7.00 代码例程(使用Keil官方资料来说...

Multisim运放输出超过电源电压解决

Multisim运放输出超过电源电压解决

在使用Multisim自带库里的运放的时候,例如LM324M,发现一个问题,运放的输出电压能达到几百V甚至几千V,而电源明显只有几V而已。输出电压超过电源电压,理论上是不可能的,实际上也是不可能的,那么肯定就是仿真有误了,其实根本原因是Multisim里面运放是三脚模型,根本没考虑电源。我们查看LM...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。