久久精品99久久_亚洲一区二区综合_狠狠色伊人亚洲综合成人_亚洲综合爱爱久久网

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當前位置:首頁 >> 技術中心 >> 單片機入門 >> KEIL C51之絕對地址定位詳解

KEIL C51之絕對地址定位詳解

關鍵字:Keil c51 作者:admin 來源:不詳 發布時間:2018-05-18  瀏覽:171

 單片機空間分配看*.M51文件,ARM,DSP空間分配看*.map文件

1、函數定位:

假如要把C源文件 tools.c 中的函數

int BIN2HEX(int xx)

{

...

}

放在CODE MEMORY的0x1000處,先編譯該工程,然后打開該工程的M51文件,在

* * * C O D E M E M O R Y * * *

行下找出要定位的函數的名稱,應該形如:

CODE xxxxH xxxxH UNIT ?PR?_BCD2HEX?TOOLS

然后在:

Project->Options for Target ...->BL51 Locate:Code

中填寫如下內容:

?PR?_BCD2HEX?TOOLS(0x1000)

再次Build,在M51中會發現該函數已放在CODE MEMORY的0x1000處了

2.賦初值的變量定位

要將某變量定位在一絕對位置且要賦初值,此時用 _at_ 不能完成,則如下操作:

在工程中建立一個新的文件,如InitVars.c,在其中對要處理的變量賦初值(假設是code變

量):

char code myVer = {"COPYRIGHT 2001-11"};

然后將該文件加入工程,編譯,打開M51文件,若定義的是code型,則在

* * * C O D E M E M O R Y * * *

下可找到:

CODE xxxxH xxxxH UNIT ?CO?INITVARS

然后在:

Project->Options for Target ...->BL51 Locate:Code

中填入:

?CO?INITVARS(0x200)

再次編譯即可。

相應地,如為xdata變量,則InitVars.c中寫:

char xdata myVer = {"COPYRIGHT 2001-11"};

然后將該文件加入工程,編譯,打開M51文件,在

* * * X D A T A M E M O R Y * * *

下可找到:

XDATA xxxxH xxxxH UNIT ?XD?INITVARS

然后在:

Project->Options for Target ...->BL51 Locate:Xdata

中填入:

?XD?INITVARS(0x200)

再次編譯即可。相應地,若定義的是data/idata等變量,則相應處理即可。

3、若有多個變量或函數要進行絕對地址定位,則應按地址從低到高的順序

使用KeilC51軟件,可以很方便地將代碼或者數據絕對定位到某個地址。

1、代碼定位:

方法1:使用偽指令CSEG。比如要將MyFunc1定位到代碼區C:0x1000,則新建一個A51文件,添加以下內容:

PUBLIC MYFUNC1

CSEG AT 1000H

MYFUNC1:

;其它代碼

RET

在其它源文件中,就可以調用MyFunc()函數了。需要注意的是,編譯器不檢測傳遞參數的數目,僅檢測函數是否有返回值。

方法2:使用BL51 Locate選項。比如在main.c中定義了一個MyFunc2函數,并且要將該函數定位到代碼區C:0x2000,則從菜單中選擇Project->Options for Target 'Target1',在彈出的對話框中選擇BL51 Locate頁,在下面的code欄中寫上?PR?MYFUNC2?MAIN(0x2000)即可。

如果想定位多個函數,也可以使用*通配符。

2、變量定位:

只有全局變量可以絕對定位,局部變量無法實現絕對定位。

方法1:使用_at_關鍵字。聲明一個全局變量unsigned char data MyBuf1[8] _at_ 0x20;

方法2:使用BL51 Locate選項。比如將main.c中定義的所有data型的全局變量定位到數據區D:0x28開始的空間,則從菜單中

選擇Project->Options for Target 'Target1',在彈出的對話框中選擇BL51 Locate頁,在下面的data欄中寫上?DT?MAIN(0x28)即可。

如果是idata,則使用?ID?MAIN(0x28),如果是xdata,則使用?XD?MAIN(0x28),如果是pdata,則使用?PD?MAIN(0x28)

