官术网_书友最值得收藏!

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的從機才能接收。

主站蜘蛛池模板: 长葛市| 横峰县| 彭阳县| 那曲县| 康马县| 东安县| 大荔县| 吐鲁番市| 闽侯县| 平罗县| 霍林郭勒市| 博湖县| 道孚县| 金乡县| 余庆县| 栾川县| 鲜城| 天峻县| 罗定市| 梁山县| 迁安市| 长武县| 章丘市| 梓潼县| 广德县| 安康市| 香格里拉县| 磐石市| 英德市| 蒲江县| 阜新| 铅山县| 祁门县| 鄂州市| 渑池县| 象山县| 临沧市| 布尔津县| 土默特右旗| 涟水县| 勃利县|