熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
|
發(fā)布時(shí)間: 2023-8-2 16:58
正文摘要:我用的是STC15w型號(hào)的單片機(jī),通常在keil選擇“AT89C51”就行,但是“AT89C51”只有128Byte ram,請(qǐng)問大家超出范圍了咋辦?怎么設(shè)置keil,以至于達(dá)到2k ram? |
| 可以用STC12C5A60S2來替代AT89C51, 40PIN管腳一對(duì)一兼容, 指令兼容, 片內(nèi)帶1K XRAM. 不需要Keil設(shè)置xram, 注意軟件設(shè)置XRAM開關(guān), 就能用xram了. |
|
對(duì)不起樓主,是我孤陋寡聞,剛剛查資料才知道stc15w的片內(nèi)ram居然多達(dá)2k,可以用movx 指令來讀寫這2k片內(nèi)ram |
| 樓主可能還沒搞懂ram和程序rom之間的關(guān)系,還是多學(xué)習(xí)吧 |
戡拤 發(fā)表于 2023-8-3 11:58 這跟你設(shè)置成什么芯片有一毛錢的關(guān)系嗎? |
| 不需要設(shè)置。程序默認(rèn)都有最大ram但是你用就不能超芯片范圍 |
| 我知道了,我之前試過,在keil中我選擇AT89C51,然后我設(shè)置了一個(gè)查表數(shù)組是這樣的u8 xdata Arry[256]{},編譯的時(shí)候沒有報(bào)錯(cuò),但是燒錄進(jìn)芯片后就出了問題。所以結(jié)論是,keil中,它只管編譯有沒有報(bào)錯(cuò),不管實(shí)際中芯片RAM的大小 |
戡拤 發(fā)表于 2023-8-3 08:19 這是你選錯(cuò)了芯片造成的嗎? |
a825563619 發(fā)表于 2023-8-3 09:36 是的,我就是這樣做的,但我不知道編譯是以“AT89C51”128Byte判斷,還是實(shí)際燒錄的芯片 |
戡拤 發(fā)表于 2023-8-3 08:19 可以用code把數(shù)組放入flash空間,就不占ram空間了 |
Hephaestus 發(fā)表于 2023-8-2 22:55 我之前設(shè)置了了一個(gè)數(shù)組查表,結(jié)果編譯沒有錯(cuò)誤,燒錄進(jìn)芯片中就出問題了,發(fā)現(xiàn)是數(shù)組占用了所有ram空間 |
| RAM只能這樣設(shè)置嗎?能不能像匯編一樣在程序中設(shè)置好? |
| 如果你沒有專用的仿真器,只是憑借燒錄后的運(yùn)行結(jié)果來判斷程序?qū)懙膶?duì)不對(duì),那么這里是可以瞎填的,不需要正確設(shè)置,能不能合理的利用全部RAM,完全是憑借你的軟件寫的是否正確,這里的設(shè)置完全沒有意義。 |
| 長(zhǎng)數(shù)組用idata或xdata |
| 裝STC的包,不要用這個(gè)包 |
Powered by 單片機(jī)教程網(wǎng)