單片機C語言教程(一)

2021-01-20 電子產品世界
  使用C語言肯定要使用到C編譯器,以便把寫好的C程序編譯為機器碼,這樣單片機才能執行編寫好的程序。KEIL uVISION2是眾多單片機應用開發軟體中優秀的軟體之一,它支持眾多不同公司的MCS51架構的晶片,它集編輯,編譯,仿真等於一體,同時還支持,PLM,彙編和C語言的程序設計,它的界面和常用的微軟VC++的界面相似,界面友好,易學易用,在調試程序,軟體仿真方面也有很強大的功能。因此很多開發51應用的工程師或普通的單片機愛好者,都對它十分喜歡。
  以上簡單介紹了KEIL51軟體,要使用KEIL51軟體,必需先要安裝它。KEIL51是一個商業的軟體,對於我們這些普通愛好者可以到KEIL中國代理周立功公司的網站上下載一份能編譯2K的DEMO版軟體,基本可以滿足一般的個人學習和小型應用的開發。(安裝的方法和普通軟體相當這裡就不做介紹了)
  安裝好後,你是不是迫不及待的想建立自己的第一個C程序項目呢?下面就讓我們一起來建立一個小程序項目吧。或許你手中還沒有一塊實驗板,甚至沒有一塊單片機,不過沒有關係我們可以通過KEIL軟體仿真看到程序運行的結果。
  首先當然是運行KEIL51軟體。怎麼打開?噢,天!那你要從頭學電腦了。呵呵,開個玩笑,這個問題我想讀者們也不會提的了:P。運行幾秒後,出現如圖1-1的屏幕。

圖1-1 啟動時的屏幕

  接著按下面的步驟建立您的第一個項目:
  (1)點擊Project菜單,選擇彈出的下拉式菜單中的New Project,如圖1-2。接著彈出一個標準Windows文件對話窗口,如圖1-3,這個東東想必大家是見了N次的了,用法技巧也不是這裡要說的,以後的章節中出現類似情況將不再說明。在"文件名"中輸入您的第一個C程序項目名稱,這裡我們用"test",這是筆者慣用的名稱,大家不必照搬就是了,只要符合Windows文件規則的文件名都行。"保存"後的文件擴展名為uv2,這是KEIL uVision2項目文件擴展名,以後我們可以直接點擊此文件以打開先前做的項目。

圖1-2 New Project菜單

圖1-3 文件窗口

  (2)選擇所要的單片機,這裡我們選擇常用的Ateml公司的AT89C51。此時屏幕如圖1-4所示。AT89C51有什麼功能、特點呢?不用急,看圖中右邊有簡單的介紹,稍後的章節會作較詳細的介紹。完成上面步驟後,我們就可以進行程序的編寫了。
  (3)首先我們要在項目中創建新的程序文件或加入舊程序文件。如果你沒有現成的程序,那麼就要新建一個程序文件。在KEIL中有一些程序的Demo,在這裡我們還是以一個C程序為例介紹如何新建一個C程序和如何加到您的第一個項目中吧。點擊圖1-5中1的新建文件的快捷按鈕,在2中出現一個新的文字編輯窗口,這個操作也可以通過菜單File-New或快捷鍵Ctrl+N來實現。好了,現在可以編寫程序了,光標已出現在文本編輯窗口中,等待我們的輸入了。第一程序嘛,寫個簡單明了的吧。下面是經典的一段程序,呵,如果你看過別的程序書也許也有類似的程序:

本文引用地址:http://www.eepw.com.cn/article/201611/320761.htm

#include
#include

void main(void)
{
 SCON = 0x50; //串口方式1,允許接收
 TMOD = 0x20; //定時器1定時方式2
 TCON = 0x40; //設定時器1開始計數
 TH1 = 0xE8; //11.0592MHz 1200波特率
 TL1 = 0xE8;
 TI = 1;
 TR1 = 1; //啟動定時器

 while(1)
  {
   printf ("Hello World!"); //顯示Hello World
  }
}

