您现在的位置: 主页 > MCU > 单片机应用 > C51固定ROM地址初始化数据方法 -
本文所属标签:
为本文创立个标签吧:

C51固定ROM地址初始化数据方法 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-11 

[导读]查了很多资料,要用KEIL C51在ROM(FLASH)中固定的位置写入一个初始化数据,网上有很多办法,感觉都不是很好,我最近因为要用,所以想了一个办法来实现,大家都知道在C51成立工程时都有一个扩展名为A51的源文件,这

查了很多资料,要用KEIL C51在ROM(FLASH)中固定的位置写入一个初始化数据,网上有很多办法,感觉都不是很好,我最近因为要用,所以想了一个办法来实现,大家都知道在C51成立工程时都有一个扩展名为A51的源文件,这个文件其实就是程序的初始化文件,也就是在程序的开始对堆栈等东西做一个初始化;好了话不多说;下面介绍如何使用。

本文引用地址: http://www.21ic.com/app/mcu/201809/784978.htm

1、一般的工程可以不用此文件,把此文件删除就可以;但是我们要对ROM的固定地址填入数据,所以这个文件要加在工程内。

2、打开这个文件会有很长的篇幅,这些其实都是没有用的,删除就可以,只留下最后三行就可以,因为有这个文件后,编译器要知道如何转移到你的main()。看第5条。

3、在上面一个位置就可以写入如下的数据。

CSEG AT 03FcH
DB 10h,11h,12h

这个意思就是在03FC地址处存放下面的3个数据。当然你可以定义更多。

你也可以加上地址符号。

CSEG AT 03FcH
FLASH_DATA1: DB 10h,11h,12h

CSEG AT 03ecH
fLASH_DATA2: DB 10h,11h,12h

4、在主程序中可以这样处理

#define FLASH_DATA1 0x3fc

#define FLASH_DATA2 0x3Ec

定义一个FLASH的基地址。这个时候你就可以随便读写了。

5、注意要把A51文件处理好,要保证它能够转移到MAIN中;下面是我用的START900.A51;留以下内容就可以。

;以下是START900.A51的全部内容=================================================

CSEG AT 03FcH
FLASH_DATA1: DB 10h,11h,12h

CSEG AT 03ecH
fLASH_DATA2: DB 10h,11h,12h

EXTRN CODE (?C_START) ;只留下面的三行就可以。
JMP ?C_START

END

;============================================================================

原文件的开始有很多常量的定义,还有IF语句,这些删除就可以,只留最下面的这三行;编译器就知道你的MAIN入口了;可能别的A51文件不些不同,但这三行都是有的;别的都删除。

6、注意,定义的地址空间不能在你的程序内;也就是不能和你的程序地址重合;以免影响你的程序运行




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机应用 > C51固定ROM地址初始化数据方法 -
 

"C51固定ROM地址初始化数据方法 -"的相关文章

网站地图

围观()