3、堆棧定位:

在STARTUP.A51文件中定義了堆棧區?STACK,其起始地址同樣可以在BL51 Locate頁中設置,在Stack欄寫上?STACK(0x80)

還可以通過匯編實現

// my.a51

public my_flash_var

cseg at 0F100H

my_flash_var:

db 55h

end

然后C聲明

// flash.c

extern unsigned char code my_flash_var;

BL51 locate 選項卡中

code range 和 xdata range如果不填寫,編譯默認將程序中相應代碼和變量從空間前面取起

網上看到有人提到在keil中使用_at_進行絕對地址定位問題,我簡單介紹一下它的用法。

使用_at_關鍵字對存儲器進行絕對地址定位程序如下

#i nclude

char xdata LED_Data[50] _at_ 0x8000;

main()

{

LED_Data[0] = 0x23;

}

在keil中運行以上程序可以在存儲器窗口中輸入 x:0x8000 可以看到0x8000地址中的值為0x23.

值得指出的幾點是

1.在給變量LED_Data[50]定位絕對地址空間時,不能對其賦初值。

2.char xdata LED_Data[50] _at_ 0x8000;這條語句不能主函數中。有些網友提到在按著keil說明中用_at_進行絕對地址定位時,編譯會出現錯誤274,就是將這條語句放在主函數中的原因。

3.keil中地址是自動分配的,所以除非特殊情況否則不提倡使用絕對地址定位。初學者因帖別注意。不要把c當作匯編使用。

對需要/RST復位后要保持變量不變,防止意外改變(比如升級到新程序,變量地址可能被編譯器優化到其他地方),比較有用!!!!

編輯:admin  最后修改時間:2018-05-18

聯系方式

0755-82591179

郵箱:ivy@yingtexin.net

地址:深圳市南山區桃源街道平山社區平山一路2號南山云谷創業園二期11棟410-411

Copyright © 2014-2026 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號-4