圖1-4選取晶片

圖1-5新建程序文件

這段程序的功能是不斷從串口輸出"Hello World!"字符,我們先不管程序的語法和意思吧,先看看如何把它加入到項目中和如何編譯試運行。
  (4)點擊圖1-5中的3保存新建的程序,也可以用菜單File-Save或快捷鍵Ctrl+S進行保存。因是新文件所以保存時會彈出類似圖1-3的文件操作窗口,我們把第一個程序命名為test1.c,保存在項目所在的目錄中,這時你會發現程序單詞有了不同的顏色,說明KEIL的C語法檢查生效了。如圖1-6滑鼠在屏幕左邊的Source Group1文件夾圖標上右擊彈出菜單,在這裡可以做在項目中增加減少文件等操作。我們?quot;Add File to Group Source Group 1"彈出文件窗口,選擇剛剛保存的文件,按ADD按鈕,關閉文件窗,程序文件已加到項目中了。這時在Source Group1文件夾圖標左邊出現了一個小+號說明,文件組中有了文件,點擊它可以展開查看。

圖1-6把文件加入到項目文件組中

  (5)C程序文件已被我們加到了項目中了,下面就剩下編譯運行了。這個項目我們只是用做學習新建程序項目和編譯運行仿真的基本方法,所以使用軟體默認的編譯設置,它不會生成用於晶片燒寫的HEX文件,如何設置生成HEX文件就請看下面的第三課。我們先來看圖1-7吧,圖中1、2、3都是編譯按鈕,不同是1是用於編譯單個文件。2是編譯當前項目,如果先前編譯過一次之後文件沒有做動編輯改動,這時再點擊是不會再次重新編譯的。3是重新編譯,每點擊一次均會再次編譯連結一次,不管程序是否有改動。在3右邊的是停止編譯按鈕,只有點擊了前三個中的任一個,停止按鈕才會生效。5是菜單中的它們,我個人就不習慣用它了。嘿嘿,這個項目只有一個文件,你按123中的一個都可以編譯。按了?好快哦,呵呵。在4中可以看到編譯的錯誤信息和使用的系統資源情況等,以後我們要查錯就靠它了。6是有一個小放大鏡的按鈕,這就是開啟關閉調試模式的按鈕,它也存在於菜單Debug-StartStop Debug Session,快捷鍵為Ctrl+F5。

圖1-7編譯程序

  (6)進入調試模式,軟體窗口樣式大致如圖1-8所示。圖中1為運行,當程序處於停止狀態時才有效,2為停止,程序處於運行狀態時才有效。3是復位,模擬晶片的復位,程序回到最開頭處執行。按4我們可以打開5中的串行調試窗口,這個窗口我們可以看到從51晶片的串行口輸入輸出的字符,這裡的第一個項目也正是在這裡看運行結果。這些在菜單中也有,這裡不再一一介紹大家不妨找找看,其它的功能也會在後面的課程中慢慢介紹。首先按4打開串行調試窗口,再按運行鍵,這時就可以看到串行調試窗口中不斷的打?quot;Hello World!"。呵呵,是不是不難呀?這樣就完成了您的第一個C項目。最後我們要停止程序運行回到文件編輯模式中,就要先按停止按鈕再按開啟關閉調試模式按鈕。然後我們就可以進行關閉KEIL等相關操作了。
  到此為止,第一課已經完結了,初步學習了一些KEIL uVision2的項目文件創建、編譯、運行和軟體仿真的基本操作方法。其中一直有提到一些功能的快捷鍵的使用,的確在實際的開發應用中快捷鍵的運用可以大大提高工作的效率,建議大家多多使用,還有就是對這裡所講的操作方法舉一反三用於類似的操作中。

圖1-8調試運行程序

