天天看點

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

本節書摘來自異步社群《例說51單片機(c語言版)(第3版)》一書中的第1章,第1.6節,作者 張義和 , 王敏男 , 許宏昌 , 餘春長,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

例說51單片機(c語言版)(第3版)

單片機系統的設計中,軟體與硬體息息相關,不同的電路設計,程式可能就不太一樣。是以,在編寫程式之前,必須确定電路的連接配接狀态,例如,要利用89s51的p2來控制8個led,讓這8個led分成兩組(高4位與低4位)交替閃爍,其設計步驟如下。

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

首先把電路連接配接妥當,如圖1-26所示。當p2的引腳輸出低電壓(0)時,其所連接配接的led呈現正向偏壓而發亮;若将引腳輸出高電壓(1)時,其所連接配接的led不導通而不亮。是以,我們的程式設計就要讓p2輸出為“00001111”,以十六進制數字表示為“0f”,使左邊4個led亮,右邊4個led不亮;而在keil c的程式裡十六進制數字是以“0x”為字首。是以,在程式裡應表示為“0x0f”。隔一段時間後,再将輸出反相(在keil c裡可利用“~”操作符),即左邊4個led不亮,右邊4個led亮,如此周而複始。

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

圖1-26 交替閃爍燈電路

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

有了電路和思路後,随即将思路畫成流程圖,如圖1-27所示,其中的延遲函數隻是一個“0~x-1”的計數程式而已。

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

圖1-27 流程圖

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

除非是很簡單的程式,否則,根據流程圖來編寫程式還是一個比較容易且保險的方法。程式如下。

說明:

若使用本書所推薦的89s51線上刻錄實驗闆,請将程式中的“#define  led  p2”,改為“#define led p1”。

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

緊接着單擊圖檔 100按鈕(以windows xp為例),在随即彈出的“開始”菜單裡選擇“程式”→keil uvision3選項,即可開啟keil c,如圖1-28所示。當然,若桌面上有圖檔 101圖示,則指向這個圖示,輕按兩下滑鼠左鍵一樣可以進入keil μvision 3環境。

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

圖1-28 keil uvision3內建開發環境

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

首先打開一個項目,啟動project菜單下的new project指令,螢幕出現如圖1-29所示的對話框。

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

圖1-29 儲存項目

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

在“檔案名”欄中指定所要新增的項目名稱(如ch01),再單擊圖檔 106按鈕,螢幕出現如圖1-30所示的對話框。

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

圖1-30 選擇器件

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

在data base欄中選擇所要使用的cpu晶片,例如atmel半導體公司的at89s51,再單擊圖檔 109按鈕關閉對話框,螢幕出現如圖1-31所示的對話框。

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

圖1-31 添加啟動代碼

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

這時系統詢問我們要不要将8051彙編語言的啟動代碼放入我們所編輯的項目檔案夾裡,在此單擊圖檔 112按鈕關閉此對話框,則在左邊将産生“target 1”項目,如圖1-32所示。

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

圖1-32 建立項目界面

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

單擊按鈕設定此晶片的選項,螢幕出現如圖1-33所示的對話框。

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

圖1-33 晶振頻率選擇

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

在這個對話框裡設定此晶片的工作頻率與所要輸出的檔案名。首先在target頁籤的xtal(mhz)欄中輸入12,指定此晶片的工作頻率為12mhz。然後切換到output頁籤,如圖1-34所示。

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

圖1-34 選擇産生十六進制檔案

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

選擇create hex file選項,如此才會産生十六進制檔案,單擊圖檔 120按鈕關閉對話框即可完成設定。

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

單擊左上方的圖檔 122按鈕,編輯區裡将打開一個全新的編輯視窗,再單擊圖檔 123按鈕,然後在随即出現的對話框裡的檔案名稱欄中輸入所要儲存的檔案名稱(ch01.c),再單擊圖檔 124按鈕關閉對話框。

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

在編輯視窗中輸入程式内容(即ch01.c),其中的縮排是單擊制表鍵圖檔 126所産生的,不用按空格鍵産生。程式編輯完成後,在編輯視窗的左側選擇target 1節點下面的sourc group 1項,單擊滑鼠右鍵,彈出快捷菜單,如圖1-31所示。選擇add files to group source group 1項,然後在随即出現的對話框裡指定剛才編輯的ch01.c檔案,再單擊

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

按鈕;最後,單擊

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

按鈕關閉對話框,即可将 ch01.c檔案加入source group 1。

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

圖1-35 添加源檔案

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

緊接着進行編譯與連接配接,單擊左上方的圖檔 131按鈕即可進行編譯與連接配接,而其過程将記錄在下方的輸出視窗中,如圖1-36所示。

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

圖1-36 編譯與連接配接

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

圖中的“0 error(s), 0 warnning(s).”表示沒有錯誤,是以就可繼續進行調試/仿真。單擊圖檔 134按鈕打開調試工具欄,螢幕出現确認對話框,如圖1-37所示。

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

單擊

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

按鈕關閉對話框,即進入調試狀态。若左下方沒有出現監視視窗,可單擊圖檔 137按鈕打開,如圖1-38所示。

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

圖1-37 進入調試/仿真

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

圖1-38 調試/仿真狀态

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

單擊監視視窗底部的watch #1标簽,切換到watch #1頁。再指向name欄裡的項,單擊滑鼠左鍵,再單擊快捷鍵圖檔 141即可輸入所要監視的信号名稱,在此要跟蹤p2,是以輸出p2,如圖1-39所示。

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

圖1-39 監視視窗

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

選擇view菜單下的periodic window update指令(若已打勾就不用再選擇),讓視窗随程式運作而變動。再單擊

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

按鈕即開始執行程式,監視視窗中,p2的值也在0x0f與0xf0之間交替變化。表示連接配接在p2的led将分為高4位與低4位交替閃爍。若要停止程式的進行,可單擊

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

按鈕。

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

如果監視視窗還不能滿足要求的話,可打開peripherals菜單中的i/o-ports指令,再選擇p2選項,即可打開p2視窗,如圖1-40所示。

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

圖1-40 i/o端口設定

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

若要繼續運作程式,可單擊

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

按鈕,則監視視窗與p2視窗的内容都将随程式的進行而變化。若想從頭開始,則單擊

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

按鈕停止程式,單擊

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

按鈕複位cpu,再單擊

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

按鈕。若要關閉此專案,則先單擊

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

按鈕離開調試狀态,再啟動project菜單下的close project指令。最後,啟動file菜單下的exit指令,即可關閉keil c程式。

《例說51單片機(C語言版)(第3版)》一1.6 執行個體演練

在本項目所存儲的檔案夾裡可找到ch01.hex檔案,這個檔案就是可執行檔案,使用ice加載此檔案即可進行線上仿真,至于線上仿真的操作,可參閱附錄。