久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4411|回復(fù): 18
打印 上一主題 下一主題
收起左側(cè)

STC8H單片機(jī)的RAM好像不能全部使用,難道技術(shù)手冊(cè)錯(cuò)了?大家又遇到過(guò)嗎

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
用STC8H3K32S2這個(gè)單片機(jī)芯片,技術(shù)手冊(cè)里寫(xiě)著RAM是128字節(jié),
但是編譯時(shí)發(fā)現(xiàn)超過(guò)110字節(jié)就會(huì)報(bào)錯(cuò),

難道技術(shù)手冊(cè)錯(cuò)了?

1663318747895.jpg (151.23 KB, 下載次數(shù): 75)

1663318747895.jpg

1663318816001.jpg (5.94 KB, 下載次數(shù): 80)

1663318816001.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:624769 發(fā)表于 2022-9-16 21:30 來(lái)自手機(jī) | 只看該作者
你看看你打框的上面一行 超出了0x26個(gè)字節(jié),所以,成功編譯的只有111字節(jié)。所以,原代碼,你總共要用data,大約166字節(jié)。
回復(fù)

使用道具 舉報(bào)

板凳
ID:123289 發(fā)表于 2022-9-17 08:06 | 只看該作者
128個(gè)RAM中,系統(tǒng)需要用一部分,但你無(wú)法知道系統(tǒng)是如何規(guī)劃RAM的。
比如:系統(tǒng)用了30個(gè),你就只能用98個(gè)了。
如果你用匯編寫(xiě)程序,則沒(méi)有這個(gè)問(wèn)題,RAM由你規(guī)劃使用。
回復(fù)

使用道具 舉報(bào)

地板
ID:188720 發(fā)表于 2022-9-17 08:33 | 只看該作者
188610329 發(fā)表于 2022-9-16 21:30
你看看你打框的上面一行 超出了0x26個(gè)字節(jié),所以,成功編譯的只有111字節(jié)。所以,原代碼,你總共要用data, ...

可是我減少了一個(gè)字節(jié)的全局變量,編譯就通過(guò)了啊

1663374767701.jpg (5.67 KB, 下載次數(shù): 78)

1663374767701.jpg
回復(fù)

使用道具 舉報(bào)

5#
ID:188720 發(fā)表于 2022-9-17 08:35 | 只看該作者
yzwzfyz 發(fā)表于 2022-9-17 08:06
128個(gè)RAM中,系統(tǒng)需要用一部分,但你無(wú)法知道系統(tǒng)是如何規(guī)劃RAM的。
比如:系統(tǒng)用了30個(gè),你就只能用98個(gè) ...

我算了下,定義的全局變量占50多字節(jié),系統(tǒng)占用的有將近70字節(jié)這么多嗎?!
回復(fù)

使用道具 舉報(bào)

6#
ID:188720 發(fā)表于 2022-9-17 08:41 | 只看該作者
yzwzfyz 發(fā)表于 2022-9-17 08:06
128個(gè)RAM中,系統(tǒng)需要用一部分,但你無(wú)法知道系統(tǒng)是如何規(guī)劃RAM的。
比如:系統(tǒng)用了30個(gè),你就只能用98個(gè) ...

我算了下,全局變量占用50字節(jié)左右,剩下的70字節(jié)都是系統(tǒng)占用了嗎?!
回復(fù)

使用道具 舉報(bào)

7#
ID:526108 發(fā)表于 2022-9-17 09:19 | 只看該作者
不要把全局變量放在data中,data內(nèi)存都當(dāng)作堆棧內(nèi)存,主要用于局部變量和壓棧變量的使用,其他內(nèi)存都放在idata或xdata中
回復(fù)

使用道具 舉報(bào)

8#
ID:433219 發(fā)表于 2022-9-17 09:54 | 只看該作者
基礎(chǔ)性常識(shí)問(wèn)題啊,堆棧指針之類的,要?jiǎng)討B(tài)占用部分 data區(qū),要留下足夠的空間
回復(fù)

使用道具 舉報(bào)

