51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 取经杂谈 > 详细内容
C中嵌入汇编的程序
作者:狼魅  发布时间:2009/10/16  阅读次数:1338  字体大小: 【】 【】【
//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)。
 
 
我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号