新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)常用輸出格式--Hex-80(Hex 386)

        單片機(jī)常用輸出格式--Hex-80(Hex 386)

        作者: 時(shí)間:2016-11-23 來源:網(wǎng)絡(luò) 收藏

        單片機(jī)常用輸出格式--Hex-80(Hex 386)

        我前面曾經(jīng)介紹了Intel 32 bit Hex,但并不是所有的.hex文件都屬于這種格式。Keil輸出的hex文件則是另外一個(gè)類似的格式Hex-80。與前者類似,紀(jì)錄的格式為:
        :LLAAAARRDDDD………DDDDCC
        LL: Length field-長度段:數(shù)據(jù)段(D)的字節(jié)數(shù)
        AAAA: Address field-地址段:數(shù)據(jù)段第一個(gè)字節(jié)的地址
        RR: Record type-紀(jì)錄類型,00代表數(shù)據(jù),01代表紀(jì)錄結(jié)束
        DD..: Data field-數(shù)據(jù)段
        CC: CheckSum field-校驗(yàn)和:計(jì)算方法是將本條記錄冒號開始的所有對字母<不包括本效驗(yàn)字和冒號>所表示的十六進(jìn)制數(shù)字<一對字母表示一個(gè)十六進(jìn)制數(shù),這樣的一個(gè)十六進(jìn)制數(shù)為一個(gè)字節(jié)>都加起來然后模除256得到的余數(shù)最后求出余數(shù)的補(bǔ)碼即是本效驗(yàn)字節(jié)cc.

        例子::011B50002272
        LL = 0x01
        AAAA = 0x1B50
        RR=0x00
        DD=0x22
        CHECK SUM = ~((0x01+0x1B+0x50+0x22)&0xFF)+1 = 0x72

        與Intel 32不同,由于Hex-80用于64K地址范圍以內(nèi)的系統(tǒng),所以沒有基址設(shè)定的指令。如果在Keil-51中,用跨BANK的方式超過了64K,編譯器會產(chǎn)生多個(gè)HXX文件來標(biāo)識BANK。如:
        test.h00
        test.h01
        test.h02
        分別在每個(gè)bank的視角來產(chǎn)生64K代碼空間。對于Common Bank由于其在每個(gè)Bank的視角中都存在,所以在幾個(gè)文件中都有同樣的存在,這點(diǎn)要求編程人員注意。
        還有,貌似Keil產(chǎn)生的Hex-80文件地址并不連續(xù)~天曉得Keil為什么不規(guī)整一下。


        關(guān)鍵詞: 單片機(jī)常用輸出格

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 肇州县| 福州市| 衢州市| 盐津县| 镇远县| 米易县| 福安市| 岫岩| 吉隆县| 博爱县| 九龙县| 涞水县| 乌兰县| 东乌珠穆沁旗| 磐安县| 四平市| 彭泽县| 桦甸市| 图木舒克市| 阿拉善左旗| 察哈| 绥宁县| 玉山县| 新巴尔虎左旗| 雷州市| 唐海县| 武宣县| 建平县| 当雄县| 鸡东县| 余庆县| 赞皇县| 娄底市| 那曲县| 河东区| 盐城市| 郧西县| 高青县| 南召县| 揭东县| 三亚市|