![]() |
發布時間: 2023-8-2 16:58
正文摘要:我用的是STC15w型號的單片機,通常在keil選擇“AT89C51”就行,但是“AT89C51”只有128Byte ram,請問大家超出范圍了咋辦?怎么設置keil,以至于達到2k ram? |
可以用STC12C5A60S2來替代AT89C51, 40PIN管腳一對一兼容, 指令兼容, 片內帶1K XRAM. 不需要Keil設置xram, 注意軟件設置XRAM開關, 就能用xram了. |
對不起樓主,是我孤陋寡聞,剛剛查資料才知道stc15w的片內ram居然多達2k,可以用movx 指令來讀寫這2k片內ram |
樓主可能還沒搞懂ram和程序rom之間的關系,還是多學習吧 |
戡拤 發表于 2023-8-3 11:58 這跟你設置成什么芯片有一毛錢的關系嗎? |
不需要設置。程序默認都有最大ram但是你用就不能超芯片范圍 |
我知道了,我之前試過,在keil中我選擇AT89C51,然后我設置了一個查表數組是這樣的u8 xdata Arry[256]{},編譯的時候沒有報錯,但是燒錄進芯片后就出了問題。所以結論是,keil中,它只管編譯有沒有報錯,不管實際中芯片RAM的大小 |
戡拤 發表于 2023-8-3 08:19 這是你選錯了芯片造成的嗎? |
a825563619 發表于 2023-8-3 09:36 是的,我就是這樣做的,但我不知道編譯是以“AT89C51”128Byte判斷,還是實際燒錄的芯片 |
戡拤 發表于 2023-8-3 08:19 可以用code把數組放入flash空間,就不占ram空間了 |
Hephaestus 發表于 2023-8-2 22:55 我之前設置了了一個數組查表,結果編譯沒有錯誤,燒錄進芯片中就出問題了,發現是數組占用了所有ram空間 |
RAM只能這樣設置嗎?能不能像匯編一樣在程序中設置好? |
如果你沒有專用的仿真器,只是憑借燒錄后的運行結果來判斷程序寫的對不對,那么這里是可以瞎填的,不需要正確設置,能不能合理的利用全部RAM,完全是憑借你的軟件寫的是否正確,這里的設置完全沒有意義。 |
長數組用idata或xdata |
裝STC的包,不要用這個包 |