STM8S003為例 ,其1RAM,最高512默認(rèn)為堆棧用的
留給用戶的就只有512
這512按51的理解分 為idata xdata 即@tiny @near
不加關(guān)鍵字限制,就默認(rèn)為idata區(qū)(小于256的地址),
char tttds[258];
如果idata區(qū)超出范圍 則提示 segment .ubsct size overflow (5)
加上關(guān)鍵字則定義為256地址以上的區(qū)域 ,
@near char ttt[51];
如果此定義超范圍 則提示 segment .bss size overflow (1)
兩個(gè)地址不可連續(xù),和混用,即一個(gè)數(shù)組如果超出256,則只有一個(gè)辦法就是把堆棧改小點(diǎn),把它放在near區(qū),修改STVD的項(xiàng)目設(shè)置中的Linker項(xiàng),在category中的下拉INPUT的RAM地址欄,將0X1FF改大點(diǎn),就可以實(shí)現(xiàn)了,這樣就當(dāng)然要注意堆棧不能溢出了 因?yàn)樗冃×?/p>
還有點(diǎn)疑問,F(xiàn)ILE : line 178: Address 0x1019 is out of range and is ignored! 我的程序中,不可能用到1019地址,程序也能正常跑,不知為什么在STVP時(shí)會(huì)提示這個(gè),HEX文件我也看過,的確有1019這個(gè)地址的數(shù)據(jù),是一個(gè)0,它是怎么生成出來的,難道是COSMIC的BUG嗎?