久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

51單片機教程之基礎編(基于C語言)

作者:陳濱   來源:本站原創   點擊數:  更新時間:2014年01月19日   【字體:

 大家好,我是陳濱,本人是去年9月份開始學單片機,到現在一年多了,現在本人基本掌握了單片機編程,開始深入學習匯編語言了。很多初學者有很多的疑惑,我究竟是先學C語言,還是匯編語言?其實我告訴你,本人認為,先學C語言!為什么呢?C語言是目前使用最廣泛的中級語言,就連現在的windows7也是C語言編寫的,C語言易讀性好,無需對單片機內部結構十分熟悉即會編程,可移植性高,便于維護。C語言只有32個關鍵字,9種控制語句,而且編譯器提供了很多函數庫,使用十分方便。而匯編語言達100多條指令,每條指令對應一個機器碼,跟單片機內部結構息息相關,而且不提供庫函數,每種東西都要自己寫。匯編語言最致命的地方是它不同硬件幾乎不可移植,維護麻煩。但是讀者又有疑問了,既然C語言這么多優點,干嘛還要學匯編語言?雖然C語言易諸多優點,但是它也是有缺點的,就是代碼執行效率不高,占用CPU資源高,這個就是中高級語言的缺點,目前最流行的安卓系統就是用高級語言編寫的,據說是Java,具體本人沒去研究,大家都知道安卓CPU主頻沒有800M以上想流暢運行是不太可能的就好,哈哈...匯編語言是在機器語言的基礎上發展起來的,每一條代碼對應一個機器碼,所以執行效率很高,就連windows底層的東西都是匯編寫的,C語言難以達到要求。當然隨著編譯器的改進,C語言執行效率已經接近匯編,但是想真正成為單片機高手的話,那么我告訴你,精通匯編是必須的!因為匯編語言是直接操作單片機內部硬件的,如果你精通匯編,那么意味著你對單片機十分熟悉,就能編出十分高效的程序。所以先學C語言能快速入門,再學匯編就能精通單片機。

OK!說了這么多,你會問:學習單片機能有什么錢途?嗯!學東西無非就是想賺錢,現在說學東西是業余愛好的話只有有錢人在說,誰敢說學手藝不是為了吃飯?你?你?還是你?呵呵...目前這個世界上單片機無所不在,洗衣機,電視機,電冰箱等等...都有單片機的身影,單片機就是單片微型計算機的簡稱,最早由英特爾公司發明,沒錯!就是大名鼎鼎的英特爾!哎!又一中國人的遺憾!電子技術什么東西才是我們中國的專利啊!說到計算機,咦?名字很熟悉?這個計算機可不是我們用的計算器啊,而是指電腦!什么?你說單片機是一個電腦?對!沒錯,單片機就是一個微型電腦。一個電腦的基本組成是這樣的:輸入系統(鍵盤)、輸出系統(顯示器)、計算系統(主機),你看你家的電腦是不是這樣?其實主機還包含了運算系統(CPU)、程序存儲器(硬盤)、數據存儲器(內存),拆開你的電腦主機,是不是也是這樣?我們用的單片機其實除了輸入輸出系統,已經包含了其它東西,所以就微型計算機,英文叫MCU,又叫微處理器。早期的單片機是英特爾的4004單片機,是4位的,由于功能太弱了,早已經淘汰,本人就不羅嗦了。現在我們用的單片機就51系列單片機,是英特爾最經典最成功的發明,由于51單片機價格便宜,功能齊全,到現在10幾年歷史,依然火爆,估計未來10年,51單片機不會淘汰,所以51單片機對初學者很合適。目前一個單片機工程師工資都在5000左右,視你的能力吧,上萬的都有。單片機應用小到手機,大到火箭,都需要用到。只不過功能強弱不同,價格也不同,從幾塊錢到100多塊錢。你說火箭的單片機要多少錢?我想最多100多塊!什么?是不是真的?我想是!既然單片機這么厲害,為什么這么便宜?主要是現在技術成熟,產量大,目前世界上很多公司都在生產51核心的單片機,國內的話就有STC公司。

好了,那么學單片機該如何入手呢?俗話說,小錢不出,大錢不入,當然是要先花點錢買設備了,放心,不貴,200多塊左右,不要告訴我你連200多塊的錢都沒有?現在淘寶上有很多開發板,而且還送教程,價格都在200塊左右。開發板就是用來學習單片機的,雖然現在有很多仿真軟件,但是跟實際應用還是有區別的。本人就有這樣的經歷,自己寫了個程序,在仿真軟件始終無法正常運行,但是到了實際電路運行很正常,所以開發板不能省。學習單片機最主要是多學習多實踐,多在論壇上逛,遇到問題要自己研究,實在不行可以網上發帖問問。買了開發板,首先你得先學習C語言,C語言最重要就是關鍵字,語法。目前最常用的51編譯器就是KEIL了,這個大家可以去網下載,現在都是破解版的了。單片機大家可以買ATMEL的單片機,這個是最常用的了,就買AT89S52這個吧,注意S的支持ISP編程,而C的不支持。什么是ISP呢?ISP就是在線編程的意思,就是無需拔下芯片就能寫程序,這個對我們學習是很方便的。

