小白系列之51单片机的入门速成法
51單片機(jī)的入門速成法
01-經(jīng)典51內(nèi)核資源全覽濃縮圖
02-重要外設(shè)特殊功能寄存器概覽
03-程序開(kāi)發(fā)流程與設(shè)計(jì)要點(diǎn)
04-三大外設(shè)的開(kāi)發(fā)與可重用代碼
05-應(yīng)用程序設(shè)計(jì)入門一例通
01-經(jīng)典51內(nèi)核資源全覽濃縮圖
<1> 四組8位并行I/O端口:
P0端口:PC門,集電極開(kāi)路輸出,必須接上拉電阻才能輸出高電平。
P1端口:無(wú)特殊之處。
P2端口:訪問(wèn)外部存儲(chǔ)器時(shí),作高8位地址用。
P3端口:功能復(fù)用端口,詳情看表。
<2> 三大外設(shè):外部中斷、定時(shí)/計(jì)數(shù)、串行通信
<3> 五個(gè)中斷源:2個(gè)外部中斷、2個(gè)定時(shí)/計(jì)數(shù)中斷、1個(gè)串行通信中斷
注意:要記住中斷號(hào)與中斷源的對(duì)應(yīng)關(guān)系…編程時(shí)會(huì)用到
<4> 三大特殊功能寄存器:TCON、SCON、TMOD
不管是復(fù)雜的處理器還是簡(jiǎn)單的單片機(jī),其功能大多通過(guò)外設(shè)來(lái)體現(xiàn)出來(lái),而外設(shè)與內(nèi)核的交互則通過(guò)寄存器和中斷系統(tǒng)來(lái)實(shí)現(xiàn)。因此底層的單片機(jī)程序開(kāi)發(fā)實(shí)際上大部分都在編程操作各種特殊功能寄存器和處理中斷的響應(yīng)。
02-重要外設(shè)特殊功能寄存器概覽
1、經(jīng)典型51單片機(jī)的重要外設(shè)
不管簡(jiǎn)單還是復(fù)雜的微處理器,其基本架構(gòu)都是“內(nèi)核+外設(shè)”,而控制外設(shè)的重要途徑就是特殊功能寄存器。底層的程序開(kāi)發(fā),絕大部分都在跟各種特殊功能寄存器打交道。
51單片機(jī)的外設(shè)不多,可以分成三大塊:中斷系統(tǒng)、定時(shí)/計(jì)數(shù)器和串行接口。
要想把這些外設(shè)應(yīng)用好,首先得把控制這些外設(shè)的特殊功能寄存器弄明白:
IE寄存器:中斷控制寄存器。
IP寄存器:中斷優(yōu)先級(jí)寄存器。
TCON寄存器:中斷狀態(tài)標(biāo)志寄存器。
TMOD寄存器:定時(shí)/技術(shù)模式控制寄存器。
THx和TLx寄存器:定時(shí)/計(jì)數(shù)器的技術(shù)初值寄存器。
SCON寄存器:串口控制寄存器。
SBUF寄存器:串行接口收據(jù)發(fā)送和接收緩沖器。
2、重要的寄存器歸納
<1> IE寄存器與IP寄存器(IP用的不多)
<2> TCON寄存器
<3> TMOD寄存器
<4> SCON寄存器
03-程序開(kāi)發(fā)流程與設(shè)計(jì)要點(diǎn)
在程序設(shè)計(jì)過(guò)程中,需要注意2點(diǎn):
<1> 要引入相關(guān)芯片的頭文件。
<2> 中斷服務(wù)函數(shù)的特殊寫法。
開(kāi)發(fā)流程。
<1> 建立新工程或者打開(kāi)已有工程:Project菜單項(xiàng)。
<2> 如果是新建工程,單擊“New uVision Project”菜單項(xiàng),輸入工程名字。
<3> 為新工程選擇芯片類型。
<4> 給新建的工程中添加代碼文件,如果沒(méi)有代碼文件可以新建一個(gè)空文件。
<5> 配置工程的選項(xiàng)參數(shù),主要的設(shè)置輸出HEX文件。
<6> 編寫代碼,根據(jù)不同的芯片引入對(duì)于的頭文件。
<7> 編譯代碼,有時(shí)候允許有警告存在。
<8> 打開(kāi)ISP下載軟件,導(dǎo)入HEX代碼文件。
<9> 將程序代碼燒寫到芯片中,在斷電狀態(tài)下單擊“下載”按鈕,然后上電,程序就自動(dòng)下載到芯片了。
3、程序設(shè)計(jì)要點(diǎn)
<1> 引入頭文件
在單片機(jī)的程序設(shè)計(jì)中,很多時(shí)候需要操作特殊功能寄存器,而這些寄存器實(shí)際上就是芯片中的一個(gè)內(nèi)存地址。記住這些地址很難,且代碼編寫復(fù)雜。為方便記憶和使用,給每一個(gè)特殊功能寄存器都起了一個(gè)名字。在程序設(shè)計(jì)中想直接使用這些名字,就需要引入對(duì)應(yīng)芯片頭文件,如51單片機(jī),需引入“reg52.h”文件。
特殊功能寄存器P0的地址為80H,引入這個(gè)頭文件之后,就可使用P0這個(gè)名字
P0 = 0x02;
<2> 中斷服務(wù)函數(shù)的格式
在51單片機(jī)中有5個(gè)中斷源,每個(gè)中斷源都有固定的入口地址(也就是中斷向量)和中斷號(hào)。程序設(shè)計(jì)的過(guò)程中,不要記住中斷向量地址,但需知每個(gè)中斷源對(duì)應(yīng)的中斷號(hào)
一般情況下,中斷的處理函數(shù)有兩個(gè),其一為中斷初始化函數(shù),其二為中斷服務(wù)函數(shù)。初始化函數(shù)就是一個(gè)普通的函數(shù),而中斷服務(wù)函數(shù)卻有特殊的格式要求:
A. 中斷函數(shù)沒(méi)有返回值,也不能帶參數(shù)。
B. 函數(shù)名后面要跟一個(gè)關(guān)鍵字interrupt,說(shuō)明這是一個(gè)中斷服務(wù)函數(shù)。
C. 在關(guān)鍵字interrupt后面要跟上中斷號(hào),說(shuō)明這個(gè)中斷服務(wù)函數(shù)是為那個(gè)中斷服務(wù)的。
中斷服務(wù)函數(shù)的格式為:
void函數(shù)名()interrupt中斷號(hào)
{----函數(shù)體----}
如定時(shí)器0的中斷服務(wù)函數(shù),C語(yǔ)言可這樣寫:
04-三大外設(shè)的開(kāi)發(fā)與可重用代碼
1、外部中斷模塊
51單片機(jī)有INT0和INT1兩個(gè)中斷模塊,外部的觸發(fā)信號(hào)可以是電平,也可以是邊沿,由寄存器TCON的IT0和IT1位來(lái)決定。
2、定時(shí)/計(jì)數(shù)模塊
51單片機(jī)有T0和T1兩個(gè)定時(shí)器,對(duì)內(nèi)部可以定時(shí),對(duì)外部可以計(jì)數(shù)。初始化時(shí),需要確定該模塊是定時(shí)功能還是計(jì)數(shù)功能,工作模式是什么,最大計(jì)數(shù)值是多少。
3、串行接口模塊
51單片機(jī)的串行接口中,產(chǎn)生波特率需要占用定時(shí)器T1,發(fā)送數(shù)據(jù)時(shí),將內(nèi)容放到SBUF中,數(shù)據(jù)發(fā)送完畢,TI會(huì)置1。當(dāng)完整接收到一個(gè)數(shù)據(jù)后,RI會(huì)置1,這時(shí)從SBUF中將內(nèi)容讀出即可。不管是TI還是RI標(biāo)志位,都需要人工清0。一般情況下,發(fā)送數(shù)據(jù)采用查詢方式,接收數(shù)據(jù)采用中斷方式。
05-應(yīng)用程序設(shè)計(jì)入門一例通
1、題目需求
2、基本思路
我的設(shè)計(jì)模式是自上而下,從整體到局部。所以,在編寫代碼之前,我的腦子里面基本上已經(jīng)有了比較完整的輪廓,包括應(yīng)該定義那些變量,應(yīng)該安排那些函數(shù),程序框架大致如何。
從本題的需求分析中,我們可以獲得以下的信息:
<1>秒閃功能,需要使用定時(shí)器0,得安排一個(gè)初始化函數(shù)Init_Timer0()和一個(gè)中斷服務(wù)函數(shù)SeviceTimer0()。
<2> 定時(shí)器0使用16位模式,在12MHz晶振情況下,最大的定時(shí)值也只有65.535ms,因此要定時(shí)500ms不能夠直接實(shí)現(xiàn),那么就需要多次定時(shí)進(jìn)行累加。把定時(shí)器0的間隔定時(shí)確定為50ms比較方便,累計(jì)10次就是500ms了,那么就需要一個(gè)定時(shí)累計(jì)變量t_count。
<3> 按鍵功能,首先要定義一個(gè)按鍵掃描函數(shù)ScanKeys(),在掃描過(guò)程中需要做去抖動(dòng)處理,那么就要安排一個(gè)簡(jiǎn)易的延時(shí)函數(shù)Delay()。
<4> 再檢查思考一下,還有什么嗎?沒(méi)有了。
3、程序框架
嚴(yán)格來(lái)說(shuō),在開(kāi)始編寫代碼之前,應(yīng)該將程序的流程圖和數(shù)據(jù)定義表做出來(lái)。不過(guò),對(duì)于簡(jiǎn)單的功能,可以通過(guò)編寫代碼搭建整體框架的方式來(lái)體現(xiàn)。這就跟建設(shè)框架結(jié)構(gòu)的房子一樣,先把毛坯建好,再去做個(gè)單元進(jìn)行裝修。我比較喜歡這做。本題在基本思路分析指導(dǎo)下,可以搭建出程序框架結(jié)構(gòu)。
4、逐個(gè)填充
<1> 定時(shí)器初始化函數(shù):這個(gè)代碼是可以重用的,直接拷貝過(guò)來(lái)就行了。
<2> 定時(shí)器中斷服務(wù)函數(shù)。
<3> 按鍵掃描函數(shù)。
就這樣,一個(gè)簡(jiǎn)單的51單片機(jī)應(yīng)用程序開(kāi)發(fā)就完成了。
總結(jié)
以上是生活随笔為你收集整理的小白系列之51单片机的入门速成法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 淮安房价备案价查询(淮安房价备案)
- 下一篇: 蓝桥杯基础模块1:LED跑马灯