書名: 基于Proteus的單片機應用技術(shù)作者名: 江世明編著本章字數(shù): 5054字更新時間: 2018-12-27 19:57:32
1.2 單片機結(jié)構(gòu)
1.2.1 單片機的基本結(jié)構(gòu)
單片機的基本結(jié)構(gòu)如圖1.1所示。

圖1.1 單片機的基本結(jié)構(gòu)框圖
下面介紹各組成部分的功能。
1.中央處理器
CPU又稱微處理器,是單片機的核心部件,由運算器和控制器組成,它決定了單片機的主要功能特性,在單片機中承擔運算和控制作用。
2.存儲器
存儲器用來存放程序和中斷結(jié)果,單片機的存儲器在物理上分片內(nèi)程序存儲器、片外程序存儲器、片內(nèi)數(shù)據(jù)存儲器、片外數(shù)據(jù)存儲器4個空間;在邏輯結(jié)構(gòu)上分成片內(nèi)外統(tǒng)一編址的程序存儲器、片內(nèi)數(shù)據(jù)存儲器及片外數(shù)據(jù)存儲器,如圖1.2所示。

圖1.2 單片機存儲器結(jié)構(gòu)
(1)程序存儲器
程序存儲器用來存放操作程序,共64KB空間,片內(nèi)和片外統(tǒng)一編址。當EA=1時,先訪問片內(nèi)程序存儲器,再訪問片外存儲器;當EA=0時,只訪問片外程序存儲器。系統(tǒng)復位時PC=0000H。值得注意的是,程序存儲器從0003H~0030H共40個單元專供中斷服務使用。
(2)數(shù)據(jù)存儲器
數(shù)據(jù)存儲器用來存放中間運算結(jié)果。數(shù)據(jù)存儲器由片內(nèi)和片外兩個獨立的存儲空間組成,如圖1.3所示。片內(nèi)又分成高、低兩個128字節(jié),其中高128字節(jié)離散分布了具有特別功能的寄存器。

圖1.3 單片機數(shù)據(jù)存儲器
(3)特殊功能寄存器
① 累加器Acc:Acc是一個具有特殊用途的8位寄存器,它既可作為通用的寄存器使用,也可作為累加器使用。作為累加器使用時用A表示,作為寄存器使用時用Acc表示。
② 程序狀態(tài)字(PSW):PSW是一個可位尋址的8位寄存器,如圖1.4所示,用來存放當前指令執(zhí)行后的狀態(tài)。單片機有許多指令的執(zhí)行會影響PSW的位狀態(tài)。
③ 寄存器B:寄存器B是一個8位的通用寄存器,主要用于乘/除法。乘法運算時,B是乘數(shù),乘法操作后,積的高8位存于B中;除法運算時,B是除數(shù),除法操作后,余數(shù)存于B中。

圖1.4 狀態(tài)寄存器
④ 數(shù)據(jù)指針DPTR:數(shù)據(jù)指針是一個16位地址寄存器,由高位字節(jié)DPH和低位字節(jié)DPL組成,這兩個字節(jié)也可單獨使用。使用DPTR可以訪問64KB外部數(shù)據(jù)存儲器的任一單元。
⑤ 定時器控制寄存器TCON:定時器控制寄存器TCON用來啟動定時/計數(shù)和設(shè)置外部中斷觸發(fā)方式,如圖1.5所示。定時控制寄存器可位尋址。

圖1.5 定時器控制寄存器
TR0,TR1:啟停定時/計數(shù)器。當TRx=1時,啟動定時/計數(shù);當TRx=0時,停止定時/計數(shù)。
TF0,TF1:定時/計數(shù)器中斷標志。當TFx=1時,表示定時/計數(shù)溢出,可用查詢或中斷來處理。
IE0,IE1:外中斷標志。當IEx=1時,表示外部有中斷發(fā)生(與ITx配合使用);當IEx=0時,表示外部無中斷請求。
⑥ 方式控制寄存器TMOD:方式控制寄存器TMOD是專門用來設(shè)置定時/計數(shù)器的工作方式的SFR寄存器,如圖1.6所示,CPU只能通過字節(jié)傳送類指令來設(shè)置TMOD中各位的狀態(tài)。
當GATE=0時,定時/計數(shù)器由定時控制寄存器中的TR0(或TR1)啟動。當GATE=1時,定時/計數(shù)器由外部中斷請求信號(或
)與TRx共同啟動。
當C/=0時,定時/計數(shù)器工作在定時工作方式;當C/
=1時,定時/計數(shù)器工作在計數(shù)方式。
M1M0=00時,定時/計數(shù)器工作在方式0;M1M0=01時,定時/計數(shù)器工作在方式1;

