1. 程式人生 > >微控制器入門基礎篇(一):Keil基本操作

微控制器入門基礎篇(一):Keil基本操作

Keil基本操作     文/阿丘  2018/3/28
一、概述    工欲善其事必先利其器。Keil uVersion 4.0(後文簡稱為Keil 4.0)是微控制器程式開發的整合開發環境(IDE),集成了C編譯器、巨集彙編、聯結器、庫管理和一個功能強大的模擬偵錯程式。     本節以點亮一個LED為例,演示如何通過Keil新建工程、新增原始檔、編譯等基本操作。二、Keil基本操作——以點亮一個LED專案為例     本專案通過8051微控制器的P2.0管腳控制一個紅色LED, 支援兩種控制模式:長亮模式和閃爍模式。電路圖如下圖所示,由圖可知,P3.0輸出低電平時,LED點亮;輸出低電平時,LED熄滅。      專案程式由一個.c和一個.h組成,其中,LedCtrl.c為主程式,演示LED的兩種控制模式;led.h為LED控制實現,定義了長亮函式LED_lit(bit flag)、閃爍函式LED_flash(unsigned int interval)和軟體延時函式LED_delayMS(unsigned int ms)。
      下面演示基於Keil完成本專案的開發過程。        1. 新建工程。        (1) 執行Keil uVision4。        (2)選擇選單【Project>New μVersion Project】,開啟Create New Project對話方塊。                   (3)設定工程儲存路徑和工程名稱。注意,建議一個工程對應一個資料夾,方便管理。               (4)設定微控制器型號。 在Select a CPU Data Base File對話方塊選擇Generic Data Base,然後彈出的對話方塊中選擇ATMEL>AT89C51,單擊【OK】按鈕。
      (5)單擊【否 】按鈕,選擇不復制8051啟動程式碼到工作檔案。       到此,空白工程已經建好,如下圖所示。
  1.  編寫程式碼
   (1)選擇選單【File>New】(快捷鍵Ctrl+N)新建一個空白檔案,則進入檔案編輯狀態。   (2)選擇選單【File>Save As】(快捷鍵Ctrl+S)將新建檔案儲存到工程目錄LEDCtrl下,命名為led.h。   (3)重複步驟(1)~(2),新建檔案LedCtrl .c,儲存路徑為工程目錄LEDCtrl 下。   (4)編寫led.h,程式碼如下:#include <reg51.h>   //匯入8051特殊功能暫存器定義及其可定址位定義
sbit led_red = P3^0; //定義led_red變數控制P3.0引腳:                     //輸出0時(低電平),LED亮,輸出1時,LED滅。/*******************************函式:LED_lit*功能:點亮/熄滅led_red*引數:bit flag: flag = 1, 點亮;flag = 0,熄滅*返回:無*****************************/void LED_lit(bit flag){   led_red = ~flag;  //不用if語句,控制輸出與flag為相反,直接取反操作即可。}/*******************************函式:delayMS*功能:ms級延時函式@12MHz晶振*引數:unsigned int: 延時時間,單位ms*返回:無*****************************/void LED_delayMS(unsigned int ms){   unsigned int i,j;   for(i=0;i<ms;i++)     for(j=0;j<150;j++);}/*******************************函式:LED_flash*功能:led_red閃爍:亮->滅>亮>滅...*引數:unsigned int: 閃爍間隔,單位ms*返回:無*****************************/void LED_flash(unsigned int interval){   lit(1);   delayMS(interval);   lit(0);   delayMS(interval);}    (5)編寫LEDCtrl.c,程式碼如下:#include "led.h"/*******************************函式:main*功能:程式入口,演示:1. LED長亮10s; 2. LED閃爍10次.*引數:無*返回:無*****************************/void main(){  unsigned char flash_times = 10;  unsigned char i;  while(1)    {      LED_lit(1);      LED_delayMS(10000);      for(i=0;i<flash_times;i++)        {          LED_flash(1000);        }    }  } (6)新增LEDCtrl.c和led.h到當前工程。   a. 在工程瀏覽區雙擊Target 1下的Source Group1,開啟新增對話方塊。   b. 再新增對話方塊中先選擇檔案型別(.h或.c),再雙擊要新增的檔案即可。新增的檔案會出現在工程資源瀏覽區下,如下圖所示。
  1. 編譯程式。 
   (1)設定輸出.hex選項,輸出目錄預設為工程路徑的根目錄。      選擇選單【Project>Options for Target 'Target1'...】(快捷鍵ALT+F7或快捷圖示),在彈出的對話方塊的Output頁籤中勾選Create Hex File選項,單擊【OK 】按鈕。。   (2)單擊工具欄的快捷圖示或按快捷鍵F7,編譯程式。在編譯資訊輸出區域顯示編譯結果,如下圖所示。    若有錯誤(error),雙擊錯誤提示即可。    如將LEDCtrl.c裡的LED_lit函式呼叫改為lit,則錯誤提示如下,表示lit函式缺少原型,即沒有定義ing。    至此,整個工程從建立到編譯已經介紹完成,以上就是Keil最基本的操作。至於程式除錯功能,屬於高階功能,不作介紹。本文PDF版本及源程式(包括Proteus模擬檔案)獲取路徑:github: mcu8051
https://github.com/happyicefish/mcu8051.git
https://github.com/happyicefish/mcu8051.git