全局变量这样初始化为什么错

2020-01-20 19:12发布

定义一个大一些的数组 如 unsigned char xdata buf[200]={0};   //0
就不能正常运行代码 keil自己初始化完 连我第一句写的光狗都不支行

但我定义成unsigned char xdata buf[200]; 不赋值就没问题

这是为什么啊?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
24条回答
tick
1楼-- · 2020-01-21 11:29
 精彩回答 2  元偷偷看……
shark
2楼-- · 2020-01-21 14:06
你查的资料似乎也不对,根本原因是初始化的时间过长,超过了看门狗的时间,初始化完成以后才能进入main函数,这时关狗已经来不及了,这时要修改startup.a51(记得把它加入复制到工程而不是修改系统的),在第一条指令前加入关狗的指令,在main函数里再开(如果需要的话)。
tick
3楼-- · 2020-01-21 17:57
谢谢! 9楼 我马上验证下 C8051F是 默认开狗的
shark
4楼-- · 2020-01-21 23:23
startup.a51修改的部分,红 {MOD}的 ,我用的是C8051F410

?C_STARTUP:     LJMP    STARTUP1

                RSEG    ?C_C51STARTUP

STARTUP1:

                MOV                0D9H,#00h  ; 关开门狗
IF IDATALEN <> 0
                MOV     R0,#IDATALEN - 1
                CLR     A
IDATALOOP:      MOV     @R0,A
                DJNZ    R0,IDATALOOP
ENDIF
tick
5楼-- · 2020-01-22 00:38
shark.我试了下 确实如你所说。 谢谢
pengxin213
6楼-- · 2020-01-22 06:19
 精彩回答 2  元偷偷看……

一周热门 更多>