C語言與匯編語言的混合編程課件.ppt

C語言與匯編語言的混合編程課件.ppt

ID:57044144

大?。?69.50 KB

頁數(shù):27頁

時(shí)間:2020-07-28

C語言與匯編語言的混合編程課件.ppt_第1頁
C語言與匯編語言的混合編程課件.ppt_第2頁
C語言與匯編語言的混合編程課件.ppt_第3頁
C語言與匯編語言的混合編程課件.ppt_第4頁
C語言與匯編語言的混合編程課件.ppt_第5頁
資源描述:

《C語言與匯編語言的混合編程課件.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、C語言與匯編語言的混合編程案例南通開放大學(xué)1.混合編程的實(shí)現(xiàn)KeilC51編譯器支持在C51程序中直接插入?yún)R編語言,也可以調(diào)用以匯編語言編寫的子程序。1.C51程序中嵌入?yún)R編程序有時(shí)需要在C51程序中嵌入用匯編語言編寫的一個(gè)小程序段,來對(duì)硬件進(jìn)行操作,提高程序的可靠性和靈活性。下面是C51文件中嵌入?yún)R編語言的一般步驟。第一步:通過預(yù)編譯命令“#pragmaasm”和“#pragmaendasm”在C語言代碼中插入?yún)R編語言代碼。1.混合編程的實(shí)現(xiàn)用C語言程序中插入?yún)R編語言延時(shí)程序的方法,編程實(shí)現(xiàn)從P1.1引腳輸出周期為2ms的方波(設(shè)ST

2、C12C5A60S2單片機(jī)系統(tǒng)時(shí)鐘頻率為12MHz)#includesbitP1_1=P1^1;voidmain(){while(1){P1_1=1;#pragmaasmMOVR7,#12;2TDEL:MOVR6,#250;2TDJNZR6,$;4TDJNZR7,DEL;4T#pragmaendasmP1_1=0;#pragmaasmMOVR7,#12DEL:MOVR6,#250DJNZR6,$DJNZR7,DEL#pragmaendasm}}1.混合編程的實(shí)現(xiàn)(續(xù))第二步:在KeilC51環(huán)境下,在Projec

3、t窗口中包含匯編代碼的C文件上單擊右鍵,在彈出的快捷菜單中選擇“Optionsfor…”命令,再點(diǎn)擊選中右邊的“GenerateAssemblerSRCFile”和“AssemblerSRCFile”復(fù)選框,使檢查框由灰色(無效)變成黑色(有效)狀態(tài)。1.混合編程的實(shí)現(xiàn)(續(xù))1.混合編程的實(shí)現(xiàn)(續(xù))勾選GenerateAssemblerSRCFile和AssembleSRCFile1.混合編程的實(shí)現(xiàn)(續(xù))第三步:根據(jù)選擇的編譯模式,把相應(yīng)的庫文件(如Small模式時(shí),是KeilC51LibC51S.Lib)加入到工程中,該文件必須

4、作為工程的最后文件。如果沒有做這一步編譯,則會(huì)出現(xiàn)如下警告“UNRESOLVEDEXTERNALSYMBOL”。1.混合編程的實(shí)現(xiàn)1.混合編程的實(shí)現(xiàn)(續(xù))庫文件與編譯模式的關(guān)系如下:C51S.LIB_沒有浮點(diǎn)運(yùn)算的Small模式C51C.LIB_沒有浮點(diǎn)運(yùn)算的Compact模式C51L.LIB_沒有浮點(diǎn)運(yùn)算的Large模式C51FPS.LIB_帶浮點(diǎn)運(yùn)算的Small模式C51FPC.LIB_帶浮點(diǎn)運(yùn)算的Compact模式C51FPL.LIB_帶浮點(diǎn)運(yùn)算的Large模式第四步:編譯,生成目標(biāo)代碼。2.C51與匯編函數(shù)的相互調(diào)用與原理無論是

5、C51調(diào)用匯編函數(shù),還是匯編調(diào)用C51函數(shù),其操作是完全一致的。當(dāng)我們需要利用函數(shù)進(jìn)行混合編程時(shí),只需分別用C語言和匯編語言把函數(shù)寫好,然后在C語言程序(匯編程序)中調(diào)用匯編函數(shù)(C函數(shù))。也可以先用C語言編寫所有的代碼,包括需要匯編語言實(shí)現(xiàn)的部分,然后采用編譯控制指令SRC對(duì)需要匯編語言實(shí)現(xiàn)的函數(shù)進(jìn)行編譯,編譯后將產(chǎn)生一個(gè)與C文件同名的匯編語言源文件,該文件的擴(kuò)展名為.SRC,根據(jù)需要再對(duì)該文件進(jìn)行精煉、修改。2.1混合項(xiàng)目文件編程混合項(xiàng)目文件編程就是把用C語言編寫的程序保存為擴(kuò)展名為.C的C語言文件,把用匯編語言編寫的程序保存為擴(kuò)展

6、名為.asm、.SRC或者.A51的匯編語言文件,然后把這些文件導(dǎo)入到同一個(gè)工程下進(jìn)行編譯連接的方法。在C語言中調(diào)用匯編程序時(shí),對(duì)被調(diào)用函數(shù)(匯編語言函數(shù))要在主調(diào)函數(shù)(C語言函數(shù))所在文件中作出聲明,并且對(duì)匯編語言程序有以下要求:要使用SEGMENT偽指令定義可再定位的CODE段。要根據(jù)不同情況對(duì)函數(shù)名進(jìn)行轉(zhuǎn)換,見表1。要使用PUBLIC偽指令將被調(diào)用函數(shù)說明為外部可用函數(shù)。若有參數(shù)傳遞,按照表3所列的規(guī)則使用參數(shù)。若有返回值,按照表4所列規(guī)則存入寄存器。2.1混合項(xiàng)目文件編程(續(xù))編程實(shí)現(xiàn)從單片機(jī)P1.0引腳輸出周期為4ms的方波,

7、同時(shí)從P1.1引腳輸出周期為8ms的方波(設(shè)單片機(jī)系統(tǒng)時(shí)鐘頻率為12MHz)。分析:分別用匯編語言和C語言設(shè)計(jì)3個(gè)模塊程序如下:模塊1:用C語言編寫主程序,使P1.1引腳輸出周期為8ms的方波;模塊2:用C語言編程,使P1.0引腳輸出周期為4ms的方波;模塊3:用匯編語言編寫延時(shí)1ms的程序。程序執(zhí)行時(shí)用模塊1調(diào)用模塊2獲得8ms方波,模塊2調(diào)用模塊3,并向匯編程序傳遞字符型參數(shù)(x=2),實(shí)現(xiàn)2ms延時(shí)。3.混合編程模塊1(文件名pulse1.c):#include#defineucharunsignedcha

8、rsbitP1_1=P1^1;externvoiddelay4ms(void);//外部函數(shù)delay4ms()聲明voidmain(){while(1){P1_1=0;delay4ms();//調(diào)用模塊2

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

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

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