• 
    

    
    

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

      ?

      MCS-51單片機三種編程方式的探討

      2012-04-29 07:59:35李銳,呂瓊
      電腦知識與技術(shù) 2012年20期
      關(guān)鍵詞:匯編語言單片機

      李銳,呂瓊

      摘要:MCS-51單片機是目前應(yīng)用最為廣泛的8位單片機,單片機的編程方式主要有匯編、C語言以及兩者混合三種方式,掌握三種編程方式,在具體應(yīng)用中靈活運用是非常重要的,該文通過這三種編程方式對MCS-51單片機的應(yīng)用進(jìn)行了詳細(xì)的討論。

      關(guān)鍵詞:單片機;匯編語言;C語言;混合編程

      中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2012)20-4994-03

      Discuss of Three Methods of Programming for MCS-51 Single Chip Microcomputer

      LI Rui,LV Qiong

      (College of Physics and Electronic Engineering, Qujing Normal University,Qujing 655011,China)

      Abstract: MCS-51 is the most popular in the 8 bit single chip microcomputer at present. Single chip microcomputer are three ways for programming, they are assembly language, C language and complex programming. Used the techniques with great facility is very import. The document discuss the methods in detail.

      Key words: single chip microcomputer; assembly language; C language; complex programming

      MCS-51系列單片機是Intel公司的8位單片機,其中DIP封裝的AT89S52單片機是美國Atmel公司生產(chǎn)的低電壓、高性能CMOS 8位單片機,其片內(nèi)含有8KB可在線編程的Flash閃速存儲器,芯片采用Atmel公司的高密度、非易失性存儲技術(shù)生產(chǎn),與標(biāo)準(zhǔn)的MCS-51單片機的指令系統(tǒng)及引腳兼容、功能強大,適合于許多較多較為復(fù)雜的控制應(yīng)用場合[1]。目前開發(fā)MCS-51系列單片機最流行的軟件是美國Keil Software公司出品的Keil軟件,這是一個功能強大的集成開發(fā)環(huán)境(μVision)。

      1 MCS-51單片機的三種編程方式

      1.1匯編方式

      匯編語言是面向機器的程序設(shè)計語言,也稱為符號語言。匯編語言中,用符號代替機器語言的二進(jìn)制碼,使之比機器語言易于讀寫、易于調(diào)試和修改,同時也具有機器語言執(zhí)行速度快,占內(nèi)存空間少等優(yōu)點,但在編寫復(fù)雜程序時具有明顯的局限性,匯編語言依賴于具體的機型,不能通用,也不能在不同機型之間移植。

      1.2 C語言方式

      C語言是一種高級語言,其編寫的程序比用匯編語言更符合人們的思考習(xí)慣,具有良好的模塊化,容易閱讀和維護(hù)等優(yōu)點,開發(fā)者可以更專心地考慮算法而不是考慮一些細(xì)節(jié)問題,這樣就減少了開發(fā)和調(diào)試的時間。同時C語言不依賴于硬件,這使其具有了很好的移植性[2]。另外,C語言還還有豐富的庫函數(shù)支持,繪圖能力也比較強。但C語言代碼編譯后的目標(biāo)代碼體積大,意味著存在占用空間多,執(zhí)行速度較慢的問題。

      1.3匯編與C語言混合方式

      根據(jù)匯編和C語言的特點,選擇編程語言的一種折中方式就是匯編和C語言混合編程?;旌暇幊谭绞街饕袃煞N形式,一種是在C語言中嵌入?yún)R編代碼,另一種是匯編和C語言相互調(diào)用函數(shù),實現(xiàn)方法是通過關(guān)鍵詞進(jìn)行標(biāo)識,如果涉及參數(shù)傳遞,主要是通過R2—R7這幾個工作寄存器來存取。在應(yīng)用中,通常在對時效性要求比較嚴(yán)格的時候,這部分代碼使用匯編是唯一的選擇,比如時鐘的中斷計時服務(wù)程序等,而其它時候,使用C語言比較方便。

      2三種編程方式的應(yīng)用——經(jīng)典流水燈實驗

      2.1匯編方式

      ORG 0000H;標(biāo)記程序起始位置

      SJMP MAIN;跳轉(zhuǎn)到主程序地址

      ORG 000BH;計時/計數(shù)器0的中斷入口地址

      AJMP TIMER0;跳轉(zhuǎn)到計時中斷服務(wù)程序

      ORG 0033H;標(biāo)記主程序起始的絕對位置MAIN: MOV TMOD,#02H ;設(shè)置為計時器工作方式2

      MOV TH0,#06H;預(yù)設(shè)溢出的自動賦值數(shù)據(jù)MOV TL0,#06H;預(yù)設(shè)一次計時的初值

      SETB ET0;打開計時/計數(shù)器中斷控制

      SETB EA;打開總中斷控制

      SETB TR0;開啟計時

      MOV R1,#00H

      MOV R0,#00H

      MOV A,#01H;初始化狀態(tài)數(shù)據(jù)LOOP: MOV P0,A;點亮發(fā)光二極管

      SJMP LOOP

      TIMER0: INC R1;機器周期計時

      CJNE R1,#250,EXT ;而方式2使用的是8位字長,因此使用了R0和R1擴展

      MOV R1,#00H

      INC R0

      CJNE R0,#32,EXT

      MOV R0,#00H

      RL A;循環(huán)左移點亮狀態(tài)數(shù)據(jù)

      EXT:RETI;中斷返回

      END;程序結(jié)束

      2.2 C語言方式

      unsigned int t=0;//計時變量

      unsigned char s=0x01;//發(fā)光二極管點亮狀態(tài)數(shù)據(jù)變量void timer0() interrupt 1 using 1{ //中斷函數(shù)申明

      t++;//每次中斷,計時變量加1

      if(t==8000){//需要8000次中斷,時間才到1秒

      s=_crol_(s,1);//點亮狀態(tài)數(shù)據(jù)變?yōu)橄乱粻顟B(tài)

      t=0;//到1秒后,賦0重新計時

      }

      }

      void main(){

      TMOD=0x02;//設(shè)置計時/計數(shù)器的工作方式

      TH0=0x06;//自動賦值設(shè)置TL0=0x06;//設(shè)置計時初值

      ET0=1;//打開計時中斷控制EA=1;//打開總中斷控制

      TR0=1;//開啟計時

      do{//死循環(huán)等待中斷

      P0=s;//點亮發(fā)光二極管

      }while(1);

      }

      2.3匯編和C語言混合方式

      2.3.1 C語言中嵌入?yún)R編

      實際應(yīng)用中,如果對中斷有嚴(yán)格的要求,可以把中斷程序代碼改為匯編,也就是嵌入?yún)R編語言的形式,這種方式實現(xiàn)比較簡單,而且C語言下定義的變量也可以直接使用,只不過超過單字節(jié)長度的變量的算法比較麻煩。

      2.3.2 C語言和匯編相互調(diào)用

      匯編代碼既可以直接嵌入C語言中,也可以單獨分離出來,下面的實例中把中斷函數(shù)單獨寫為匯編語言,另外,為了方便說明匯編對C語言的調(diào)用,把邏輯循環(huán)左移函數(shù)重新自定義。在應(yīng)用中,混合編程方式最麻煩就的相互代碼和變量的調(diào)用,在MCS-51系列單片機中,存在一套規(guī)則,如表1。

      2.4編譯時需注意的問題

      1)生成目標(biāo)程序文件

      使用Keil編譯,可以生成16進(jìn)制的后綴為.HEX的目標(biāo)程序文件,這個文件可以直接寫入單片機運行,但Keil默認(rèn)是不生成. HEX文件的,需要進(jìn)行設(shè)置,方法是在選中“Project Workspace”窗口中的“Target 1”,點鼠標(biāo)右鍵,選擇“Options for……”,在“Output”選項下進(jìn)行設(shè)置。

      2)編譯混合方式的程序

      首先,在Project窗口中的C文件上點鼠標(biāo)右鍵,選擇“Options for……”,使“Generate Assembler SRC File”和“Assemble SRC File”選項變成黑色(有效)狀態(tài);然后,根據(jù)選擇的編譯模式,把相應(yīng)的庫文件(如Small模式時,是KeilC51LibC51S.Lib)加入工程中,該文件必須作為工程的最后文件;最后進(jìn)行編譯,即可生成目標(biāo)代碼。

      3結(jié)束語

      以上代碼均通過Keil的編譯,并通過在線編程系統(tǒng)寫入AT89S52單片機內(nèi)部程序存儲中,使用單片機最小系統(tǒng)能正常運行。三種編程方式在具體的應(yīng)用中是很靈活的,需要根據(jù)其特點和使用者的經(jīng)驗來選擇使用。對于初學(xué)者,熟練掌握前兩種方式是非常必要的,而對于經(jīng)驗豐富的程序員,第三種方式不失為一種高效實用的方法。

      參考文獻(xiàn)

      [1]鄧興成,姜寶鈞.單片機原理與實踐指導(dǎo)[M].北京:機械工業(yè)出版社,2009:1.

      [2]趙亮,侯國銳.單片機C語言編程與實例[M].北京:人民郵電出版社,2003:1.

      [3] Keil Elektronik GmbH. and Keil software. Cx51 Compiler, Users Guide 2001:118-132.

      [4] Keil Elektronik GmbH. and Keil software. Macro Assembler and Utilities, Users Guide 2001:99-137.

      猜你喜歡
      匯編語言單片機
      高等學(xué)校計算機專業(yè)課程教學(xué)改革實踐——以匯編語言與接口技術(shù)課程為例
      計算機教育(2020年5期)2020-07-24 08:52:50
      基于單片機的SPWM控制逆變器的設(shè)計與實現(xiàn)
      電子制作(2019年13期)2020-01-14 03:15:28
      基于單片機的層次漸變暖燈的研究
      電子制作(2019年15期)2019-08-27 01:12:10
      匯編語言與C語言的混合程序設(shè)計技術(shù)研究
      電子制作(2019年10期)2019-06-17 11:45:16
      基于單片機的便捷式LCF測量儀
      電子制作(2019年9期)2019-05-30 09:42:02
      小議PLC與單片機之間的串行通信及應(yīng)用
      電子制作(2018年12期)2018-08-01 00:48:04
      提高《匯編語言程序設(shè)計》教學(xué)效率的思考與實踐
      基于單片機的平衡控制系統(tǒng)設(shè)計
      電子制作(2017年19期)2017-02-02 07:08:27
      試論匯編語言與C語言的混合程序設(shè)計技術(shù)
      電子世界(2015年18期)2015-03-26 22:36:05
      Microchip推出兩個全新PIC單片機系列
      太保市| 化德县| 疏勒县| 中方县| 措勤县| 兖州市| 永昌县| 和政县| 东宁县| 林周县| 绥化市| 兴国县| 余干县| 长汀县| 兴国县| 通道| 马尔康县| 吉安县| 克东县| 繁峙县| 泊头市| 黑水县| 伽师县| 东乡| 曲阜市| 凯里市| 建德市| 岳池县| 镇巴县| 全南县| 乐至县| 南丰县| 宿州市| 东明县| 从化市| 博爱县| 汝南县| 洛扎县| 始兴县| 分宜县| 沭阳县|