• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Keil的51單片機(jī)匯編程序多文件編譯

      2014-04-29 00:44:03陳彩歡甘露
      中國電子商情 2014年7期
      關(guān)鍵詞:定位器可讀性指令

      陳彩歡 甘露

      引言:本文結(jié)合Keil μVision2程序開發(fā)流程,描述了51單片機(jī)匯編程序多文件編譯的實(shí)現(xiàn)方法。通過多文件編譯的使用,大大提高了匯編程序代碼的可讀性、可擴(kuò)展性,同時(shí)也很大程度地提高程序代碼的執(zhí)行效率以及內(nèi)存空間的使用率,避免內(nèi)存空間的浪費(fèi)。

      一、序言

      近年來,隨著C語言的進(jìn)一步推廣使用,絕大多數(shù)的工程師都傾向于使用C語言進(jìn)行單片機(jī)系統(tǒng)開發(fā),匯編語言由于可讀性、通用性、可移植性差的原因,很難滿足產(chǎn)品開發(fā)的需求。但是匯編語言具有執(zhí)行效率高、占用內(nèi)存空間小等特點(diǎn),在某些應(yīng)用領(lǐng)域還是具有無可替代的作用。

      本文結(jié)合Keil μVision2程序開發(fā)流程,描述了51單片機(jī)匯編程序多文件編譯的實(shí)現(xiàn)方法。通過多文件編譯的使用,大大提高了匯編程序代碼的可讀性、可擴(kuò)展性,同時(shí)也很大程度地提高程序代碼的執(zhí)行效率以及內(nèi)存空間的使用率,避免內(nèi)存空間的浪費(fèi)。

      二、Keil μVision2程序開發(fā)流程簡介

      Keil μVision2是美國Keil Software公司出品的51系列兼容單片機(jī)軟件集成開發(fā)環(huán)境,該軟件提供宏匯編器、鏈接/定位器、庫管理器、調(diào)試器以及目標(biāo)文件轉(zhuǎn)換器等工具,是51單片機(jī)系統(tǒng)開發(fā)的首選工具。

      Keil μVision2集成開發(fā)環(huán)境的編譯流程如下:首先宏匯編器對匯編源程序文件進(jìn)行編譯,生成擴(kuò)展名為.OBJ的目標(biāo)文件和擴(kuò)展名為.LST的列表文件,緊接著鏈接/定位器將所有的.OBJ文件進(jìn)行絕對地址分配,鏈接生成包含絕對地址的目標(biāo)文件和擴(kuò)展名為.M51的地址文件,最后由目標(biāo)文件轉(zhuǎn)換器生成可用于編程器燒寫、擴(kuò)展名為.HEX的可執(zhí)行文件。

      三、匯編程序多文件編譯實(shí)現(xiàn)

      在Keil μVision2集成開發(fā)環(huán)境下,我們可以根據(jù)不同的硬件模塊、功能模塊分開編寫應(yīng)用子程序,進(jìn)行模塊化管理,實(shí)現(xiàn)多文件編譯,這樣就可以大大提高匯編程序代碼的可讀性、可擴(kuò)展性。以下首先對段和模塊的概念進(jìn)行描述。

      一個(gè)段可以是一塊程序代碼或者是一個(gè)數(shù)據(jù)塊。根據(jù)其地址空間是否可以被鏈接/定位器更改,段可以分為可定位段和絕對地址段。在定義可重定位段的時(shí)候需要對其段名、類型及其屬性進(jìn)行定義。一個(gè)段可以分在不同的程序模塊中,只要具有相同的段名,在編譯過程中鏈接/定位器會(huì)把它們合并到一起。在定義絕對地址段的時(shí)候直接人為分配絕對地址,鏈接/定位器不能對改地址進(jìn)行更改。絕對地址段沒有段名,也不能給其他段結(jié)合。

      模塊是一個(gè)可以被單獨(dú)編譯的代碼單元,可以包含一個(gè)或多個(gè)段或者部分段,一個(gè)模塊既可以是單個(gè)文本文件,也可以通過INCLUDE指令把幾個(gè)文本文件合并在一起。在程序編譯過程中,匯編器會(huì)把一個(gè)模塊編譯為一個(gè)目標(biāo)文件,也就是一個(gè)模塊對應(yīng)一個(gè).OBJ文件。

      根據(jù)以上對段和模塊的描述,匯編程序的多文件編譯可以通過以下三個(gè)方法來實(shí)現(xiàn):

      1、通過INCLUDE指令合并源文件

      在代碼編寫時(shí),通過INCLUDE指令可以將一個(gè)源文件插入到當(dāng)前源文件中,這樣匯編器在編譯的時(shí)候就會(huì)將INCLUDE指令之后的文件合并到當(dāng)前文件進(jìn)行編譯,生成一個(gè)擴(kuò)展名為.OBJ的目標(biāo)文件。INCLUDE指令的格式如下:

      $ INCLUDE (文件名)

      通過該方式實(shí)現(xiàn)多文件編譯時(shí),插入的源文件既可以是擴(kuò)展名為.ASM的匯編源程序文件,也可以是擴(kuò)展名為.INC的包含文件。注意在被包含的源文件結(jié)尾不能有END指令,否則編譯會(huì)停止運(yùn)行。

      2、通過絕對地址段實(shí)現(xiàn)多文件編譯

      Keil μVision2中提供以下定義絕對地址段的指令,通過這些指令可以定義代碼段和各種數(shù)據(jù)段,并指定其絕對地址。

      由于絕對地址段在定義的時(shí)候?qū)Φ刂愤M(jìn)行了分配,鏈接/定位器不能夠?qū)ζ涞刂愤M(jìn)行更改,因此很容易造成地址重疊或者內(nèi)存空間浪費(fèi),而且在后續(xù)對程序進(jìn)行維護(hù)、升級的時(shí)候很有可能需要重新對地址進(jìn)行分配,非常不利于程序的擴(kuò)展和維護(hù)。因此絕對地址段通常是用在某些特定的場合,例如確定中斷向量的入口地址、數(shù)據(jù)存儲(chǔ)空間等。

      3、通過可重定位段實(shí)現(xiàn)多文件編譯

      在Keil μVision2中,通過SEGMENT指令即可定義可重定位段。定義可重定位段時(shí)必須指定段的名稱和存儲(chǔ)類型,其格式如下:

      四、總結(jié)

      通過以上三種方式,均可以實(shí)現(xiàn)多文件編譯,但是在實(shí)際使用過程中,INCLUDE指令通常用于包含特殊功能寄存器的定義等;絕對地址段則通常用于確定中斷向量的入口地址、數(shù)據(jù)存儲(chǔ)空間;而可重定位段的方式則廣泛地用于各種代碼段或數(shù)據(jù)段的定義。

      通過多文件編譯的方式,解決了單文件編譯會(huì)導(dǎo)致程序文件過于臃腫、可讀性差、不便于維護(hù)等缺點(diǎn),大大提高匯編程序代碼的可讀性以及可維護(hù)性。

      參考文獻(xiàn)

      [1] Keil Software. A51/AX51/A251 Macro Assembler and Utilities.2001.

      [2]孫涵芳,徐愛卿.MCS-51/96系列單片機(jī)原理及應(yīng)用(修訂版).1996.

      (作者單位:1、珠海格力電器股份有限公司;2、格力電器(合肥)有限公司)

      猜你喜歡
      定位器可讀性指令
      聽我指令:大催眠術(shù)
      定位器故障分析及控制措施
      壓接類定位器壓接工藝設(shè)備改進(jìn)方案
      ARINC661顯控指令快速驗(yàn)證方法
      LED照明產(chǎn)品歐盟ErP指令要求解讀
      電子測試(2018年18期)2018-11-14 02:30:34
      基于圖像處理的定位器坡度計(jì)算
      電氣化鐵道(2016年4期)2016-04-16 05:59:46
      對增強(qiáng)吸引力可讀性引導(dǎo)力的幾點(diǎn)思考
      新聞傳播(2015年11期)2015-07-18 11:15:03
      淺談對提高黨報(bào)可讀性的幾點(diǎn)看法
      新聞傳播(2015年9期)2015-07-18 11:04:12
      在增強(qiáng)地方時(shí)政新聞可讀性上用足心思
      中國記者(2014年2期)2014-03-01 01:38:34
      坐標(biāo)系旋轉(zhuǎn)指令數(shù)控編程應(yīng)用
      商洛市| 赤峰市| 马山县| 平罗县| 孙吴县| 辽阳市| 探索| 黔江区| 沅陵县| 揭西县| 灌阳县| 高邮市| 榆中县| 建阳市| 丰台区| 南澳县| 托克托县| 望城县| 昌吉市| 济宁市| 图木舒克市| 南宁市| 霞浦县| 揭东县| 庐江县| 大邑县| 道真| 牡丹江市| 武冈市| 岗巴县| 长丰县| 白玉县| 洱源县| 昌平区| 邛崃市| 石屏县| 龙井市| 黔西| 新闻| 蚌埠市| 天全县|