9#
ID:612392 發(fā)表于 2022-9-17 09:58 | 只看該作者
編譯的時(shí)候,程序選large,這樣就會(huì)優(yōu)先放xdata啦
回復(fù)

使用道具 舉報(bào)

10#
ID:188720 發(fā)表于 2022-9-17 09:59 | 只看該作者
qq624353765 發(fā)表于 2022-9-17 09:19
不要把全局變量放在data中,data內(nèi)存都當(dāng)作堆棧內(nèi)存,主要用于局部變量和壓棧變量的使用,其他內(nèi)存都放在id ...

好的,我已經(jīng)把全局變量放在idata里了,編譯通過(guò)了。
再請(qǐng)教一下 :我看有人說(shuō)RAM的高128字節(jié)是特殊功能寄存器,但是idata就是RAM的高128字節(jié)吧?不沖突嗎?
回復(fù)

使用道具 舉報(bào)

11#
ID:188720 發(fā)表于 2022-9-17 10:07 | 只看該作者
cjjdemon 發(fā)表于 2022-9-17 09:58
編譯的時(shí)候,程序選large,這樣就會(huì)優(yōu)先放xdata啦

這樣好像會(huì)變慢?為什么不推薦用 idata 呢?
回復(fù)

使用道具 舉報(bào)

12#
ID:188720 發(fā)表于 2022-9-17 10:09 | 只看該作者
wkman 發(fā)表于 2022-9-17 09:54
基礎(chǔ)性常識(shí)問(wèn)題啊,堆棧指針之類的,要?jiǎng)討B(tài)占用部分 data區(qū),要留下足夠的空間

好吧,基本功不行
回復(fù)

使用道具 舉報(bào)

13#
ID:807591 發(fā)表于 2022-9-17 11:19 | 只看該作者
紅燒魚(yú)頭 發(fā)表于 2022-9-17 10:07
這樣好像會(huì)變慢?為什么不推薦用 idata 呢?

確實(shí)速度差一點(diǎn),優(yōu)先用完idata 沒(méi)問(wèn)題
回復(fù)

使用道具 舉報(bào)

14#
ID:1034262 發(fā)表于 2022-9-17 20:59 | 只看該作者
樓主可以通過(guò)*.m51文件查看具體的變量安排。
STC8H3K系列的內(nèi)存遵守標(biāo)準(zhǔn)51的架構(gòu)要求,直接尋址(也可簡(jiǎn)介尋址)的SRAM是低128字節(jié),高128字節(jié)只能間接尋址(idata),擴(kuò)展的xdata有3072個(gè)字節(jié)。
回復(fù)

使用道具 舉報(bào)

15#
ID:612392 發(fā)表于 2022-9-17 22:37 | 只看該作者
紅燒魚(yú)頭 發(fā)表于 2022-9-17 10:07
這樣好像會(huì)變慢?為什么不推薦用 idata 呢?

放idata也行,idata也比較小呀,xdata就很大了哦,實(shí)際上不會(huì)慢多少的。
回復(fù)

使用道具 舉報(bào)

16#
ID:188720 發(fā)表于 2022-9-19 08:02 | 只看該作者
cjjdemon 發(fā)表于 2022-9-17 22:37
放idata也行,idata也比較小呀,xdata就很大了哦,實(shí)際上不會(huì)慢多少的。

使用xdata的話,還需要把AUXR的EXTRAM設(shè)為0,這個(gè)只要在初始化的時(shí)候設(shè)置一次就好了吧?不用每次調(diào)用xdata都專門(mén)調(diào)用一次EXTRAM=0吧?
回復(fù)

使用道具 舉報(bào)

17#
ID:123289 發(fā)表于 2022-9-19 08:51 | 只看該作者
1、編譯器一般會(huì)從30H開(kāi)始規(guī)劃RAM的使用,這樣你只能用30H-7FH。
2、系統(tǒng)會(huì)根據(jù)程序中,子程序調(diào)用的深度,預(yù)留堆棧的數(shù)量,又用掉一些。
3、函數(shù)在返回?cái)?shù)據(jù)時(shí),也會(huì)用堆棧傳遞結(jié)果,再用掉一些。
4、你的#INCLUDE  “??”,函數(shù)中,也會(huì)規(guī)劃掉一些RAM。
……,以上你不易計(jì)算清楚,系統(tǒng)用70個(gè)以上很正常。