相關焦點

  • 單片機c語言教程:建立你的第一個KeilC51項目
    隨著單片機技術的不斷發展,以單片機C語言為主流的高級語言也不斷被更多的單片機愛好者和工程師所喜愛。使用C51肯定要使用到編譯器,以便把寫好的C程序編譯為機器碼,這樣單片機才能執行編寫好的程序。
  • 單片機c語言教程:C51變量
    存儲器類型的說明就是指定該變量在單片機c語言硬體系統中所使用的存儲區域,並在編譯時準確的定位。表6-1中是KEIL uVision2所能認別的存儲器類型。注意的是在AT89c51晶片中RAM只有低128位,位於80H到FFH的高128位則在52晶片中才有用,並和特殊寄存器地址重疊。
  • 51單片機C語言延時函數
    以某晶振為12MHz的單片機為例,晶振為12MHz即一個機器周期為1us。一. 500ms延時子程序程序:void delay500ms(void){unsigned char i,j,k;for(i=15;i>0;i--)for(j=202;j>0;j--)for(k=81;k>0;k--);}計算分析:
  • 單片機C語言程序設計:LED 模擬交通燈
    =10) return; //閃爍 5 次Flash_Count=0;Operation_Type=3; break; c語言相關文章:c語言教程
  • PIC單片機C語言程序設計(8)
    《PIC 單片機C 語言程序(7)》一文介紹MPLAB IDE7.40 的安裝時, 我們已將光碟中的PICC 編譯器的壓縮軟體PICC8.05.rar( 見該文圖12)粘貼到「我的電腦」的E 盤中。所以安裝PICC 編譯器時,只需按以下步驟操作。
  • C語言教程
    ,又具有彙編語言的特點。2.C語言教程--C語言有哪些特點?  編輯、編譯、連接、運行一個C語言程序的具體過程如下:  (1)編輯源程序,完成之後將源程序以擴展名.c存檔。  (2)對源程序進行編譯,即將源程序轉換為擴展名為.obj的二進位代碼。
  • 單片機c語言教程:C51運算符和表達式(指針和地址運算符)
    指針是單片機C語言中一個十分重要的概念,也是學習單片機C語言中的一個難點。對於指針將會在第九課中做詳細的講解。在這裡我們先來了解一下單片機C語言中供給的兩個專門用於指針和地址的運算符:本文引用地址:http://www.eepw.com.cn/article/170885.htm* 取內容 取地址取內容和地址的一般形式分別為:變量 = * 指針變量 指針變量 = 目標變量取內容運算是將指針變量所指向的目標變量的值賦給左邊的變量;取地址運算是將目標變量的地址賦給左邊的變量
  • 單片機基本結構及C語言編程基礎
    IE,IP)  針對AT89C52單片機,頭文件AT89x52.h給出了SFR特殊功能寄存器所有埠的定義。教科書的160頁給出了針對MCS51系列單片機的C語言擴展變量類型。單片機C語言編程基礎1、 十六進位表示字節0x5a:二進位為01011010B;0x6E為01101110。 2、 如果將一個16位二進數賦給一個8位的字節變量,則自動截斷為低8位,而丟掉高8位。 3、 ++var表示對變量var先增一;var—表示對變量後減一。
  • 單片機C語言延時分析
    標準的C語言中沒有空語句。但在單片機的C語言編程中,經常需要用幾個空指令產生短延時的效果。這在彙編語言中很容易實現,寫幾個nop就行了。
  • 單片機C語言精確延時值的計算
    關於單片機C語言的精確延時,網上很多都是大約給出延時值沒有準確那值是多少,也就沒有達到精確高的要求,而51hei給出的本函數克服了以上缺點,能夠精確計數出要延時值且精確達到1us,本舉例所用CPU為STC12C5412系列12倍速的單片機,只要修改一下參數值其它系例單片機也通用
  • 51單片機教程之基礎編(基於C語言)
    很多初學者有很多的疑惑,我究竟是先學C語言,還是彙編語言?其實我告訴你,本人認為,先學C語言!為什麼呢?C語言是目前使用最廣泛的中級語言,就連現在的windows7也是C語言編寫的,C語言易讀性好,無需對單片機內部結構十分熟悉即會編程,可移植性高,便於維護。C語言只有32個關鍵字,9種控制語句,而且編譯器提供了很多函數庫,使用十分方便。
  • PIC單片機C語言編程教程(1)
    > 語言來開發單片機系統軟體最大的好處是編寫代碼效率高、軟體調試直觀、維護升級方便、代碼的重複利用率高、便於跨平臺的代碼移植等等,因此 C 語言編程在單片機系統設計中已得到越來越廣泛的運用。本書圍繞中檔系列 PIC 單片機來展開討論,Microchip 公司自己沒有針對中低檔系列 PIC單片機的 C 語言編譯器,但很多專業的第三方公司有眾多支持 PIC 單片機的 C 語言編譯器提供,常見的有 Hitech、CCS、IAR、Bytecraft 等公司。
  • C語言程序設計教程
    導讀:C語言是一門通用的計算機程式語言,應用非常得廣泛,在計算機、單片機以及工業上都有的莫大的貢獻,今天我們來學習如何進行C語言程序設計。
  • 單片機提高C語言代碼效率的方法
    單片機的ROM和RAM的空間都很有限,當您編程時遇到單片機的ROM和RAM的不夠用的時候,或者您的程序要求較高的執行速度時,我們就得面對解決代碼效率問題了。如何提高代碼效率?現筆者以一個LED閃爍的程序為例與您探討。
  • c語言入門教程
    Brian Kernighan 和 Dennis Ritchie 出版了一本書,名叫《The C Programming Language》。這本書被 C語言開發者們稱為"K&R",很多年來被當作 C語言的非正式的標準說明。人們稱這個版本的 C語言為"K&R C"。
  • 單片機c語言教程:C51數據類型
    每寫一個程序,總離不開數據的應用,在學習 c51 語言的過程中掌握理解數據類型也是 很關鍵的。先看表 3-1,表中列出了 KEIL uVision2 單片機c語言編譯器所支持的數據類型。在標準C語言中基本的數據類型為 char,int,short,long,float 和 double,而在c51編譯器中int 和 short 相同,float 和 double 相同,這裡就不列出說明了。
  • 單片機C語言教程-基礎語句
    C語言入門之基礎語句  從程序流程的角度來看,程序可以分為三種基本結構,即順序結構、分支結構、循環結構。這三種基本結構可以組成所有的各種複雜程序。c語言提供了多種語句來實現這些程序結構。
  • 51單片機C語言教程(四) 數據類型
    先來簡單說說C語言的標識符和關鍵字。標識符是用來標識源程序中某個對象的名字的,這些對象可以是語句、數據類型、函數、變量、數組等等。C語言是大小字敏感的一種高級語言,如果我們要定義一個定時器1,可以寫做"Timer1",如果程序中有"TIMER1",那麼這兩個是完全不同定義的標識符。
  • 【愛找茬】都是C語言,單片機C語言和普通的C語言究竟有什麼差異呢?
    許多小夥伴在學完C語言後想入門單片機,但學著學著發現明明都是C語言,為什麼單片機C語言和我當初學的C語言有差異呢?今天小編就來梳理我們平時所學的C語言與單片機C語言的有什麼樣的不同。
  • 單片機C語言模塊化編程方法
    下面詳細說一下這個關鍵字的作用,在C 語言中,關鍵字static 有三個明顯的作用:1.在函數體,一個被聲明為靜態的變量在這一函數被調用過程中維持其值不變。2.在模塊內(但在函數體外),一個被聲明為靜態的變量可以被模塊內所用函數訪問,但不能被模塊外其它函數訪問。它是一個本地的全局變量。3.在模塊內,一個被聲明為靜態的函數只可被這一模塊內的其它函數調用。