美文网首页
2017-06-28 51单片机混合编程小结

2017-06-28 51单片机混合编程小结

作者: 酝锦 | 来源:发表于2019-02-20 16:09 被阅读0次

    C语言与汇编混合编程(keil)时:1、首先要在Project 窗口中包含汇编代码的C 文件上右键,选择“Options for ...”

2、然后在Properties选项卡中激活“Generate Assembler SRC File”和“Assemble SRC File”

3、然后把相应的库文件C51S.Lib添加到工程,路径:在默认安装盘KEIL/C51/LIB/C51S.Lib。注意库文件必须是工程的最后一个文件。

4、在c语言中嵌入没有参数调用的汇编程序段用#program asm······#program endasm前后括起来就行。

    嵌入有参数调用的程序段未尝试。

5、C语言调用汇编函数:

在c程序中用extern···声明

在汇编中:

?PR?···SEGMENT CODE  //在程序存储区中定义段,?PR?表示段位于程序存储区内,转换规律如                                                    下:CODE——?PR?   XDATA——?XD

                                                      DATA——?DT  BIT——?BI PDATA——?PD

                                            ···表示函数名,转换规律如下:

                                            Viod func(void) FUNC无参数传递或不含寄存器的函数名不作转变转入目

                                            标 文件中,名字只是简单地转为大写形式;

                                            Void func(char) _FUNC 带寄存器参数的函数名,前面加“_”前缀,它表明

                                            这类函数包含寄存器内的参数传递;

                                            Void func(void) reentrant _?FUNC 对于重入函数,前面加“_?”前缀,它表

                                            明该函数包含栈内才参数传递(未尝试);

PUBLIC ···                          //声明函数为公共函数

RSEG ?PR?···                   //表示函数可被连接器放置在任何地方,RSEG 是段名的属性

···:                                      //程序开始

参数传递说明:

返回值传递说明:

全局变量的使用:不推荐在汇编中使用C中定义的全局变量,如果必须要使用,可用如下方法:

    在C程序中声明全局变量

    在汇编函数开始声明   EXTERN  DATA(变量名)

    直接使用变量

    如全局变量为数组,则使用变量名+偏移量,以数组BUFF[5]为例,如要访问数组BUFF中的元素BUFF[3],在汇编中先声明EXTERN  DATA(BUFF),在程序中使用MOV  A,BUFF+03H

6、汇编调用C程序(未尝试)

    总体来说混合编程比较复杂,容易产生问题,一般都是不得已的情况下才会使用。使用中还是尽量使程序模块化,尽量少使用全局变量;如使用C语言为主,则尽量少的使用汇编,尤其是大段的汇编程序,由于C是自动编译,使用内存地址不确定而汇编是人为指定内存地址,容易造成地址复用产生错误,若程序中再加入中断则情况会变得更复杂。

相关文章

  • 2017-06-28 51单片机混合编程小结

    C语言与汇编混合编程(keil)时:1、首先要在Project 窗口中包含汇编代码的C 文件上右键,选择“Opti...

  • 向51单片机说再见!

    51单片机的辉煌过去 51单片机指MCS-51系列单片机,CICS指令集。由Intel公司开发,其结构增加了如乘(...

  • 51单片机常用波特率初值表(12M晶振)

    为什么51单片机的晶振一般使用11.0592? 用11.0592晶振的原因是51单片机的定时器导致的。用51单片机...

  • 51单片机基本结构

    姓名:陈婧娴 学号:19021211245 【嵌牛导读】:51单片机是初学者常接触的单片机,本文着重介绍51单片机...

  • MHT5-交通灯套件

    功能介绍: 本套件是基于51单片机的交通灯模拟设计,通过对单片机编程,控制数码管显示和LED亮灭的变化。有深夜模式...

  • 2019-09-24单片机有很多种

    1. 51单片机发展史 1.1、51单片机由Intel公司设计诞生 (1)1971年,Intel推出4位单片机I...

  • Mac下单片机开发环境的搭建

    先来简单介绍一下51单片机: 51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖...

  • 命题-第十三章-填空

    1、MCS-51单片机有()个16位可编程定时器/计数器,有()种工作方式。 【答案】2 4

  • 来自一个电子狂的学习之路

    一、51单片机生涯 前面介绍了那么多知识,终于可以畅谈我和单片机的故事了。我记得非常清晰,学习51单片机是从1...

  • 电子技能的提升

    一、51单片机生涯 前面介绍了那么多知识,终于可以畅谈我和单片机的故事了。 我记得非常清晰,学习51单片机是从15...

网友评论

      本文标题:2017-06-28 51单片机混合编程小结

      本文链接:https://www.haomeiwen.com/subject/ewyhyqtx.html