![]() |
發布時間: 2019-2-3 16:20
正文摘要:本帖最后由 夢園心田 于 2019-2-3 16:22 編輯 keil 修改target 下的memory model 修改后出現異常如何處理.同一個程序,修改后就得到不同得結果. 一般這種情況如何處理. |
sxhwdz 發表于 2019-2-6 08:34 我已經解決了,我直接在變量初始化時指定內存類型就可以了。 |
僅修改target 下的memory model 是不夠的,Use On-chip XRAM 要選中,還要修改程序中的變量定義。 |
我只想知道,用xdata為啥不行,按理說不應該存在這些問題 |
這個我查過了,我只是想知道為啥用沒存 |
XDATA區是51的擴展內存,訪問該空間使用的指令跟訪問內部RAM是不一樣的,你得要確認你的硬件有擴展內存。 data: 固定指前面0x00-0x7f的128個RAM,可以用acc直接讀寫的,速度最快,生成的代碼也最小。 idata:固定指前面0x00-0xff的256個RAM,其中前128和data的128完全相同,只是因為訪問的方式不同。 xdata: 外部擴展RAM,一般指外部0x0000-0xffff空間,用DPTR訪問。 |
你選用xdata就得選用內部有SRAM的單片機,比如stc15等,如果選用了內部沒有SRAM的單片機就會出錯。 |