|
C中定義的全局變量、數(shù)組就是固定的了,直接操作吧,比較方便。實(shí)際的地址是編譯器自動分配的,具體在哪里要看匯編。
匯編里可以直接指定,這是匯編的好處。
以下轉(zhuǎn)自網(wǎng)絡(luò)
在網(wǎng)上看到有人提到在keil中使用_at_進(jìn)行絕對地址定位問題,我簡單介紹一下它的用法。
使用_at_關(guān)鍵字對存儲器進(jìn)行絕對地址定位程序如下
#i nclude<reg51.h>
char xdata LED_Data[50] _at_ 0x8000;
main()
{
LED_Data[0] = 0x23;
}
在keil中運(yùn)行以上程序可以在存儲器窗口中輸入 x:0x8000 可以看到0x8000地址中的值為0x23.
值得指出的幾點(diǎn)是
1.在給變量LED_Data[50]定位絕對地址空間時,不能對其賦初值。
2.char xdata LED_Data[50] _at_ 0x8000;這條語句不能主函數(shù)中。有些網(wǎng)友提到在按著keil說明中用_at_進(jìn)行絕對地址定位時,編譯會出現(xiàn)錯誤274,就是將這條語句放在主函數(shù)中的原因。
3.keil中地址是自動分配的,所以除非特殊情況否則不提倡使用絕對地址定位。初學(xué)者因帖別注意。不要把c當(dāng)作匯編使用。
|
|