00_51入门知识累计_C51简介
導語
下面是點亮51單片機使用C語言閃爍LED燈的的一段代碼,也是我們邁入C51的第一步。我們將從頭開始,一步步講解下面的程序。
#include <reg52.h>#define uchar unsigned char #define uint unsigned intsbit LED = P1^0;void main() {LED = 0;while(1){LED = 0;delay(1000);LED = 1;delay(1000);} }void delay(uchar ms) {uint x = 0, y = 0;for(x=xms;x>=0;x--)for(y=110;y>=0;y--); }.C to .Hex
在從編寫的上述文本程序到實際燒錄到單片機的Hex二進制機器語言,keil 這個大家伙幫我們做了很多的東西。
單片機可以看作是一個功能完全的計算機,同計算機一樣,單片機只能識別機器語言。也就是用二進制代碼表達指令,但更確切一點來說,機器語言是由高低電位構成的,指定高電位為1,低電位為0,而我們對電路進行一定的設計后,電路中高低電位的輸入輸出正好與2進制狀態相符,所以我們也就看到了 1、0的那種表現形式。
同時,為了簡化二進制的表現形式,我們使用16進制來表示,即Hex文件。
但編寫機器語言太過繁瑣,人們開始用助記符代替機器指令的操作碼,用地址符號或標號代替指令或操作數的地址。這就是匯編語言,但低級,不具有移植性,能直接訪問計算機硬件,效率高,占用資源少,學習入門較為困難,切移植性差。
C語言是一種高級編程語言,與低級語言相對。它是以人類的日常語言為基礎的一種編程語言,使用一般人易于接受的文字來表示,有較高的可讀性,以方便對電腦認知較淺的人亦可以大概明白其內容。
所編寫的C語言通過Keil進行預處理,編譯,鏈接等就生成了Hex文件,我們將Hex文件燒錄到單片機中,復位就運行起來了。
預處理
預處理以# 開頭,在從.C 到 .hex 之前,擴展C語言程序設計的環境。
#include <reg52.h>的作用將 reg52.h文件復制到編譯的源文件中,使用<>或" "包含文件名。
#define uchar unsigned char 的作用是將unsigned char替換為uchar 。
也常用#define 定義一些函數宏、常量等。如#define PI 3.14、#define ABS(x) (x)<0?-(x):(x)
還有更多的預處理方式,暫無必要,勿增新知。
變量
變量格式
[存儲種類] 數據類型 [存儲器類型] 變量名表 賦值;其中存儲種類和存儲器類型在初學時不必了解,編譯器會自動的賦予默認值。
變量名是C51區分不同變量,為不同變量取的名稱。在C51中規定變量名可以由字母、數字和下劃線三種字符組成,且第一個字母必須為字母或下劃線。
數據類型用于向單片機申請內存大小,也決定了變量的數值范圍。在單片機的內部是以字節為操作,一個字節八個位,即一個字節所表示的數據范圍在 0000 0000 到 1111 1111;在此,二進制沒有符號位,于是人為的使用最高位表示符號位,1為負,0為1;即表示范圍為 1111 1111 到 0111 1111,即十進制的-128到127。但大多數時候,單片機很少用到賦值,因此我們在數據類型前加上修飾符unsigned 來去掉符號位。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳!在這里插入圖片描述
在C語言中,無法直接去操作變量中的單獨的某一位,但C51中添加了bit 位,是 c51 編譯器的一種擴充數據類型,利用它可定義一個位標量,它的值是一個二進制位,不是 0 就是 1,sbit 同樣是 單片機c語言 中的一種擴充數據類型,利用它能訪問芯片內部的 RAM 中的可尋址位或特殊功能寄存器中的可尋址位。
函數
void main() 和 void delay(uchar ms) 都是函數;
返回類型 函數名(數據類型 形參名稱...){功能代碼; }函數是指一段可以直接被另一段程序或代碼引用的程序或代碼。也叫做子程序、方法。
void 表示沒有返回值,大多數的情況下,我們將使用void修飾的函數,也可以使用有返回值的方式返回uint等;
其中main()是每一個函數中最重要的,單片機開機復位后將運行main()函數,當他執行完后,程序將會從頭開始,我們不希望這樣,因此我們添加了
while(1){}這時一行循環語句,并且是一個死循環,即會一直循環{ }內的程序。
delay()是一個延時函數,我們向括號中填寫ms,程序便會贊同多少ms,他用于實現的延時的子功能;
運算符
LED = 0;給led賦值0,即將右邊的值填入左邊,填入的值不應超過數據類型的表示范圍。
y--運行過后,y將減少1;
y>=0布爾運算,只有兩個值,0 或 1,大于0為真1,反之為0。
的值填入左邊,填入的值不應超過數據類型的表示范圍。
y--運行過后,y將減少1;
y>=0布爾運算,只有兩個值,0 或 1,大于0為真1,反之為0。
選擇高品質的元器件是電路良好運行的基本保證,找元器件現貨上唯樣商城,原廠授權 正品保障,品類齊全 一站采購。
總結
以上是生活随笔為你收集整理的00_51入门知识累计_C51简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “协作3.0”不是玩概念,科天云让企业应
- 下一篇: 金碟软件资产负债表中JC,JD,DY,D