查了很多资料,要用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、注意,定义的地址空间不能在你的程序内;也就是不能和你的程序地址重合;以免影响你的程序运行
推荐阅读最新更新时间:2024-03-16 15:21
设计资源 培训 开发板 精华推荐
- 【赠书100%有礼】一本书教你如何开发测试系统,深入了解数据采集系统
- TI 最新CapTIvate™ 触控微控制器技术直播开始报名喽!报名参与有礼呦!
- KOL实战分享|无刷直流电机(BLDC)的驱动及控制方法
- 帮忙他人,成就自我——EEWORLD问答榜(10期)
- 最后一周报名,STM32中国峰会暨粉丝狂欢节,5月12-13日深圳
- 抢鲜体验:NXP LPC54018 IoT Module测评来了
- 学最新DLP课程,跟帖抢楼赢好礼!
- 新年新挑战:ST蓝牙开发板免费申请评测+挑战赛(littleshrimp带队)
- 手印签到,共同见证 TI 中国大学计划20周年
- 村田RFID知识有奖问答 双重好礼等你来挑战