現在網上很多教程有一些都是誤人子弟,有不少錯誤,本人總結了很多經驗,因為在此之前本人對單片機也是小白一個,所以很會理解初學者的心里。下載了KEIL,買了單片機開發板和單片機,下面我們就來開始單片機學習之旅吧,先來看出自單片機教程網www.zg4o1577.cn第4課的一個閃爍燈的小程序(他文章中主要從匯編的角度詳解了閃爍燈的工作原理,我對此進行了C語言方面的詳解算是對第4課的補全.):
#include <reg52.h>   //頭文件
#define uchar unsigned char  //宏定義
sbit LED=P1^0;   //定義引腳
void delay()    //延時函數
{
 uchar a,b;
for(a=200;a>0;a--)
for(b=200;b>0;b--);
}
void main()  //主函數
{
 while(1)
 {
  LED=0;  //點亮LED
 delay();  //延時
 LED=1; //熄滅LED
 delay(); //延時
 }
}

   在這里我先說明一個問題,關于KEIL的使用網上有很多教程,由于時間關系這里我就不說了。上面是一個LED閃爍的小程序,初學者往往連這個也看不懂,好像在看天書,別急!本人剛開始也是!我一個個說明。第一個,就是頭文件,什么是頭文件呢?就是編譯器里面的一個庫,里面定義了單片機的一些寄存器,寫了這個頭文件,編譯器就知道你使用的是52單片機,以下的操作它就認識了,否則編譯會報錯!第二個,宏定義,就是自己定義的新名字,上面的操作就是告訴編譯器,以后遇到uchar就是unsigned char了,便于書寫,節省時間。第三個,就是定義單片機的引腳,如果我的LED接在P1.0這個引腳上,就這樣定義了,以此類推。好了,開始說函數,有人說編程要大學生才可以,NO!NO!NO!就拿我來說,我才初中畢業呢!不過話說回來,你的英語必須有30分以上,代數在60分以上才可以,否則吃力!呵呵....因為C語言運用到了計算,單詞等初中知識。這個是一個延時函數,因為單片機運行速度很快,如果不延時,LED閃爍就十分快,我們是分辨不出來的。那么這個是怎么延時的呢?首先我們定義了兩個變量a、b,然后a先賦值200,for這個是32個關鍵字其中一個,是一個循環語句,首先執行a=200,接著判斷a是否大于0,如果不是,則執行a--,就是a-1,直到a=0,這個語句執行了200次,同樣下面的語句也是,這兩個語句這樣寫起到了嵌套作用,就是上面執行完了執行下面,這樣就執行了200*200=40000次。為什么要這樣呢?就是為了延時!其實這個程序就是讓CPU在那里執行空操作浪費時間來達到延時目的。下面的函數叫主函數,C語言每一個程序都有且只有一個主函數main,程序都是從主函數開始執行,上面的延時函數叫子函數,也叫子程序,主函數可以調用子函數,反過來子函數是不可以調用主函數的。前面大家都注意到有一個void ,void在英文的意思是空,意思這個函數不帶返回值,至于什么是返回值,以后再說。在函數的后面還有一個小括號,這個里面也是有一個void的,只是省略了,那這個是什么作用呢?這個就是函數的參數,什么參數?也是以后再說!程序從主函數開始,進入了while(1)這個函數體,每個函數體都要有一個大括號來包括,while的意思是如果括號里面的條件為真即為1,就執行里面的程序,否則退出,所以也是一個循環函數,把里面寫1就是這個while永遠為真,永遠執行這個函數,這樣做的目的就 是讓程序不斷執行下去,這樣LED就不斷閃爍了。到了LED=0時,意思是把單片機P1.0這個引腳置為低電平,LED正極是接電源的,負極接P1.0,這樣LED就亮了。接著,延時,到這里單片機執行延時函數,緊接著LED=1,意思P1.0置為高電平,這個時候LED就滅了,然后又是延時,再點亮,周而復始,LED就閃爍了。閃爍的頻率由延時函數決定,當然你可以再寫個for,這個LED閃爍就更慢了。

  看了這個小程序,你有什么感覺?實際上設備上的程序比這個可是復雜多了,要學的東西太多了。好了,先到這里,我會慢慢教大家繼續深入單片機編程,大家有什么要交流可以加本人QQ.只要我有時間,絕對做出回答。

 

關閉窗口

相關文章

主站蜘蛛池模板: 国产一区二区三区在线看 | 91精品国产综合久久久久久 | 国产成人精品一区二区三区视频 | 日韩av成人 | 一区天堂 | 国产精品久久久久久久免费观看 | 亚洲欧美综合精品另类天天更新 | 国产亚洲一区二区三区 | 日韩电影免费在线观看中文字幕 | 4h影视| 四虎影院美女 | 在线观看av网站永久 | 九九av| 国产精品久久久久婷婷二区次 | 国产福利91精品一区二区三区 | 国产色| 在线观看免费观看在线91 | 一区二区三区视频免费观看 | 国产乡下妇女做爰 | 成人午夜激情 | 少妇一区二区三区 | 91精品久久久久 | 国产精品美女www爽爽爽 | 亚洲 中文 欧美 日韩 在线观看 | 亚洲精品久久久一区二区三区 | 自拍偷拍亚洲一区 | 最新中文字幕在线 | 国产成人精品免高潮在线观看 | 天天干天天爱天天 | 欧美伊人久久久久久久久影院 | 成av在线 | 国产成人叼嘿视频在线观看 | 色综合久久天天综合网 | 亚洲成人精品一区二区 | 久久国产欧美日韩精品 | 91影院| 国产伦精品一区二区 | 911精品美国片911久久久 | 国产福利91精品一区二区三区 | 久久天天躁狠狠躁夜夜躁2014 | 91麻豆精品国产91久久久更新资源速度超快 |