久久精品99久久_亚洲一区二区综合_狠狠色伊人亚洲综合成人_亚洲综合爱爱久久网
www.成年人| 免费精品99久久国产综合精品应用| av噜噜在线观看| 中文字幕天天干| 污色网站在线观看| 亚洲国产精品三区| 在线观看免费的av| 91网址在线观看精品| 黄色片免费网址| 大地资源网在线观看免费官网| 97超碰人人看| 日韩视频免费播放| 116极品美女午夜一级| 天天色综合天天色| 老司机午夜性大片| 免费看黄色a级片| 国产 福利 在线| 男人天堂成人在线| 日韩 国产 一区| 日韩亚洲欧美视频| 欧美网站免费观看| 伊人国产精品视频| 青春草国产视频| 日本爱爱免费视频| 欧美 另类 交| av动漫在线看| 7777在线视频| 欧美 国产 小说 另类| 污污视频在线免费| av日韩一区二区三区| 色一情一区二区| 久激情内射婷内射蜜桃| 污污网站免费观看| 一卡二卡三卡视频| 在线免费观看av网| 欧美精品一区二区三区免费播放| 青青草原播放器| 日本黄色三级大片| 天堂…中文在线最新版在线| 污污的视频免费观看| 中国丰满人妻videoshd | 欧美精品色视频| 欧美国产激情视频| 久久综合亚洲精品| 欧美成人手机在线视频| 日韩精品免费播放| www婷婷av久久久影片| 亚洲精品性视频| 激情视频综合网| 无码aⅴ精品一区二区三区浪潮| 91蝌蚪视频在线| 91插插插插插插插插| 国产av无码专区亚洲精品| 国产自产在线视频| 男人的天堂avav| 女同性恋一区二区| 香蕉视频xxx| 日本黄色播放器| 在线看免费毛片| 97超碰成人在线| wwwwwxxxx日本| 五月激情五月婷婷| 欧美成年人视频在线观看| 成人精品小视频| 国产成人无码av在线播放dvd| 成人免费在线小视频| 国产黄页在线观看| 日韩在线综合网| www.亚洲天堂网| 999精品网站| 日本xxxx黄色| 视频免费1区二区三区| 91av视频免费观看| 99中文字幕在线| 欧美在线观看黄| 无码av天堂一区二区三区| 玩弄中年熟妇正在播放| 成年人免费大片| 国产乱叫456| 日本中文字幕一级片| 18禁网站免费无遮挡无码中文| 成人午夜免费在线| 日韩免费高清在线| a级网站在线观看| xxxx18hd亚洲hd捆绑| 狠狠操精品视频| 天堂av.com| 国产精品无码人妻一区二区在线| 成人免费在线小视频| 五月花丁香婷婷| 欧美一级视频免费看| 色噜噜狠狠一区二区| 日本精品免费视频| 成人精品视频一区二区| 久久久久久久久久久久久久久国产 | 成 年 人 黄 色 大 片大 全| 黑人粗进入欧美aaaaa| 在线观看日本www| heyzo亚洲| 色姑娘综合天天| 夫妻免费无码v看片| www.黄色网址.com| av动漫免费看| 亚洲小视频在线播放| 久久综合伊人77777麻豆最新章节| 日本三日本三级少妇三级66| 韩国日本美国免费毛片| 国产真人做爰毛片视频直播| 九一精品久久久| www.日日操| 欧美牲交a欧美牲交| 日本aa在线观看| 国产欧美一区二| 嫩草av久久伊人妇女超级a| 国产一区二区四区| 天天综合五月天| 91插插插影院| 天堂av8在线| 三年中国国语在线播放免费| 国产精品无码人妻一区二区在线| 久久久一二三四| 91极品视频在线观看| 欧美激情成人网| 黄色片视频在线播放| 中文字幕无码精品亚洲35| 国产日韩av网站| 极品美女扒开粉嫩小泬| 亚洲色成人www永久在线观看| 欧美性视频在线播放| 日本xxx免费| 日韩精品一区二区三区电影| 天美一区二区三区| 美国av在线播放| 国产一级黄色录像片| mm131午夜| 中文字幕精品在线播放| 欧美国产日韩在线视频| 亚洲综合123| 国产成人免费高清视频| 在线观看成人免费| 国产玉足脚交久久欧美| 男人天堂999| 男女视频在线看| 亚洲免费av一区| 亚洲一区二区图片| 91成人综合网| 六月激情综合网| 婷婷丁香激情网| 国产探花在线观看视频| 日本丰满少妇黄大片在线观看| 激情六月天婷婷| 蜜桃传媒一区二区三区| 免费看黄色一级大片| 欧美日韩视频免费在线观看| 一级黄色特级片| 麻豆md0077饥渴少妇| av免费观看国产| 国产三级国产精品国产专区50| 伊人五月天婷婷| 黑人糟蹋人妻hd中文字幕 | 欧美黄网在线观看| 免费无码国产v片在线观看| 一个色综合久久| 丁香六月激情婷婷| 91淫黄看大片| 超碰成人免费在线| 中文字幕线观看| av在线播放亚洲| 日本美女视频一区| 欧美韩国日本在线| 中文字幕日韩精品无码内射| 国产一级不卡毛片| 欧美又粗又长又爽做受| www.亚洲自拍| 密臀av一区二区三区| 日本aa在线观看| 香蕉精品视频在线| 99精品视频播放| 久久99久久久久久| 中文字幕乱码免费| 激情五月婷婷基地| 手机看片福利盒子久久| 免费无码不卡视频在线观看| 大地资源网在线观看免费官网| 天堂中文av在线| 少妇黄色一级片| 精品久久久久久中文字幕2017| 天天夜碰日日摸日日澡性色av| 日本xxxxx18| 一区二区三区四区免费观看| 久热在线视频观看| 天堂在线中文在线| 污网站在线免费| 手机在线国产视频| jizz18女人| 亚洲视频第二页| 久久免费看毛片| 欧美日韩激情四射| 欧美一区二区视频在线播放| 欧美精品久久96人妻无码|