① Keil中data和idata,pdata,xdata以及code的區別
使用軟體之前,要養成閱讀軟體幫助的良好習慣,而不是到處東問西問!
Cx51的存儲類型:Cx51通過以下的關鍵字定義了不同的存儲類型,從而確保能夠訪問到51架構的全部存儲空間。
code:訪問程序存儲器(默認僅限於標准51能夠定址的64kB空間內),生成的代碼主要通過 MOVC @A+DPTR實現。
data:訪問可直接定址的片內存儲器(標准51的低128位元組),從而實現對變數最高速的訪問。
idata:訪問間接定址的片內存儲器(標准51的256位元組)。
bdata:訪問位定址的片內存儲器(標准51中從20H開始的16位元組),支持位+位元組的混合訪問模式。
xdata:訪問外部數據存儲器(默認僅限於標准51能夠定址的64kB空間內),生成的代碼主要通過MOVX @A+DPTR實現。
far:擴展的RAM及ROM訪問方式,最大支持16MB定址空間,至於生成的代碼方式則取決於用戶自定義的訪問程序或特定的晶元類型(例如恩智浦的80C51MX、Dallas390等)。
pdata:訪問當前頁面內的外部數據存儲器(256位元組),生成的代碼主要通過MOVX @Ri實現。
② 2. 在C51語言中,說明定義的變數存儲類型分別使用xdata和pdata時,兩種的存儲空間有何不同
xdata存儲在外部RAM。使用前要對匯流排操作。pdata可存取256位元組/頁。多於一頁時應在Startup.A51中指明pdata長度,操作時用P2口生成頁地址。如果xdata大於256位元組,還是用xdata方式較好。