圖1.6 方式控制寄存器
M1M0=10時,定時/計數(shù)器工作在方式2;M1M0=11時,定時/計數(shù)器工作在方式3。
⑦ 堆棧指針(SP):堆棧指針是專門用來指示堆棧的起始位置的8位寄存器,系統(tǒng)復位時堆棧指針初始化地址為07H,用戶開辟堆棧時必須指明SP的初始值(棧底)。堆棧的存儲區(qū)域一般設(shè)置在RAM的30H~7FH之間。進棧用PUSHdirect指令,出棧用POPdirect指令。
⑧ 中斷控制寄存器IE:中斷允許寄存器是一個SFR,地址為A8H,可以位尋址。通過向IE寫入中斷控制字,實現(xiàn)CPU對中斷的開放和屏蔽,如圖1.7所示。

圖1.7 中斷控制寄存器
⑨ 中斷優(yōu)先級控制寄存器IP:中斷優(yōu)先級控制寄存器用來設(shè)置中斷的級別,單片機中斷系統(tǒng)有高級和低級兩種,當IP的對應中斷位為1時為高級中斷,當IP的對應中斷位為0時為低級中斷。

PX0:外部中斷0中斷優(yōu)先級控制位。
PT0:定時/計數(shù)器T0中斷優(yōu)先級控制位。
PX1:外部中斷1中斷優(yōu)先級控制位。
PT1:定時/計數(shù)器T1中斷優(yōu)先級控制位。
PS:串行口中斷優(yōu)先級控制位。
⑩ 串行控制寄存器SCON:SCON是一個可位尋址的專用寄存器,地址為98H,用于串行數(shù)據(jù)通信的控制,位功能如下:

SM0,SM1:串行口工作方式選擇位,工作方式的選擇如表1.5所示。
表1.5 串行口工作方式

SM2:多機通信控制位。在方式2或方式3下,如果SM2=1,當RB8=1時(RB8為收到的第9位數(shù)據(jù)),接收數(shù)據(jù)送SBUF,并產(chǎn)生中斷請求(RI=1),否則丟失8位數(shù)據(jù)。在方式2或方式3下,如果SM2=0,無論RB8=0或1,接收數(shù)據(jù)裝入SBUF,并產(chǎn)生中斷(RI=1)。在方式1下,如果SM2=1,則只有接收到有效的停止位時,才激活RI;如果SM2=0,接收一幀數(shù)據(jù),停止位進入RB8,數(shù)據(jù)進入SBUF,才激活RI。在方式0下,SM2只能為0。
REN:允許接收位,由軟件置位或清0。REN=1,允許接收;REN=0,禁止接收。
TB8:發(fā)送數(shù)據(jù)位。在方式2或方式3下,將要發(fā)送的第9位數(shù)據(jù)放在TB8中。可根據(jù)需要由軟件置位或復位。在多機通信中,TB8=0表示主機發(fā)送的是數(shù)據(jù),TB8=1表示主機發(fā)送的是地址。
RB8:接收數(shù)據(jù)位。方式0不使用這位。在方式1下,如果SM2=0,RB8的內(nèi)容是接收到的停止位。在方式2或方式3下,存放接收到的第9位數(shù)據(jù)。
TI:發(fā)送中斷標志位。在方式0下,發(fā)送完第8位數(shù)據(jù)時,TI=1;在其他方式下,開始發(fā)送停止位時,TI=1。在任何工作方式下,TI必須由軟件清0。
RI:接收中斷標志位。在方式0下,接收完第8位數(shù)據(jù)時,RI=1;在其他方式下,接收到停止位時,RI=1。在任何工作方式下,RI也必須由軟件清0。
3.I/O端口
單片機的I/O端口是連接單片機內(nèi)外的紐帶和橋梁,51系列的單片機有P0,P1,P2,P3共4個端口,每個端口有8位,其結(jié)構(gòu)如圖1.8所示。

