51平台下初始化文件的引入导致全局变量无法初始化的问题

在51平台的开发中,遇到全局变量无法初始化的问题,问题源于INIT.A51和STARTUP.A51库文件的引入。这两个文件在复位后执行,主要负责IDATA, XDATA, PDATA段的清零和堆栈初始化。当未手动加入到工程时,此问题不会出现。" 111074970,10292900,Pandas分组聚合:使用agg函数进行数据统计,"['Python', '数据分析', 'Pandas', '数据处理', '数据统计']
摘要由CSDN通过智能技术生成

写在前面

-----------------

在前段时间的工作中,就遇见过全局变量无法初始化的问题,不过之前是在一些C文件中定义的变量能初始化,而其他C文件中不能初始化,当时将这个问题绕过去了,并没有去深究...而这一周又出现了这个问题。于是就有了这篇文章

 

这里不去讨论其他情况下全局变量无法初始化的问题,只是针对我所遇见的问题讨论....

原因:由于引入库文件INIT.A51和STARTUP.A51导致的, 这里之所以要引入这两个文件,是由我们的应用环境决定的,如果在实际过程中没有手动引入这两个文件到工程项目中,则不会出现我这里提到的类似问题。

 

简述如下:

mcu复位后 PC=0 先执行STARTUP.A51的相关文件,该文件主要是对IDATA XDATA PDATA清零以及初始化堆栈指针;附上网络上一篇文章对其的讲解之部分关键代码:

 

 

;  STARTUP.A51:  用户上电初始化程序
;------------------------------------------------------------------------------
;
;  用户定义需上电初始化的内存空间
;
;  使用以下EQU命令可定义在CPU复位时需用0进行初始化的内存空间
;
;;      
; IDATA 存储器的空间的绝对起始地址总是0.; 
IDATALEN   EQU  80H   ; 需用0进行初始化的IDATA存储器空间的字节数
;
XDATASTART   EQU   0H   ; XDATA存储器空间的绝对起始地址
XDATALEN   EQU   400H   ; 需用0进行初始化的XDATA存储器的空间字节数.
;
PDATASTART   EQU   0H   ; PDATA存储器的空间的绝对起始地址
PDATALEN   EQU   0H   ; 需用0进行初始化的PDATA存储器的空间字节数.
;
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值