|
經(jīng)過測試:
------------------------
u8 code gCode[256] _at_ 0x3A00;
u8 xdata gXRam[256] _at_ 0x5000;
*gXRam = 6;
printf("%p\n", gXRam);
printf("%bd\n", *gXRam);
printf("%p\n", gCode);
*((u8 xdata *)gCode) = 5;
printf("%p\n", (u8 xdata *)gCode);
printf("%bd\n", *gCode);
printf("%bd\n", *((u8 xdata *)gCode));
-----------------------------
軟件是 keil5,編譯沒有錯誤警告,單片機(jī)為 C8051F340。
串口打印結(jié)果為:
x:5000
6
c:3a00
x:3a00
-1
5
--------------------------
code定義的代碼貌似可以轉(zhuǎn)換為xdata,然后起始地址的值好像沒有改變。
有個疑問就是是 C8051F340 的 RAM 只有 256字節(jié)+4KB 大小為啥我可以把地址定義超過空間大。康刂犯鷥(nèi)存大小無關(guān)嗎? |
|