專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

在KEIL中實(shí)現(xiàn)C語言嵌套匯編語言

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2010年10月20日   【字體:

 

 

一、講解背景

 

在單片機(jī)學(xué)習(xí)的過程中,掌握一點(diǎn)匯編語言是非常有必有的,作為低級(jí)語言匯編語言在單片

機(jī)開發(fā)中有它不可取代的作用,比如每條指令可以精確的確定延時(shí)時(shí)間,便于理解非常適合

硬件工程師學(xué)習(xí)。但是要提高單片機(jī)技能,必須掌握C 語言編程,因?yàn)镃 語言有強(qiáng)大的模

塊化管理思想。我想在很多人學(xué)習(xí)的過程中即學(xué)了匯編語言,又學(xué)習(xí)了C  語言,那么一個(gè)

問題便隨之而產(chǎn)生,如果將C  語言與匯編語言相互結(jié)合,達(dá)到更好的編程效果,本次講解

就是基于這個(gè)問題而生成的。

 

二、操作步驟

 

第一步:

在KEIL 中新建工程及文件并復(fù)制以下程序并保存為C 文件:

/*

 功能:C 語言里嵌套匯編語言,起到拋磚引玉的作用

作者:三維電子楊榮國(guó)

日期:2010-5-16

*/

#include<reg51.h>

 

delay()

{

    int i,j;

    for(i=0;i<1000;i++)

        for(j=0;j<120;j++); //12M 晶振下延時(shí)1MS

}

main()

{

        P2=0x00; //控制8 個(gè)LED 亮

        delay(); //延時(shí)1S

 

        #pragma ASM//匯編嵌套開始

 

        MOV P2,#0FFH   //匯編嵌套結(jié)束

 

        #pragma ENDASM//匯編嵌套開始

 

        while(1); //C 程序結(jié)束

}

 

 

 

第二步:

選中 Project   窗口中的C  文件,比如CX1.C,并右鍵,選擇“Options   for   ...”,點(diǎn)擊右邊的

 “Generate Assembler SRC File”和“Assemble SRC File”,使復(fù)選框的打鉤由灰色變成黑色

狀態(tài)(雙擊即可);

 

第三步:

將相應(yīng)的庫文件(如 Small        模式時(shí),是 Keil\C51\Lib\C51S.Lib)加入工程中,       該文件必須作為

工程的最后文件 (將該文件像頭文件一樣加載到工程中);

 

第四步:

 

在KEIL 中編譯生成HEX 文件,并按如下圖設(shè)計(jì)仿真圖,在仿真中查看效果。

 

三、演示效果

 

如下圖,如果你在你自己的仿真軟件PROTEUS 上看到單片機(jī)P2  口控制的8 個(gè)LED 先亮延

時(shí)1S 左右自動(dòng)熄滅的效果。那說明你已經(jīng)完全掌握C 語言里嵌套匯編語言的方法了。


 

作業(yè):實(shí)現(xiàn)C 語言嵌套匯編語言,C 語言實(shí)現(xiàn)控制P2.0  的紅色LED  以0.1S 的時(shí)間間隔閃

爍5 次,匯編語言實(shí)現(xiàn)控制P2.1 的綠色LED 以0.1S 的時(shí)間間隔閃爍3 次,并停止。

 

 

關(guān)閉窗口

相關(guān)文章