C51怎样将子程序段定位在1个固定的地址

发布者:电子科技爱好者最新更新时间:2016-11-22 来源: eefocus关键字:C51  子程序段  定位  地址 手机看文章 扫描二维码
随时随地手机看文章

问:C51 怎样将1个子程序段定位在1个固定的地址位置?      

以下2问题均要用C51解决

1。 怎样将1个子程序段定位在1个固定的地址位置?

      例如将 INT BCD2HEX(INT XX)定位在1000H

2。 HOW在EEPROM 中固定的位置存放1字符串?

      如在200H处放“COPYRIGHT 2001-11”

答: 函数定位与变量定位... 

1、函数定位:

假如要把C源文件 tools.c 中的函数

int BIN2HEX(int xx)

{

    ...

}

放在CODE MEMORY的0x1000处,先编译该工程,然后打开该工程的M51文件,在

* * *     C O D E     M E M O R Y     * * *

行下找出要定位的函数的名称,应该形如:

CODE      xxxxH       xxxxH       UNIT           ?PR?_BCD2HEX?TOOLS

然后在:

Project->Options for Target ...->BL51 Locate:Code

中填写如下内容:

?PR?_BCD2HEX?TOOLS(0x1000)

再次Build,在M51中会发现该函数已放在CODE MEMORY的0x1000处了

2、赋初值的变量定位:

要将某变量定位在一绝对位置且要赋初值,此时用 _at_ 不能完成,则如下操作:

在工程中建立一个新的文件,如InitVars.c,在其中对要处理的变量赋初值(假设是code变

量):

char code myVer = {"COPYRIGHT 2001-11"};

然后将该文件加入工程,编译,打开M51文件,若定义的是code型,则在

* * *     C O D E     M E M O R Y     * * *

下可找到:

CODE      xxxxH       xxxxH       UNIT           ?CO?INITVARS

然后在:

Project->Options for Target ...->BL51 Locate:Code

中填入:

?CO?INITVARS(0x200)

再次编译即可。

相应地,如为xdata变量,则InitVars.c中写:

char xdata myVer = {"COPYRIGHT 2001-11"};

然后将该文件加入工程,编译,打开M51文件,在

* * *    X D A T A     M E M O R Y    * * *

下可找到:

XDATA     xxxxH       xxxxH       UNIT           ?XD?INITVARS

然后在:

Project->Options for Target ...->BL51 Locate:Xdata

中填入:

?XD?INITVARS(0x200)

再次编译即可。相应地,若定义的是data/idata等变量,则相应处理即可。

3、若有多个变量或函数要进行绝对地址定位,则应按地址从低到高的顺序排列。

关键字:C51  子程序段  定位  地址 引用地址:C51怎样将子程序段定位在1个固定的地址

上一篇:C51中的各种问题
下一篇:8051单片机TLC1549数据采集程序源代码

推荐阅读最新更新时间:2024-03-16 15:21

