日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

小白系列之51单片机的入门速成法

發布時間:2023/12/2 编程问答 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小白系列之51单片机的入门速成法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

51單片機的入門速成法
01-經典51內核資源全覽濃縮圖
02-重要外設特殊功能寄存器概覽
03-程序開發流程與設計要點
04-三大外設的開發與可重用代碼
05-應用程序設計入門一例通

01-經典51內核資源全覽濃縮圖

<1> 四組8位并行I/O端口:
P0端口:PC門,集電極開路輸出,必須接上拉電阻才能輸出高電平。
P1端口:無特殊之處。
P2端口:訪問外部存儲器時,作高8位地址用。
P3端口:功能復用端口,詳情看表。
<2> 三大外設:外部中斷、定時/計數、串行通信
<3> 五個中斷源:2個外部中斷、2個定時/計數中斷、1個串行通信中斷
注意:要記住中斷號與中斷源的對應關系…編程時會用到
<4> 三大特殊功能寄存器:TCON、SCON、TMOD
不管是復雜的處理器還是簡單的單片機,其功能大多通過外設來體現出來,而外設與內核的交互則通過寄存器和中斷系統來實現。因此底層的單片機程序開發實際上大部分都在編程操作各種特殊功能寄存器和處理中斷的響應。

02-重要外設特殊功能寄存器概覽
1、經典型51單片機的重要外設
不管簡單還是復雜的微處理器,其基本架構都是“內核+外設”,而控制外設的重要途徑就是特殊功能寄存器。底層的程序開發,絕大部分都在跟各種特殊功能寄存器打交道。
51單片機的外設不多,可以分成三大塊:中斷系統、定時/計數器和串行接口。
要想把這些外設應用好,首先得把控制這些外設的特殊功能寄存器弄明白:
IE寄存器:中斷控制寄存器。
IP寄存器:中斷優先級寄存器。
TCON寄存器:中斷狀態標志寄存器。
TMOD寄存器:定時/技術模式控制寄存器。
THx和TLx寄存器:定時/計數器的技術初值寄存器。
SCON寄存器:串口控制寄存器。
SBUF寄存器:串行接口收據發送和接收緩沖器。
2、重要的寄存器歸納
<1> IE寄存器與IP寄存器(IP用的不多)

<2> TCON寄存器

<3> TMOD寄存器

<4> SCON寄存器

03-程序開發流程與設計要點
在程序設計過程中,需要注意2點:
<1> 要引入相關芯片的頭文件。
<2> 中斷服務函數的特殊寫法。
開發流程。
<1> 建立新工程或者打開已有工程:Project菜單項。

<2> 如果是新建工程,單擊“New uVision Project”菜單項,輸入工程名字。

<3> 為新工程選擇芯片類型。

<4> 給新建的工程中添加代碼文件,如果沒有代碼文件可以新建一個空文件。

<5> 配置工程的選項參數,主要的設置輸出HEX文件。

<6> 編寫代碼,根據不同的芯片引入對于的頭文件。

<7> 編譯代碼,有時候允許有警告存在。

<8> 打開ISP下載軟件,導入HEX代碼文件。

<9> 將程序代碼燒寫到芯片中,在斷電狀態下單擊“下載”按鈕,然后上電,程序就自動下載到芯片了。

3、程序設計要點
<1> 引入頭文件
在單片機的程序設計中,很多時候需要操作特殊功能寄存器,而這些寄存器實際上就是芯片中的一個內存地址。記住這些地址很難,且代碼編寫復雜。為方便記憶和使用,給每一個特殊功能寄存器都起了一個名字。在程序設計中想直接使用這些名字,就需要引入對應芯片頭文件,如51單片機,需引入“reg52.h”文件。

特殊功能寄存器P0的地址為80H,引入這個頭文件之后,就可使用P0這個名字
P0 = 0x02;
<2> 中斷服務函數的格式
在51單片機中有5個中斷源,每個中斷源都有固定的入口地址(也就是中斷向量)和中斷號。程序設計的過程中,不要記住中斷向量地址,但需知每個中斷源對應的中斷號
一般情況下,中斷的處理函數有兩個,其一為中斷初始化函數,其二為中斷服務函數。初始化函數就是一個普通的函數,而中斷服務函數卻有特殊的格式要求:
A. 中斷函數沒有返回值,也不能帶參數。
B. 函數名后面要跟一個關鍵字interrupt,說明這是一個中斷服務函數。
C. 在關鍵字interrupt后面要跟上中斷號,說明這個中斷服務函數是為那個中斷服務的。
中斷服務函數的格式為:
void函數名()interrupt中斷號
{----函數體----}
如定時器0的中斷服務函數,C語言可這樣寫:

04-三大外設的開發與可重用代碼
1、外部中斷模塊
51單片機有INT0和INT1兩個中斷模塊,外部的觸發信號可以是電平,也可以是邊沿,由寄存器TCON的IT0和IT1位來決定。

2、定時/計數模塊
51單片機有T0和T1兩個定時器,對內部可以定時,對外部可以計數。初始化時,需要確定該模塊是定時功能還是計數功能,工作模式是什么,最大計數值是多少。

3、串行接口模塊
51單片機的串行接口中,產生波特率需要占用定時器T1,發送數據時,將內容放到SBUF中,數據發送完畢,TI會置1。當完整接收到一個數據后,RI會置1,這時從SBUF中將內容讀出即可。不管是TI還是RI標志位,都需要人工清0。一般情況下,發送數據采用查詢方式,接收數據采用中斷方式。

05-應用程序設計入門一例通
1、題目需求

2、基本思路
我的設計模式是自上而下,從整體到局部。所以,在編寫代碼之前,我的腦子里面基本上已經有了比較完整的輪廓,包括應該定義那些變量,應該安排那些函數,程序框架大致如何。
從本題的需求分析中,我們可以獲得以下的信息:
<1>秒閃功能,需要使用定時器0,得安排一個初始化函數Init_Timer0()和一個中斷服務函數SeviceTimer0()。
<2> 定時器0使用16位模式,在12MHz晶振情況下,最大的定時值也只有65.535ms,因此要定時500ms不能夠直接實現,那么就需要多次定時進行累加。把定時器0的間隔定時確定為50ms比較方便,累計10次就是500ms了,那么就需要一個定時累計變量t_count。
<3> 按鍵功能,首先要定義一個按鍵掃描函數ScanKeys(),在掃描過程中需要做去抖動處理,那么就要安排一個簡易的延時函數Delay()。
<4> 再檢查思考一下,還有什么嗎?沒有了。
3、程序框架
嚴格來說,在開始編寫代碼之前,應該將程序的流程圖和數據定義表做出來。不過,對于簡單的功能,可以通過編寫代碼搭建整體框架的方式來體現。這就跟建設框架結構的房子一樣,先把毛坯建好,再去做個單元進行裝修。我比較喜歡這做。本題在基本思路分析指導下,可以搭建出程序框架結構。

4、逐個填充
<1> 定時器初始化函數:這個代碼是可以重用的,直接拷貝過來就行了。

<2> 定時器中斷服務函數。

<3> 按鍵掃描函數。

就這樣,一個簡單的51單片機應用程序開發就完成了。

總結

以上是生活随笔為你收集整理的小白系列之51单片机的入门速成法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。