另外,你在10#樓的疑問(wèn),回復(fù)你一下:
對(duì)于256字節(jié)的RAM芯片,高端的128個(gè)RAM(80-FFH)與特殊寄存器的地址(80-FFH)的確是重復(fù)的!!!
CPU為了防止沖突,對(duì)此區(qū)間的訪問(wèn)作出區(qū)分規(guī)定:
高端的128個(gè)RAM(80-FFH)必須用【間接訪問(wèn)指令】讀取,
而對(duì)特殊寄存器則采用【直接訪問(wèn)指令】讀取。
如果你精通匯編,這一點(diǎn)就清楚了!
而對(duì)于低端的RAM(0-7FH)則隨便你用哪種方式訪問(wèn)。
當(dāng)你用C寫(xiě)程序時(shí),編譯器會(huì)替你注意的,但需要你知它:變量放在哪!
編譯器會(huì)將你的C程序,編譯成匯編,并注意到【訪問(wèn)指令】用直接還是間接。

STC在特殊寄存器上做了大量的文章,擴(kuò)充了許多標(biāo)準(zhǔn)51沒(méi)有東東,乃至用滿了80-FFH特殊寄存器地址,還不夠!
于是STC人又在XRAM區(qū)域,取出部分地址,用作【擴(kuò)展特殊寄存器】,對(duì)此,標(biāo)準(zhǔn)的編譯方式無(wú)法作出區(qū)分的,寫(xiě)程序時(shí),需要你按STC的CPU說(shuō)明來(lái)寫(xiě)。
這也是,有些程序在不同芯片之間不能通用的原因之一。也是為什么要用#INCLUDE將芯片型號(hào),告訴編譯器的原因之一。
以上希望能幫到你。如果你想在單片機(jī)上成為高手,必須精通匯編,即使用你不用它,而用C寫(xiě)程序。
回復(fù)

使用道具 舉報(bào)

18#
ID:879348 發(fā)表于 2022-9-19 15:08 | 只看該作者
需要堆棧用于調(diào)用程序,局部變量,中斷處理
回復(fù)

使用道具 舉報(bào)

19#
ID:188720 發(fā)表于 2022-9-20 07:59 | 只看該作者
yzwzfyz 發(fā)表于 2022-9-19 08:51
1、編譯器一般會(huì)從30H開(kāi)始規(guī)劃RAM的使用,這樣你只能用30H-7FH。
2、系統(tǒng)會(huì)根據(jù)程序中,子程序調(diào)用的深度 ...

謝謝大佬!這幾天我也查了一些資料,大概都明白了。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91五月婷蜜桃综合 | 在线欧美一区 | h片在线播放 | 羞羞视频网站在线观看 | 91在线精品视频 | 97国产一区二区 | 亚洲狠狠 | 免费国产一区 | 欧美一区二区三区久久精品 | 国产免费xxx | 中文字幕视频在线观看 | 亚洲综合色站 | 91 久久| 欧美日韩电影一区二区 | 成人在线视频网址 | 美女久久 | 亚洲一区二区三区在线免费观看 | 午夜精品一区二区三区在线观看 | 日日干夜夜操 | 国产91在线 | 欧美 | 欧美久久一区二区三区 | 国产精品久久久久久久久动漫 | 在线观看av网站永久 | 婷婷久久综合 | 一区精品国产欧美在线 | 一级一片在线观看 | 美女视频h | 久久久久国产精品一区二区 | av特级毛片 | 天天干夜夜拍 | 区一区二区三在线观看 | 国产欧美在线 | 国产伊人久久久 | 久久国产精品久久 | 国产精品高潮呻吟久久 | 丝袜 亚洲 另类 欧美 综合 | 成人免费福利视频 | 亚洲一区亚洲二区 | 亚洲成人中文字幕 | 成人在线国产 | 一区二区三区久久久 |