1) 目的
熟悉keil集成開發環境和Proteus仿真軟件的使用,完成兩個軟件的聯機調試,為下一步學習大好基礎。
2) 原理
分別在keil軟件和Proteus軟件中進行一些設置,兩個軟件便可以進行對同一個程序的聯機調試。
3) 過程
下面以點亮一個LED燈為例,來介紹整個過程。
步驟一:建立keil工程。
1) 打開keil軟件,如下圖選擇新建工程。
2) 將工程起名為oneled保存在新建的工程文件夾oneled中。如下圖。

3) 選擇CPU,我們這里選擇Atmel公司的AT89S52,如下面兩圖所示。


4) 選好芯片確定后,彈出提示框,問是否添加一些文件,我們這里選“否”,如下圖。

5) 下面新建文本文檔,用來編寫源程序。選擇菜單File再選擇New子菜單,或直接按下界面上的圖標進行建立,如下圖所示。

6) 按下保存圖標,保存新建的文件以“oneled.c”文件名保存在工程文件夾下。如下圖。(說明:文件名可以隨便起,但一般與工程名相同。)
7) 將新建的文件加入工程中。在Source Group 1上點鼠標右鍵,在彈出的菜單上選擇Add Files…選項,如下圖。

在彈出的對話框中選擇工程文件夾下剛才新建的“oneled.c”文件。點擊Add,再點擊Close關閉對話框。如下圖。

在下圖中可以看到文件已經加入到了Source Group 1中。按下最大化按鈕,可使編輯框最大化。

8) 設置工程,讓其編譯時輸出十六進制可執行文件。如圖在target 1上點右鍵選設置。

如下圖,將Create HEX File 選中,按確定退出。

至此,工程文件已經建立設置完畢,在開始寫源程序之前,我們先用Proteus軟件設計出led燈的電路圖。
步驟二:設計電路圖。
1) 首先選擇要用的器件。如下圖,按下P 圖標進行器件選擇。

輸入單片機芯片名AT89C52,器件便會出現在右側列表中。如下圖。(說明:這里用AT89C52,是因為該軟件中沒有AT89S52,但因為程序在兩芯片中都可執行,所以可以這樣代替。)

雙擊列表中的芯片名,它便會加入到主界面的器件表中,如下圖。

同樣,我們在找到LED小燈。這里我們用亮時為黃色的小燈,如下圖。

2) 開始畫電路圖。首先選中器件列表中的AT89C52,然后在設計區點鼠標左鍵,該器件就會出現。如下圖。

同樣,加入LED燈,并用鼠標在P0.0口與LED燈一端連線,將二者聯通。如圖。

在左側列表中如下圖選中相應圖標下的電源選項。

在設計區加入電源,并按下圖進行連接。

到這里電路已將設計完畢,下面我們到Keil中進行相關程序的編寫。
步驟三:編輯,編譯并運行程序。
1) 更換文本編輯器的字體。如下圖,看到輸入文本時很混亂,所以我們更換編輯器的字體。

如下圖,進行相應菜單的選擇。

在相應的位置選擇字體。因為我們改的是C文件的文本字體,所以進行如下圖的選擇,點擊Font后的按鍵。

我們選擇宋體。如下圖。(說明:你可以嘗試更換成別的字體。)
2) 編寫源程序。因為程序很簡單,這里主要是寫主函數。如下圖是改變字體后寫好的全部代碼。(說明:我們在后面將對程序進行解釋。)

3) 對源程序進行編譯。按下界面上的編譯按鍵進行編譯程序。如下圖。可以看到編譯成功,并生成了hex可執行文件,該文件在工程文件夾下。
4) 運行程序。在Proteus中的單片機芯片上點鼠標右鍵,將其選中。如下圖,選中的器件將變成紅色。

然后再在上面點鼠標左鍵,打開設置界面。如下圖,我們點Program File后的圖標,將生成的HEX可執行文件加入芯片中。

我們選擇工程文件夾下生成的十六進制hex文件。如下圖。

加入文件成功,如下圖。我們按下OK鍵退出。

在設計板上其他地方點擊鼠標右鍵,可以取消器件的選中狀態。點擊主界面左下角的運行按鍵,可以看到led小燈亮了起來。如下圖。按下停止按鍵可停止執行。

步驟四:聯機調試。
1) 對兩個軟件進行一些設置。在keil軟件工程的設置中在Debug界面進行如下圖的選擇。

在Proteus中按下圖選中相關選項。

2) 在keil中按下調試按鍵,可以看到Proteus中的運行按鍵已經執行,說明聯機成功。
如下圖。

3) 選擇oneled源程序界面,按下單步執行按鍵,出現黃色箭頭指向源程序的主函數的第一行。如下圖。

4) 再次按下單步執行按鍵,“P00=0;”此條語句便執行了,可以看到右邊的led燈已經亮了。如下圖。

5) 再次按下調試按鍵,停止調試。如下圖。

6) 在關閉Proteus之前,將文件保存,一般都保存到工程文件夾下,文件名與工程名相同。如下圖。

到這里,我們整個實驗過程就全部結束了。下面我們看一下工程文件夾。如下圖。

其中,1是源程序,2是Proteus軟件設計的仿真電路圖,3是keil工程文件,4是編譯生成的十六進制可執行文件。其他的文件是建立工程時生成的。
4)程序講解

電路圖如上,可以看出,LED小燈一端接電源即高電平,一端接P0口的第0位,很明顯,如果讓P0口的0位為低電平,那么小燈就會點亮。
下面是相應的源程序:
#include //頭文件,該頭文件對52系列單片機的寄存器等進行了定義,以后每次寫//程序都要加入該頭文件。
sbit P00 = P0^0; //位定義,因為端口的各位不能直接使用,所以我們要將其先定義一下,所//以P00就代表P0口的第0位。
void main() //主函數,這里的寫法和標準C語言相似。
{
P00=0; //P0口的0位賦值為0,即低電平,執行該語句,led燈就會點亮。
}
|