亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        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)用進行了詳細的討論。

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

        中圖分類號:TP311文獻標識碼: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),與標準的MCS-51單片機的指令系統(tǒng)及引腳兼容、功能強大,適合于許多較多較為復(fù)雜的控制應(yīng)用場合[1]。目前開發(fā)MCS-51系列單片機最流行的軟件是美國Keil Software公司出品的Keil軟件,這是一個功能強大的集成開發(fā)環(huán)境(μVision)。

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

        1.1匯編方式

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

        1.2 C語言方式

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

        1.3匯編與C語言混合方式

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

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

        2.1匯編方式

        ORG 0000H;標記程序起始位置

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

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

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

        ORG 0033H;標記主程序起始的絕對位置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)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)生成目標程序文件

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

        2)編譯混合方式的程序

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

        3結(jié)束語

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

        參考文獻

        [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單片機系列
        麻麻张开腿让我爽了一夜| 一区二区高清视频免费在线观看 | av在线播放免费网站| 国自产拍偷拍精品啪啪一区二区 | 久久亚洲欧美国产精品| 人妻少妇av无码一区二区| 亚洲成人av一区二区三区| 亚洲国产综合精品一区| 国产欧美日韩va另类在线播放| 中文字幕日本特黄aa毛片| 中文岛国精品亚洲一区| 一区二区亚洲精品国产精| 国产高清av在线播放| 国产精品国产三级国av| 丰满人妻一区二区乱码中文电影网| 国产一级内射一片视频免费| 无码av不卡一区二区三区| 亚洲精品永久在线观看| 国产精品亚洲综合色区丝瓜| 美女扒开内裤让我捅的视频| 亚洲一区二区三区无码久久| 色诱久久av| 成人性生交大片免费看7| 白嫩丰满少妇av一区二区| 青青草原精品99久久精品66 | 天天综合亚洲色在线精品 | 日本激情一区二区三区| 麻豆国产一区二区三区四区| 日日猛噜噜狠狠扒开双腿小说| 娇柔白嫩呻吟人妻尤物| 区一区二区三免费观看视频| 色一情一乱一伦一视频免费看| 日韩精品无码一区二区三区免费| 厕所极品偷拍一区二区三区视频 | 放荡的少妇2欧美版| 国产激情对白一区二区三区四| 蜜桃视频高清在线观看| 久久婷婷五月综合色奶水99啪| 午夜精品久久久久久中宇| 国产精品一区二区午夜久久| 亚洲综合偷自成人网第页色|