keil uVision是一個單片機C語言的編程軟件,後麵的數字代表版本,keil uVision的版本有keil uVision1,keil uVision2,keil uVision3,keil uVision4,數字越大代表版本越高越新,現在最新版本是keil uVision4 有C51版本和ARM版本之分。它支持眾多不同公司的 MCS-51 架構的芯片,它集編輯,編譯,仿真等於一體,同時還支持、PLM、彙編和 C 語言的程序設計,界麵友好,易學易用,在調試程序,軟件仿真方麵也有很強大的功能。 因此很多開發 51 單片機 應用的工程師或普通的單片機愛好者,都對它十分喜歡。
Keil C51軟件提供豐富的庫函數和功能強大的集成開發調試工具,全Windows界麵,使您能在很短的時間內就能學會使用keil c51來開發您的單片機應用程序 。
另外重要的一點,隻要看一下編譯後生成的彙編代碼,就能體會到Keil C51生成的目標代碼效率非常之高,多數語句生成的彙編代碼很緊湊,容易理解。在開發大型軟件時更能體現高級語言的優勢。
Keil Cx51 是一個商業的軟件,分兩個版本,一個是完全版,使用時對生成的機器代碼空間不作任何限製,另一個是隻能編譯 2K 代碼空間 的 DEMO 版軟件,基本可以滿足一 般的個人學習和小型應用的開發。廢話少說,言歸正傳。
運行 Keil uVISION2 幾秒後,出現如圖 1-1 的屏幕。
一、建立工程
(1)點擊 Project 菜單,選擇 New Project,如圖 1-3。彈出的 Windows 文件對話窗口, 在“文件名”中輸入您的第一個 C 程序項目名稱(隻要符合 Windows文件規則的文件名都 行),這裏我們用“test”,如圖 1-4。 “保存”後的文件擴展名為 uv2,這是 KEILuVision2 項目文件擴展名,以後我們可以直接點擊此文件以打開先前做的項目。
( 2)選擇器件,根據需要選擇相應型號的器件,這裏我們選擇常用的 Ateml 公司的AT89C51。此時屏幕如圖 1-5 所示。點擊確定後返回主界麵。
(3)點擊“Target1”前麵的“+”號,出現下一層的“ Source Group1”,這時的工程還是一個空的工程,裏麵什麼文件也沒有,需要把編寫好的源程序加入,點擊“Source Group1”使其反白顯示 , 然後,點擊鼠標右鍵,出現如圖 3 所示的下拉菜單。 選中其中的 “Add file to Group”Source Group1”,出現一個對話框,要求尋找源文件,注意,該對話框下麵的“文件 類型”默認為 C source file(*.c),也就是以 C 為擴展名的文件,如為彙編文件,需要將文件 類型改掉。
(4)如需新建文件,點擊圖 1-7 中 1 的新建文件的快捷按鈕,在 2 中出現一個新的文字編輯窗口,這個操作也可以通過菜單 File-New 或快捷鍵 Ctrl+N 來實現。在文件編輯窗口輸入你的第一個 C 程序。完成後保存退出。
注意:文件名必須有擴展名,如 c 程序擴展名為.c,彙編程序擴展名為.asm 或.am51。
源程序可在任何文本編輯器中編寫,但要注意全角與半角字符,另外 Keil Cx51 文本編 輯器對漢字支持不好。
二、工程的詳細設置
工程建立好以後,還要對工程進行進一步的設置,以滿足要求。首先點擊左邊 Project 窗口的 Target 1,然後使用菜單“Project->Option for target ‘target1’”即出現對工程設置的對話框,這個對話框可謂非常複雜,共有 8 個頁麵,要全部搞清可不容易,絕大部份設置項 取默認值就可以了。
Xtal (MHz)-----晶振頻率值,默認值是所選目標 CPU 的最高可用頻率值,根據需要進行設 置。該數值與最終產生的目標代碼無關,僅用於軟件模擬調試時顯示程序執行時間。正確 設置該數值可使顯示時間與實際所用時間一致,一般將其設置成與你的硬件所用晶振頻率 相同,如果沒必要了解程序執行的時間,也可以不設。
Memory Model---選擇編譯模式(存儲器模式)。
Small 是所有變量都在單片機的內部 RAM 中;
Compact 是可以使用一頁外部擴展 RAM;
Larget 則是可以使用全部外部的擴展 RAM。
Code Model ---用於設置 ROM 空間的使用。
Small 模式,隻用低於 2K 的程序空間;
Compact 模式,單個函數的代碼量不能超過 2K,整個程序可以使用 64K 程序空間;
Larget 模式,可用全部 64K 空間。
Use on-chip ROM ----是否僅使用片內 ROM 選擇項,注意:選中該項並不會影響最終生成的目標代碼量
Operating -----是操作係統選擇項。Keil 提供了兩種操作係統:Rtx tiny 和 Rtx full,通常 我們不使用任何操作係統,即使用該項的默認值:None(不使用任何操作係統);
Off Chip Code memory -----用以確定係統擴展 ROM 的地址範圍。
Off Chip xData memory----- 用於確定係統擴展 RAM 的地址範圍
這些選擇項必須根據所用硬件來決定,如果是最小應用係統,不進行任何擴展,均不重新選擇,按默認值設置。
Select Folder for objects-----選擇最終的目標文件所在的文件夾,默認是與工程文件在同一個文件夾中,一般不需要更改。
Name of Executable----- 用於指定最終生成的目標文件的名字,默認與工程的名字相同,一般不需要更改。
Debug information----- 將會產生調試信息。這些信息用於調試,如果需要對程序進行調試,應當選中該項。
Browse information-----是產生瀏覽信息。該信息可以用菜單 view->Browse 來查看,這裏取默認值。
Creat Hex file-----用於生成可執行代碼文件。可以用編程器寫入單片機芯片的 HEX 格式文件,文件的擴展名為.HEX。
其它選默認即可
在彙編或編譯完成後將產生(*.lst)的列表文件,在連接完成後也將產生(*.m51)的列表文件,該頁用於對列表文件的內容和形式進行細致的調節,其中比較常用的選項是“C
Compile Listing”下的“Assamble Code”項,選中該項可以在列表文件中生成 C 語言源程序所對應的彙編代碼。
C51 標簽頁用於對 Keil 的 C51 編譯器的編譯過程進行控製,其中比較常用的是“Code Optimization”組,該組中 Level 是優化等級,C51 在對源程序進行編譯時,可以對代碼多 至 9 級優化,默認使用第 8 級,一般不必修改,如果在編譯中出現一些問題,可以降低優 化級別試一試。Emphasis (強調、重點)是選擇編譯優先方式,第一項是代碼量優化(最終 生成的代碼量小);第二項是速度優先(最終生成的代碼速度快);第三項是缺省。默認的 是速度優先,可根據需要更改。
三、編譯、連接
在工程中加入文件後即可進行編譯連接。
本項目隻學習新建程序項目和編譯運行仿真的基本方法,所以使用軟件默認的編譯設置。在上圖中,各按鈕功能如下:
1 ---用於編譯單個文件;
2 ---編譯當前項目,如果先前編譯過一次之後文件沒有做動編輯改動,這時再點擊是不會再 次重新編譯的;
3-- 是重新編譯,每點擊一次均會再次編譯鏈接一次,不管程序是否有改動。
4 ---信息輸出窗口,在窗口中可以看到編譯的錯誤信息和使用的係統資源情況等。
5 ---是菜單中對應的編譯選項,可依據個人習慣選用。
6---是開啟\關閉調試模式的按鈕,它也存在於菜單 Debug-Start\Stop Debug Session,快捷 鍵為 Ctrl+F5。
在 3 右邊的是停止編譯按鈕,隻有點擊了前三個中的任意一個,停止按鈕才會生效。 在本項目隻有一個文件,按 123 中的任何一個都可以編譯。
四、進入調試
(一)常用調試命令
進入調試狀態,Keil 內建了一個仿真 CPU 用來模擬執行程序,該仿真 CPU 功能強大, 可以在沒有硬件和仿真機的情況下進行程序的調試,下麵將要學的就是該模擬調試功能。 不過在學習之前必須明確,模擬畢竟隻是模擬,與真實的硬件執行程序肯定還是有區別的, 其中最明顯的就是時序,軟件模擬是不可能和真實的硬件具有相同的時序的,具體的表現就是程序執行的速度和各人使用的計算機有關,計算機性能越好,運行速度越快。
進入調試狀態後,界麵與編緝狀態相比有明顯的變化,Debug 菜單項中原來不能用的命令現在已可以使用了,工具欄會多出一個用於運行和調試的工具條,如圖所示,Debug 菜單上的大部份命令可以在此找到對應的快捷按鈕。,從左到右依次是複位、運行、暫停、單步、過程單步、執行完當前子程序、運行到當前行、下一狀態、打開跟蹤、觀察跟蹤、反彙編窗口、觀察窗口、代碼作用範圍分析、1#串行窗口、內存窗口、性能分析、工具按鈕 等命令。
幾個重要的概念:
全速執行-----是指一行程序執行完以後緊接著執行下一行程序,中間不停止,主要是看程序執行的最終結果,如果程序有錯,則難以確認錯誤出現在哪些程序行。
單步執行-----是每次執行一行程序,執行完該行程序以後即停止,等待命令執行下一行 程序,此時可以觀察該行程序執行完以後得到的結果,是否與預期結果相同,借此可以找 到程序中問題所在。
過程單步-----是指將彙編語言中的子程序或高級語言中的函數作為一個語句來全速執行。調試光標不進入子程序的內部,而是執行完該子程序,然後直接指向下一行。
運行到當前行-----全速執行當前地址行與當前光標行之間和程序。主要看一段程序運行情況,可以加快程序的調試。
執行完當前子程序-----是指進入子程序後按此按鈕,子程序中其餘沒有執行的指令將一次全部執行完畢,加快程序的執行進度。
程序調試中,這幾種運行方式都要用到。靈活應用這幾種方法,可以大大提高查錯的效率。
(二)斷點設置
斷點設置的方法有多種,常用的是在某一程序行設置斷點,設置好斷點後可以全速運行程序,一旦執行到該程序行即停止,可在此觀察有關變量值,以確定問題所在。 程序行設置/移除斷點的方法:
(1)將光標定位於需要設置斷點的程序行,使用菜單 Debug->Insert/Remove BreakPoint 設置或移除斷點;
Debug->Enable/Disable Breakpoint 是開啟或暫停光標所在行的斷點功能;
Debug->Disable All Breakpoint 暫停所有斷點;
Debug->Kill All BreakPoint 清除所有的斷點設置。
(2)使用工具條
五、程序實例
輸入下麵程序:
#include <reg51.h> //包含寄存器頭文件#include <stdio.h> //標準輸入/輸出頭文件void main(void) { //main 函數SCON = 0x52; //串口方式 1,允許接收TMOD = 0x20; //定時器 1 定時方式 2TH1 = 0xE8; //11.0592MHz 1200 波特率TL1 = 0xE8; TI = 1; TR1 = 1; //啟動定時器while(1) { printf ("Hello World!\n"); //顯示 Hello World} }
建立好工程後進入調試模式,按 4 我們可以打開 5 中的串行調試窗口,這個窗口我們
可以看到從 51 芯片的串行口輸入輸出的字符,這裏的第一個項目也正是在這裏看運行結果。 這些功能在菜單中有相應的對應。首先按 4 打開串行調試窗口,再按運行鍵,這時就可以看到串行調試窗口中不斷的打印“HelloWorld!”。這樣就完成了您的第一個 C 項目。最後 我們要停止程序運行並回到文件編輯模式,就要先按停止按鈕再按開啟\關閉調試模式按鈕。
可以打開反彙編窗口,看 C 程序所對應的彙編代碼,光標在那一個窗口,程序將按那一個窗口所對應的程序進行執行。
76.4M / 03-25
立即下載55M / 06-05
立即下載237.9M / 04-13
立即下載140.5M / 03-06
立即下載900.9M / 03-02
立即下載96.2M / 07-06
立即下載311.2M / 07-06
立即下載335M / 07-06
立即下載200M / 07-06
立即下載413.8M / 07-06
立即下載353.9M / 06-05
立即下載131.8M / 04-13
立即下載230.8M / 03-03
立即下載195.6M / 03-03
立即下載165.4M / 03-03
立即下載45.6M / 09-08
立即下載665.2M / 07-06
立即下載2.84G / 07-06
立即下載93M / 07-06
立即下載338.3M / 07-06
立即下載1.38G / 07-26
立即下載488.3M / 07-16
立即下載109.8M / 06-03
立即下載142M / 01-08
立即下載1.2M / 11-23
立即下載548.8M / 04-13
立即下載1.6M / 04-13
立即下載1.48G / 03-18
立即下載646.6M / 03-03
立即下載133.7M / 03-03
立即下載325.8M / 06-07
立即下載60M / 04-29
立即下載254M / 04-25
立即下載659M / 04-23
立即下載1M / 12-26
立即下載253.4M / 12-08
立即下載253M / 12-08
立即下載1.19G / 11-16
立即下載110.5M / 04-23
立即下載26.7M / 03-16
立即下載488.3M / 07-16
立即下載248.9M / 12-08
立即下載248.9M / 12-08
立即下載201.2M / 04-13
立即下載100.6M / 03-06
立即下載148.9M / 03-06
立即下載1.12G / 07-06
立即下載1.25G / 07-06
立即下載9.48G / 07-06
立即下載50KB / 07-06
立即下載116.2M / 04-10
立即下載1.92G / 04-17
立即下載201.5M / 04-13
立即下載7.31G / 07-01
立即下載94.3M / 07-06
立即下載2.48G / 07-06
立即下載7.63G / 07-06
立即下載1M / 07-06
立即下載778.1M / 07-06
立即下載509.7M / 07-06
立即下載561.8M / 07-11
立即下載1.32G / 01-19
立即下載72M / 07-06
立即下載548.7M / 07-06
立即下載1.00G / 07-06
立即下載9.13G / 07-06
立即下載126.2M / 07-06
立即下載72M / 07-06
立即下載105.1M / 07-06
立即下載132M / 07-06
立即下載