欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3039|回復: 0
收起左側

51單片機絕對地址定位

[復制鏈接]
ID:342442 發表于 2018-10-13 08:20 | 顯示全部樓層 |閱讀模式
1 個子程序段定位在 1 個固定的地址位置?

以下 2 問題均要用 C51 解決
1。 怎樣將 1 個子程序段定位在 1 個固定的地址位置? 例如將 INT BCD2HEX(INT XX)定位在 1000H
2。 HOW 在 EEPROM 中固定的位置存放 1 字符串? 如在 200H 處放“COPYRIGHT 2001-11”
答: 函數定位與變量定位...
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?_BCD2
HEX?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?INITV ARS
然后在:
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?INITV ARS
然后在:
Project->Options for Target ...->BL51 Locate:Xdata
中填入:
?XD?INITVARS(0x200)
再次編譯即可。相應地,若定義的是 data/idata 等變量,則相應處理即可。
3、若有多個變量或函數要進行絕對地址定位,則應按地址從低到高的順序排 列。

完整的pdf格式文檔51黑下載地址:
51單片機中怎么將函數或者變量定位到指定地址,非常有用 .pdf (66.92 KB, 下載次數: 24)


回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表