基于51的单片机GPS定位系统设计
一.硬件方案 本设计主要是制作出一款基于51单片机的GPS定位器,根据设计需求,硬件部分主要由51单片机+GPS定位模块+LCD12864液晶+LED指示灯+3.3V稳压电路+天线设计而成;如图: 二.设计功能 (1)单片机选用:51单片机(STC89C51/52、AT89C51/52、AT90C51/52均可兼容),GPS定位模块(带天线)。 (2)采用LCD12864液晶显示当前的时间、日期、经度、速度、航向、高度、海拔等信息。 (3)采用了3颗LED指示灯,红灯为GPS接收数据指示灯,黄灯为GPRNC数据有效指示灯,绿灯为GPGGA数据有效指示灯。 三.设计原理图 (1)原理图主要采用AD软件进行设计,如图: (
[单片机]
基于51的单片机GPS<font color='red'>定位</font>系统设计
关于S3C2440的地址分配的分析
在研究2440开发板的时候,通过对2440芯片的和各种存储芯片的理解,略有感悟。本贴主要是关于s3c2440硬件平台设计,从事嵌入式软件的朋友可以当做参考,同时欢迎各路硬件牛人多提建议。S3C2440A是三星推出的16/32bit的RISC MPU(RISC微处理器。RISC:educed instruction set computer,精简指令集计算机,是一种执行较少类型计算机指令的微处理器);2440具有1G byte的寻址空间(8banks,128M/bank)。2440芯片所有引脚中分配了27根地址线(A0~A26),换言之,也就128的地址空间。同时,在2440芯片中提供了nGCS0~nGCS7 8路片选信号线,
[单片机]
C51单片机实现中文输入法
说明: 拼音输入法杳询函数: unsigned char code * py_ime(unsigned char input_py_val ); input_py_val为已输入的拼音码字符串头指针, 反回值为中文的起始地址,当为0时,杳询失败 应用举例: { unsigned char input_string ={"bang"}; unsigned char chines_string ; sprintf(chines_string,"%s",py_ime(input_string)); } C51程序: //"********************CCDC01采集器测试仪软件:拼音输入法模块***************
[单片机]
基于RSSI测距的室内定位技术
随着现代通信、网络、全球定位系统(Global PositionSystem,GPS)、普适计算、分布式信息处理等技术的迅速发展,位置感知计算和基于位置的服务(Location Based Setvices,LBS)在实际应用中越来越重要。GPS是目前应用最广泛和成功的定位技术。由于微波易被浓密树林、建筑物、金属遮盖物等吸收,因此GPS只适合在户外使用,在室内场合,由于信道环境复杂、微波信号衰减厉害、测量误差大,GPS并不适用。近年来基于低成本、低功耗、白组织的无线传感器网络(Wireless Sensor Network,WSN)定位技术得到了科研人员的重视和研究,具有广泛地应用前景。根据定位过程中是否实际测量节点间的距离,可
[测试测量]
基于RSSI测距的室内<font color='red'>定位</font>技术
怎样在C51中使用位域功能?
定义这样的结构: typedef struct { uchar DC0_ALA:1; //电源0告警 uchar DC1_ALA:1; //电源1告警 uchar AC_ALA:1; //停电告警 uchar UN_H_ALA:1; //同频信道机失锁告警 uchar UN_L_ALA:1; //异频信道机失锁告警 uchar FAR_ALA:1; //远端通讯故障告警 uchar OPEN_ALA:1; //门襟告警 uchar x:1; }ALARM;//系统告警结构定义 定义变量并初始化: idata ALARM old_alarm={0,0,0,0,0,0,0,0}; 在main(
[单片机]
厦门盛芯产业投资基金成立,定位半导体材料及设备
电子网消息,厦门盛芯材料产业投资基金合伙企业(有限合伙)即将成立,盛芯产业投资基金的投资领域为半导体材料及设备等相关产业,由北京易科汇投资管理有限公司担任基金管理人,基金存续期5年。 南大广电13日晚间披露,公司拟以自有资金1000万元作为有限合伙人参与设立“厦门盛芯材料产业投资基金合伙企业(有限合伙)”,占5%的份额。 盛芯产业投资基金的出资方来头不小。除南大广电外,上海新阳、金力泰皆为A股上市公司。出资方中也不乏国资背景,如厦门市集美区产业投资有限公司(下称“集美产投”)为厦门市集美区财政局100%控股的国有投资公司,浙江卓正投资有限公司的控股股东为浙江省国资委。其他出资方中,宁波市集成电路产业基金管理有限公司的股东为宁波芯空
[半导体设计/制造]
PLC在准确定位控制系统中的应用
0 引言     在自动化生产、加工和控制过程中,经常要对加工工件的尺寸或机械设备移动的距离进行准确定位控制。这种定位控制仅仅要求控制对象按指令进入指定的位置,对运动的速度无特殊要求,例如生产过程中的点位控制(比较典型的如卧式镗床、坐标镗床、数控机床等在切削加工前刀具的定位),仓储系统中对传送带的定位控制,机械手的轴定位控制等等。在定位控制系统中常使用交流异步电机或步进电机等伺服电机作为驱动或控制元件。实现定位控制的关键则是对伺服电机的控制。由于可编程控制器(PLC)是专为在工业环境下应用而设计的一种工业控制计算机,具有抗干扰能力强、可靠性极高、体积小等显著优点,是实现机电一体化的理想控制装置。本文旨在阐述利用PLC控制伺服电机 实
[嵌入式]
基于ZigBee网络RSSI的室内无线定位技术
在室内定位系统开发研究方面,常用的方法是在室内环境下建立小范围定位网络。目前,越来越多的定位直接利用现成的无线通讯模块来估计对象节点(盲节点)的位置,应运而生的ZigBee技术以低成本、低功耗成为室内定位的首选。本文以 ZigBee 组建基本的网络,通过节点接收RSSI值的大小来进行距离计算,最终通过距离以及参考节点的位置来计算定位节点(盲节点)位置。    1 无线网络定位技术   在 无线定位 中,有基于测距和非测距两种方式。前者需要测量相邻节点间的绝对距离或方位,并利用节点间的实际距离来计算未知节点的位置;后者无需测量节点的绝对距离或方位,而是利用节点间的估计距离计算节点位置。基于测距的算法主要包含以下几种:三边测量
[模拟电子]
基于ZigBee网络RSSI的室内无线<font color='red'>定位</font>技术
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved