top
<返回首页 <退出
欢迎您来到51-ARM学习论坛,您还没有[注册]或[登陆]
用户名:  
密  码:  
验证码:  
共有1299位会员 新进来宾:xle
今日发帖:27篇 在线人数:965人
最高发帖:140篇 主题总数:589篇
消息:热烈祝贺侯工单片机工作室官方网站正式开通!论坛版块诚征精英斑竹...凡51-ARM论坛斑竹,均有机参加侯工单片机工作室组织的各种技术交流,培训!!!
 论坛帮助  
51-ARM论坛>>单片机入门
 
  标题:keil c6.20c直接嵌入汇编的方法
破天一剑 
营长
等级: 普通会员
文章:38
积分:565
     楼主

keil c6.20c直接嵌入汇编的方法

//<asm.h>
#ifdef ASM
unsigned long shiftR1(register unsigned long);
#else
extern unsigned long shiftR1(register unsigned long);
#endif
//end of asm.h

//<asm.c>
#define ASM
#include <asm.h>
#include <reg52.h>
#pragma OT(4,speed)
unsigned long shiftR1(register unsigned long x)
{
#pragma asm
clr c
mov a,r4
rrc a
mov r4,a

mov a,r5
rrc a
mov r5,a

mov a,r6
rrc a
mov r6,a

mov a,r7
rrc a
mov r7,a

#pragma endasm
return(x);
}
//end of asm.c
将此源文件加入要编译的工程文件,将光标指向此文件,选择右键菜单option for file asm.c”,将属性单“properties”中的“Generate Assembler SRC File”“Assemble SRC File”两项设置成黑体的“√”将“Link Public Only”的“√”去掉,再编译即可。用此方法可以在c源代码的任意位置用#pragma asm和#pragma endasm嵌入汇编语句。但要注意的是在直接使用形参时要小心,在不同的优化级别下产生的汇编代码有所不同,可以察看对应的.lst文件看一看,得到正确的优化级别后,#pragma OT(x,speed)锁定优化级别(这里的值是0-9)。

 
 
 2009-4-16 13:07:25  
破天一剑 
营长
等级: 普通会员
文章:38
积分:565
     第1楼
 
 
 2009-04-16 13:07:36  
jonathan86 
士兵
等级: 普通会员
文章:0
积分:63
     第2楼
这个方法好! 但是又个小小的问题想请教下,这样编译出来的.hex文件加载到Proteus里软件仿真的时候,程序的功能不能实现,这怎么弄?谢谢~~~
 
 
 2010-04-01 17:44:28  
hangong 
士兵
等级: 普通会员
文章:1
积分:75
     第3楼
 
 
 2010-11-08 16:39:58  
首页 上一页 下一页 末页 页次1/1页 共 3 条回复 第
快速回复:
 
bottom
 
联系电话:0755-26766021 邮箱:51-ARM@163.com QQ群:43996737
项目定制承接手机:13798532857(侯工)
部分内容转载于网络,如有涉及版权问题,请通知本站删除。
粤ICP备09217420号 版权所有  @  2008-2012  侯工单片机工作室