51單片機知識大匯總看你了解有多少
基于51單片機的函數(shù)信號發(fā)生器利用單片機AT89C52 采用程序設(shè)計方法產(chǎn)生鋸齒波、三 角波、正弦波、方波四種波形,再通過D/A 轉(zhuǎn)換器DAC0832 將數(shù)字信號轉(zhuǎn)換成模擬信號,濾波放大,最終由示波器顯示出來,能產(chǎn)生 10Hz—10kHz 的波形。下面就對51單片機進行詳細論述。
本文引用地址:http://www.ex-cimer.com/article/226884.htm1.取指譯碼執(zhí)行模型:首先我們來看看單片機是如何工作的,我們拿電腦的主板來作為對比,我們買電腦時,總是追求處理器的主頻。處理器的工作原理是從存儲器上取出一條指令,然后對指令譯碼,譯碼完后執(zhí)行。然后取下一條指令,譯碼,執(zhí)行。它為什么能這么有序的工作?是因為它有一個工作時鐘,在這個工作時鐘的統(tǒng)一管理下,處理器有序的工作,這里的主頻就是工作時鐘的速度,當然,現(xiàn)在你可能也知道主頻越高,取指譯碼速度越快,性能越好。那么你可能會問,這跟51單片機有什么關(guān)系,OK,切入正題,單片機的工作也是這個原理,從存儲器上取指,譯碼,執(zhí)行。但是單片機的存儲器在哪?在單片機的內(nèi)部,對于電腦來說,是把處理器,內(nèi)存集中在一塊主板上。而現(xiàn)在你應該很明確,對于單片機它就相當于一塊電腦主板,把處理器,存儲器集中到一塊芯片內(nèi)部。從這個宏觀的角度看,所有的單片機是不是都是一個原理,服從于取指,譯碼,執(zhí)行的基本模型。OK,繼續(xù)……
2. 51單片機的外設(shè):我們在學習單片機時,所做的第一個實驗都是一樣的,點燈。也許你已經(jīng)學會了用單片機做出好看的花樣燈,或者用單片機驅(qū)動數(shù)碼管顯示出數(shù)字或字母?;蛘呖梢詸z測按鍵了。不錯,我們仔細想想這些是什么,無非,你就是控制那一排排引腳輸出高低電平,我們稱這些引腳叫I/O口,輸入輸出,按鍵是輸入,點燈是輸出。其實你以為你學了三樣東西,其實,你只學了一樣東西,I/O控制。所以這些內(nèi)容并不是單片機的內(nèi)容,我們稱之為單片機的外設(shè),現(xiàn)在你應該很明確了,所謂的LCD液晶,AD芯片什么的都是單片機的外設(shè)。但是我們?yōu)槭裁匆獙W習這些單片機的外設(shè)呢?還是為了熟悉單片機,你驅(qū)動的芯片多了,自然對編程模型就熟悉了。其實,我們用單片機就是在驅(qū)動外設(shè),然后你問那定時器,中斷,串口通信又是什么?對于中斷,現(xiàn)在單片機在做一件事,突然,我給個信號,現(xiàn)在出了一個意外,你趕快去做另一件事,做完另一件再回來,就是這樣。對于定時器,我舉個例子,現(xiàn)在對于一盞燈,我要他每天晚上六點打開,每天早上六點關(guān)閉,我們會怎么做?設(shè)定一個計時器,假設(shè)當前是晚上六點,現(xiàn)在我讓I/O口輸出高電平點燈,同時打開計時器,定12個小時,12個小時一到,給一個中斷,去把I/O口取反,關(guān)燈,是不是這樣控制的。所以中斷,定時器只是為了更好的讓單片機進行控制工作?,F(xiàn)在你應該很熟悉了,單片機就是一款自動控制的芯片。注意,是芯片,你做的工作就是如何編程來是這款芯片工作,是這款芯片在規(guī)定的程序下干活……怎么讓單片機干活呢?五個字,配置寄存器。3.配置寄存器:學習51單片機,不管你是剛剛開始學,還是學習有一段時間了,你應該很熟悉的字眼,寄存器。我想說單片機的基本思想就是五個字:配置寄存器。單片機怎么工作,比如,你讓I/O口輸出高電平,怎么輸出,在C語言里,你是通過P1=0xFF來實現(xiàn)的,為什么這么寫,你去看看頭文件reg51.h里的內(nèi)容,它定義了一個寄存器為P1,然后你向這個寄存器里寫入了8個1,于是輸出高電平。你是通過配置寄存器的內(nèi)容來控制I/O口的。我們再想一下,定時器你是怎么配置的,同樣的原理,你是通過配置TMOD,TCON,TH,TL等若干個寄存器完成的吧,然后給單片機定了一個時間,當然,你說這些是簡單的,還有復雜的呢?那我就再舉個例子吧,只要是寫單片機程序,你基本都是在配置寄存器,例如,STC系列的單片機帶了PWM功能,你如何讓單片機輸出一個符合你要求的PWM信號呢,你絕對是通過給某個寄存器寫入一個值,這個值控制頻率。再給一個寄存器寫入一個值,這個值控制占空比,然后通過哪個腳輸出,你又是通過一個寄存器來控制的。所以整個過程都是控制寄存器。那么你說,51是這樣的,其他的呢?stm32,高端的單片機,工作起來也是配置寄存器,STM32時鐘信號的選擇,是通過控制RCC,I/O的控制是通過控制GPIO,當然,它采用的方式是存儲器統(tǒng)一編址,就是你定義某個寄存器不再是51的sfr和sbit,而是用指針直接訪問地址的方式,比如訪問某個寄存器,從器件手冊上查找該寄存器的地址為0xXXXXXXXX,那么配置時使用*(long unsigned *)(0xXXXXXXXX)=0xFFFFFFFF的方式,本質(zhì)不變。這樣看來,那么msp430,PIC都是這樣的,只是他們的寄存器不同,配置方式不同,寫入的值不同而已。如果你真的懂了51單片機,真的懂了單片機配置寄存器的原理。你只要花兩個小時看懂芯片手冊,熟悉了開發(fā)環(huán)境,一天就能上手新的芯片……題外話就是,看arm等等芯片很高端,如果是裸機編程的話,那么跟也是配置寄存器,原理一樣,當然加了操作系統(tǒng)就不同了,操作系統(tǒng)的框架就是重要的了。
4.關(guān)于通信協(xié)議:對于任何單片機來說,最為難的問題就是通信協(xié)議了,對于這個問題,我不想說的太多,畢竟不是在做通信原理,只是要說明的一點就是,“有通信就有協(xié)議,這是什么意思?就是說單片機在驅(qū)動任何芯片的時候,必須要服從這款芯片的的時序,比如先使能這個芯片,然后給出寫信號或者讀信號,然后芯片在發(fā)出響應信號,再對芯片進行操作。為什么要這樣呢?首先,對于芯片來說,它有自己的操作方式,如果沒有固定的方式,那就亂套了,其實聯(lián)想到人身上也是這樣的,中國人和美國人交流時,如果沒有翻譯,就需要打手勢,這個手勢雙方都能懂,于是就能通信。芯片協(xié)議也是這樣的,單片機和芯片都能理解,于是他們都能工作。還有一點就是像有些芯片帶了SPI的協(xié)議,IIC的協(xié)議等等,如果它自帶了,那么他協(xié)議已經(jīng)設(shè)置好了,回歸到本質(zhì),使用這個協(xié)議又是配置寄存器了。比如51單片機的串口協(xié)議,你是通過配置寄存
51單片機相關(guān)文章:51單片機教程
c語言相關(guān)文章:c語言教程
單片機相關(guān)文章:單片機教程
單片機相關(guān)文章:單片機視頻教程
單片機相關(guān)文章:單片機工作原理
負離子發(fā)生器相關(guān)文章:負離子發(fā)生器原理
評論