51單片機c語言與匯編語言混合編程淺析

51單片機c語言與匯編語言混合編程淺析

ID:22871336

大?。?2.50 KB

頁數(shù):5頁

時間:2018-11-01

51單片機c語言與匯編語言混合編程淺析_第1頁
51單片機c語言與匯編語言混合編程淺析_第2頁
51單片機c語言與匯編語言混合編程淺析_第3頁
51單片機c語言與匯編語言混合編程淺析_第4頁
51單片機c語言與匯編語言混合編程淺析_第5頁
資源描述:

《51單片機c語言與匯編語言混合編程淺析》由會員上傳分享,免費在線閱讀,更多相關內容在工程資料-天天文庫。

1、51單片機C語言與匯編語言混合編程淺析C51語言克服了匯編語言可讀性、可移植性差的缺點,現(xiàn)已成為開發(fā)單片機應用程序的主要手段。但一些特殊的應用場合仍然需要用匯編語言編寫程序,這就必然涉及到C51語言與匯編的相互調用,即混合編程的問題。本文介紹了C51語言與匯編語言混合編程的兩種基本方式,以及在keilC51編譯器中的具體處理方法。關鍵詞:混合編程;嵌入匯編;參數(shù)傳遞  C51是廣泛應用于8051系列單片機編程的高級語言,具有C語言的開發(fā)效率高、可讀性強、可移植好等諸多優(yōu)點。keilC51編譯器提供了大量功能豐富的庫函數(shù),能夠對C51源程序編譯生

2、成高效的目標代碼,從而提高了程序的開發(fā)與維護效率,因此采用C51語言開發(fā)8051系列單片機應用程序是開發(fā)人員的首選?! 〈蠖鄶?shù)情況下采用C51語言即可完成預期的任務,但是采用C51語言編程還是存在著效率不如匯編高、對底層硬件控制不如匯編方便、對代碼執(zhí)行速度有特殊要求(如精確延時)情況時無法實現(xiàn)等缺點。因而,編寫高速、高效率、可移植性好的單片機應用程序,必須結合C51語言與匯編語言各自的優(yōu)點,即C51語言與匯編語言混合編程。混合編程通常的做法是,程序的框架、復雜的數(shù)學運算、多任務管理等用C51語言編寫,對于那些要求執(zhí)行效率高、精確延時、直接控制底

3、層硬件等部分則由匯編語言來完成?! 【幊虒嵺`證明,混合編程有機結合了C51的強可讀性與匯編的高實時性,比單獨使用C51語言編程效率要高。但在實際開發(fā)中,不少初學者對混合編程無法下手,下面就本人的經驗,探討混合編程的一些基本方法?! ∫?、C51中嵌入匯編程序  在C51中嵌入匯編程序通常用在匯編代碼量少、內部無復雜的跳轉的情況下,可生成精簡的代碼、減少運行時間。在keilC51編譯器中,C51中嵌入匯編程序是通過#pragmaasm/endasm預處理語句來實現(xiàn),其格式如下:  #pragmaasm ?。粎R編程序  #pragmaendasm  

4、通過#pragmaasm/endasm語句告知編譯器,中間的語句行不用編譯為匯編程序代碼。在keilC51編譯器中,需設置嵌入匯編代碼的源文件中的“Optionsfor...”選項,激活其中“GenerateAssemblerSRCFile”和“AssembleSRCFile”兩個選項,然后根據選擇的編譯模式,把相應的庫文件添加到工程中,編譯即可生成目標代碼。使用該方法可以在C51源代碼的任何位置嵌入匯編代碼,主要用于延時和中斷處理。下例即是一個在C51程序中嵌入匯編代碼的實例。  二、C51的參數(shù)傳遞規(guī)則與命名規(guī)則  C51程序中調用匯編程序

5、是通過函數(shù)調用形式來實現(xiàn)的,匯編程序中各種段的命名、安排、參數(shù)傳遞和返回,必須嚴格遵守keilC51編譯器的參數(shù)傳遞規(guī)則和命名規(guī)則,才能保證正確的調用?! 。?)參數(shù)傳遞規(guī)則  參數(shù)傳遞的簡單辦法是使用寄存器,這樣做能夠產生高效的代碼,其傳遞規(guī)則如表1所示。表1參數(shù)傳遞規(guī)則參數(shù)類型char,一字節(jié)指針int,二字節(jié)指針long,float一般指針第1個參數(shù)R7R6,R7R4~R7R1,R2,R3第2個參數(shù)R5R4,R5R4~R7R1,R2,R3第3個參數(shù)R3R2,R3無R1,R2,R3    如果傳遞的參數(shù)較多,部分參數(shù)可在固定的存儲區(qū)域內傳送

6、。傳遞參數(shù)所使用的存儲器空間取決于選擇的存儲模式,這種參數(shù)傳遞方式代碼效率不高、速度較慢,一般盡量不要使用。  C51程序調用匯編程序過程中若存在返回值,匯編語言通過寄存器傳遞參數(shù)給C51程序,其傳遞規(guī)則如表2所示。表2返回值傳遞規(guī)則返回值類型使用寄存器說明bitC進位標志(unsigned)charR7?。╱nsigned)intR6,R7高位在R6,低位在R7(unsigned)longR4~R7高位在R4,低位在R7floatR4~R7高位在R4,低位在R7指針R1,R2,R3存儲類型在R3,高位在R2,低位在R1 ?。?)命名規(guī)則  為

7、了使C51程序能夠正確調用匯編程序,匯編程序必須遵循C51中函數(shù)名的轉換規(guī)則,否則無法實現(xiàn)程序的調用,其規(guī)則如表3所示。表3函數(shù)名的轉換規(guī)則C51函數(shù)聲明轉換函數(shù)名說明voidfunc(void)FUNC無參數(shù)傳遞或不含寄存器參數(shù)的函數(shù)名不做改變地傳入目標文件中,名字只是簡單地轉換為大寫形式voidfunc(char)_FUNC帶寄存器參數(shù)的函數(shù)在其名字前加上前綴“_”以示區(qū)別,表明這類函數(shù)包含寄存器內的參數(shù)傳遞voidfunc(void)reentrant_?FUNC對于再入函數(shù)在其名字前加上前綴“_?”以示區(qū)別,表明這類函數(shù)包含堆棧內的參數(shù)

8、傳遞  三、C51中調用匯編程序  編寫被C51調用的匯編程序,除了參數(shù)必須按照相應的規(guī)則外,程序的格式也有相應的規(guī)則,這些規(guī)則比較繁瑣,實際處理中可

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現(xiàn)內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。