圖1.8 單片機I/O端口基本結(jié)構(gòu)
①P0端口
P0端口是一個8位漏極開路的雙向I/O端口,當控制信號為低電平時,作為通用的I/O端口使用,當控制信號為高電平時,作為數(shù)據(jù)/地址總線。值得注意的是,由于P0口作為通用I/O口使用時,漏極處于開路狀態(tài),所以需接5~10kΩ的上拉電阻。
②P1端口
P1端口只能作為通用的I/O端口使用。
③P2端口
P2端口既可作為通用的I/O端口使用,也可作地址總線使用。P2端口作地址總線使用時,與P0口一起構(gòu)成16位地址信號。值得注意的是,當P2口作地址總線使用時,就不能作通用的I/O端口使用。
④P3端口
P3端口除了作通用的I/O端口使用外,還具有第二功能,如表1.6所示。P3端口的第二功能是通過設(shè)置相應的寄存器實現(xiàn)的。
表1.6 P3端口的第二功能表

⑤ 端口負載能力
P0端口可帶動8個LSTTL負載,P1~P3端口輸出可帶動4個LSTTL。P0~P3均為雙向I/O端口,作輸入時,先置“1”。單片機的端口負載能力是動態(tài)的,如AT89C2051單片機,共有15個輸入/輸出端口,端口的負載能力為80mA。從使用經(jīng)驗來看,單個端口輸入/輸出控制在5mA以下是比較安全的,并且盡量采用灌電流、端口輸入以低電平有效的電路結(jié)構(gòu)。通用I/O端口讀/寫控制:

⑥ 總線端口讀/寫控制
具有總線結(jié)構(gòu)的單片機應用系統(tǒng)如圖1.9所示。
讀外部單元:MOVX A,@DPTR
寫外部單元:MOVX @DPTR,A

圖1.9 總線結(jié)構(gòu)的單片機應用系統(tǒng)框架
1.2.2 單片機的功能單元
1.單片機定時/計數(shù)器
(1)定時/計數(shù)器結(jié)構(gòu)
定時/計數(shù)器是單片機的重要功能部件,51單片機內(nèi)帶有兩個16位定時/計數(shù)器(T0和T1),它們既可作定時器用,也可作計數(shù)器用。在檢測、控制及智能儀器等應用中,常用定時器作實時時鐘來實現(xiàn)定時檢測和定時控制,計數(shù)器用于外部脈沖計數(shù)。圖1.10是定時/計數(shù)器內(nèi)部結(jié)構(gòu)。

圖1.10 定時/計數(shù)器T0、T1的結(jié)構(gòu)
TMOD:方式控制寄存器,用于設(shè)置定時/計數(shù)器的工作方式。
TCON:定時器控制寄存器,用于啟動定時/計數(shù)器。
(2)定時/計數(shù)器工作原理
單片機內(nèi)部定時/計數(shù)器的工作原理可用圖1.11來說明。當C/=0時,為定時器功能,此時,C與A相連(計數(shù)脈沖為機器周期);當C/
=1時,為計數(shù)功能,此時,C與B相連(計數(shù)脈沖從P3.4或P3.5口輸入)。Tx、GATE、TRx、
共同決定計數(shù)器的開關(guān),單片機的計數(shù)器是一個16位的加計數(shù)器,每來一個脈沖,計數(shù)器的值加1,當加到FFFFH時,TFx置1,如果開放中斷,則向CPU申請中斷。

圖1.11 定時/計數(shù)器內(nèi)部結(jié)構(gòu)
(3)定時/計數(shù)器工作方式
定時/計數(shù)器有4種工作方式,由特殊功能寄存器TMOD中的M1、M0位決定,如表1.7所示。
表1.7 定時/計數(shù)器工作方式

