×
单片机 > 单片机程序设计 > 详情

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

发布时间:2020-06-02 发布时间:
|

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

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、注意,定义的地址空间不能在你的程序内;也就是不能和你的程序地址重合;以免影响你的程序运行


关键字:C51  ROM地址  初始化数据 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机CO2检测显示程序解析