中国IEEE
关于我们 | 会员登陆 | 收藏本站 | 留 言 薄
 

 | 网站首页 | 电子知识 | 单片机知识 | 电路设计 | 微电子技术 | SCADA系统 | 资源下载 | 给我留言 | 视频教程 | ieee | 
热门搜索关键字: 单片机教程 | 三极管微电子 |  C语言汇编语言SCADA元器件IEEE |
cnieee.com baidu
栏目导航  
栏目更新推荐  
·C51与汇编混合编程
·编译通不过错误总汇
·AD转换器的分类与选择
·Project0502-单片机产生正弦波
·有目的的去学习
·也谈LED驱动(转载)
·浮点数保存代码
·基于单片机AT89C51的时间/位移换向…
点击TOP(10)  
  • 此栏目下没有热点文章
  • 图片文章  

    Project0502-单片机…

    也谈LED驱动(转载)

    基于单片机AT89C51的…

    基于ARM9处理器S3C2…
     
    您现在的位置: 中国IEEE中国电气电子工程师网 >> 单片机知识 >> 学习心得 >> 正文

    C51与汇编混合编程
    文章来源:本站整理 点击数: 更新时间:2008-6-6 【字体:
    (欢迎光临中国IEEE,希望本文能对您有所帮助http://www.cnieee.com)


    相关文章:

    红外遥控及C语言51红外遥控解码程序
    Keil C51和 标准C语言的异同…
    第一章  AT89S51单片机实验及实践系统板简介…
    Keil C51使用详解3…

  • 上一个文章:

  • 下一个文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     
    关于〖C51与汇编混合编程〗的最新评论:

    C语言和汇编各有各的优点与缺点,如何合理的利用它们各自的优点,是我们编程人应该掌握的一个技巧.

    C51和汇编混合编程(1)-C语言中嵌入汇编

    1、在 C 文件中要嵌入汇编代码片以如下方式加入汇编代码:
    #pragma ASM
    ; Assembler Code Here
    #pragma ENDASM

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

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

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

    来个实例吧:
    #i nclude <reg51.h>
    void main(void)
    {
    P2=1;
    #pragma asm
        MOV R7,#10
    DEL:MOV R6,#20
        DJNZ R6,$
        DJNZ R7,DEL
    #pragma endasm
    P2=0;
    }

    C51和汇编混合编程(2)-无参数传递的函数调用

    C51调用汇编函数
    1.无参数传递的函数调用
    先来个例子:其中example.c和example.a51为项目中的两个文件
    ***********************example.c***********************************************
    extern void delay100();

    main()
    {delay100;}
    ***********************example.a51***********************************************
    ?PR?DELAY100 SEGMENT CODE; //  在程序存储区中定义段
    PUBLIC DELAY100;     //声明函数
    RSEG ?PR?DELAY100;    //函数可被连接器放置在任何地方

    DELAY100:
      MOV R7,#10
    DEL:     
      MOV R6,#20
      DJNZ R6,$
      DJNZ R7,DEL
      RET
    END

    在example.c文件中,先声明外部函数,然后直接在main中调用即可。
    在example.a51中,
    ?PR?DELAY100 SEGMENT CODE;  作用是在程序存储区中定义段,DELAY100为段名,?PR?表示段位于程序存储区内
    PUBLIC DELAY100;     作用是声明函数为公共函数
    RSEG ?PR?DELAY100;    表示函数可被连接器放置在任何地方,RSEG是段名的属性
    段名的开头为PR,是为了和C51内部命名转换兼容,命名转换规律如下:
    CODE -?PR?
    XDATA-?XD
    DATA-?DT
    BIT-?BI
    PDATA-?PD





    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明网站地图 | 名站导航 | 管理登录 | 
    本站资源部分来自互联网,如侵犯您的权利,我们将予以删除  鲁ICP备08006092号
    本站欢迎同类网站做友情链接,QQ留言
    中国IEEE 中国电气电子工程师网 版权所有