(4)定時/計數(shù)器初始化
定時/計數(shù)器設(shè)置由工作方式控制寄存器(TMOD)、定時控制寄存器(TCON)及中斷允許寄存器(IE)共同完成。定時/計數(shù)器初始化應完成的過程是:
① 依據(jù)題目要求確定TMOD的值;
② 給TH1、TL1或TH0、TL0賦初值;
③ 根據(jù)題目要求確定是否開放中斷;
④ 啟動定時/計數(shù)器。
2.單片機中斷系統(tǒng)
(1)單片機中斷
程序在運行過程中,由于某種原因,CPU暫停當前的處理轉(zhuǎn)去執(zhí)行緊急事件,待緊急事件執(zhí)行完畢后再轉(zhuǎn)回執(zhí)行原程序,這就是單片機中斷。引起中斷的原因叫中斷源,中斷之后執(zhí)行的處理稱為中斷服務,對應的處理程序稱為中斷服務程序,原程序稱為主程序。單片機中斷功能的實現(xiàn)是通過設(shè)置IE、TCON、SCON、IP等特殊寄存器完成的。
(2)單片機中斷系統(tǒng)結(jié)構(gòu)
單片機具有6源5向量,中斷系統(tǒng)結(jié)構(gòu)如圖1.12所示。

圖1.12 單片機中斷系統(tǒng)結(jié)構(gòu)
、
、T0、T1、TI、RI為中斷源,TCON、IE、IP是與中斷相關(guān)的特殊功能寄存器。
(3)單片機中斷控制
中斷設(shè)置:單片機的中斷設(shè)置由TCON、SCON、IE、IP4個特殊功能寄存器確定。若開啟外部中斷0,采用脈沖觸發(fā)方式的中斷設(shè)置為:
SETB IT0 MOV IE,#81H
中斷處理過程:單片機在每一指令的S5P2期間,CPU采樣各中斷源,并設(shè)置相應的中斷標志位。CPU在下一個周期的S6狀態(tài)期間按優(yōu)先級順序查詢各中斷標志,若查詢到某個中斷標志為1,將在下一個機器周期的S1狀態(tài)期間按優(yōu)先級響應中斷。中斷處理過程分成3個階段,即中斷響應、中斷處理和中斷返回。
中斷入口地址:單片機響應中斷后,將按表1.8規(guī)定的地址轉(zhuǎn)入相應的中斷入口,因此在系統(tǒng)初始化時要明確相應入口應完成的工作。
表1.8 AT89C51單片機中斷入口地址

(4)中斷系統(tǒng)擴展
利用定時器擴展外部中斷:定時/計數(shù)器作計數(shù)器用,工作在方式2,計數(shù)器初值為#0FFH。這樣,當外部來一個脈沖時,計數(shù)器產(chǎn)生溢出,用計數(shù)器的溢出信號作為中斷請求標志。例如,將定時器T1作為外部中斷源的程序如下:
MOV TMOD,#60H MOV TL1,#0FFH MOV TH1,#0FFH SETB TR1 SETB EA SETB ET1 ……
利用中斷和查詢相結(jié)合擴展外部中斷:如圖1.13所示,外部有多個中斷信號,只用一個外部中斷源,采用中斷和查詢相結(jié)合的方法解決外部多中斷請求的問題。

圖1.13 單片機中斷系統(tǒng)結(jié)構(gòu)
3.單片機串行接口
(1)串行口結(jié)構(gòu)
51單片機內(nèi)部有一個功能很強大的全雙工串行口,可同時接收和發(fā)送數(shù)據(jù)。串行口由發(fā)送/接收緩沖器、發(fā)送控制器、接收控制器、輸出控制門、輸入移位寄存器等組成。串行口的結(jié)構(gòu)與工作方式有關(guān),圖1.14為方式0的串行口結(jié)構(gòu),圖1.15為方式1、2、3的串行口結(jié)構(gòu)。
單片機發(fā)送數(shù)據(jù)時,由累加器A將數(shù)據(jù)送入發(fā)送緩沖寄存器SBUF,每發(fā)送完一幀數(shù)據(jù),TI置1。單片機接收數(shù)據(jù)時,每接收完一幀數(shù)據(jù),RI置1。值得注意的是,TI和RI只能用軟件復位。接收、發(fā)送數(shù)據(jù)均可工作在查詢方式或中斷方式。
(2)串行口工作方式
串行口有4種工作方式,如表1.5所示。方式0以固定的波特率通過外接移位寄存器(如74HC164、74HC165等)實現(xiàn)I/O口的擴展。方式1、方式2、方式3均為異步通信,方式1用于雙機通信,方式2、方式3主要用于多機通信,也可用于雙機通信。

圖1.14 串行口方式0結(jié)構(gòu)示意圖

圖1.15 串行口方式1、2、3結(jié)構(gòu)示意圖
(3)串行口波特率設(shè)置
波特率反映串行口通信速度的快慢,單片機工作在不同的工作方式,其波特率的設(shè)置如下。
① 工作在方式0的波特率:是固定的,為fosc/12。
② 工作在方式2的波特率:波特率=(2SMOD*fosc)/64(其中SMOD為PCON.7)。
③ 工作在方式1和方式3的波特率:設(shè)置定時器T1工作在方式2,定時器T1的初值決定串行口的波特率,即

例如,單片機工作在串行方式1,串口波特率為2400bps的設(shè)置:
MOV SCOM,#40H ;設(shè)置串行口工作在方式 1 MOV TMOD,#20H ;設(shè)置T1作定時器工作在方式 2 MOV TH1,#0F4H ;波特率為 2400bps的定時器初值 MOV TL1,#0F4H SETB TR1 ;啟動定時器
(4)雙機通信
在硬件上,只要將兩塊單片機的串行口交叉相連,地線連在一起,即可實現(xiàn)雙機通信。在程序設(shè)計上,單片機工作在方式1(或方式2、3),設(shè)置相同波特率,并處于允許接收狀態(tài)。例如,工作在方式1,以1200bps實現(xiàn)雙機通信的初始化程序:
MOV SCON,#30H ;串行口工作在方式 1,允許接收 MOV TMOD,#20 ;設(shè)置T1定時工作在方式 2 MOV TH1,#0E8H ;波特率為 1200bps的定時器初值 MOV TL1,#0E8H SETB TR1 ;啟動定時器
(5)多機通信
單片機在方式2或方式3下可實現(xiàn)多機通信。圖1.16所示是廣泛應用的主從式多機通信結(jié)構(gòu)圖。主機可以跟任一臺從機通信,從機只能同主機通信。

圖1.16 主從式多機通信結(jié)構(gòu)
在主從式多機系統(tǒng)中,①先對串行口進行如下設(shè)置:主、從機的SM2=1,串行口工作在方式2(或方式3),主、從機的波特率相同,主機的TB8=1,所有從機的REN=1。②主機發(fā)出一幀(其中包括8位需要與之通信的從機地址,第9位為1(TB8=1))地址信息。③所有從機接收到信息后,與本機地址相比較,相同地址的從機,使SM2=0,以便接收主機發(fā)來的數(shù)據(jù);對地址不相符合的從機,仍保持SM2=1的狀態(tài)。④主機向從機發(fā)送數(shù)據(jù)時,TB8=0,此時只有SM2=0的從機才能接收。
- 過程控制工程及仿真
- 人工智能超越人類
- 傳感器技術(shù)實驗教程
- 計算機網(wǎng)絡(luò)技術(shù)實訓
- Data Wrangling with Python
- 工業(yè)機器人操作與編程
- 運動控制系統(tǒng)應用與實踐
- 工業(yè)機器人運動仿真編程實踐:基于Android和OpenGL
- 人工智能技術(shù)入門
- Cloudera Hadoop大數(shù)據(jù)平臺實戰(zhàn)指南
- Serverless Design Patterns and Best Practices
- Effective Business Intelligence with QuickSight
- 軟件測試設(shè)計
- 微機組裝與維護教程
- 工程地質(zhì)地學信息遙感自動提取技術(shù)