單片機原理及應用-03MCS-51單片機的組成原理_第1頁
單片機原理及應用-03MCS-51單片機的組成原理_第2頁
單片機原理及應用-03MCS-51單片機的組成原理_第3頁
單片機原理及應用-03MCS-51單片機的組成原理_第4頁
單片機原理及應用-03MCS-51單片機的組成原理_第5頁
已閱讀5頁,還剩82頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第3章MCS-51單片機的組成原理3.1概述

3.6定時器/計數器3.2中央處理器

3.7串行I/O接口3.3存儲器

3.8中斷控制系統3.4布爾處理機

3.9MCS-51單片機外部特性3.5并行I/O接口

3.10EPROM的編程、檢查與擦除

3.1189C51單片機的組成與特點3.1概述MCS-51系列單片機是把構成計算機的CPU、存儲器、寄存器組、I/O接口制作在一塊集成電路芯片中。另外,還集成有定時器/計數器、串行通信接口等部件,因此可方便地用于定時控制和遠程數據傳送。在MCS-51系列單片機中,主要有8031、8051、8751及80C51等型號。隨著超大規模集成電路的發展,單片機的內部結構仍在不斷地擴大,功能在不斷提高,其型號與類型也在不斷地變換。例如8052AH、8032Ah、8752BH采用HMOS工藝制成,內部ROM/RAM的容量增大了一倍。80C51BH系列采用CHMOS工藝制成,功耗低,其中87C51具有兩級存儲器保密系統,可防止非法拷貝。8052AH-BASIC芯片內部固化有MCSBASIC52解釋程序,可使BASIC52語言與匯編語言混合使用。

又如可編程計數陣列型單片機80C51FA具有5個比較/捕捉模塊,每個模塊可執行16位的正跳變捕捉、負跳變捕捉和正負跳變捕捉,可執行16位軟件定時、16位高速輸出及位脈沖寬度調制輸出等,另外還有一個增強的多機串行通信接口。

A/D型單片機80C51GA具有8路8位A/D轉換器、半雙工同步串行通信接口、16位程序監視跟蹤定時器,擴展了A/D中斷和串行口中斷,使中斷源達7個之多。多并行接口型單片機80C451增加了兩個8位并行I/O接口P4口和P5口,從而提高了數據的吞吐能力。

DMA(直接存儲器存取方式)型單片機80C52JA具有用于DMA傳送的目的地址寄存器、源地址寄存器和字節計數器,支持DMA傳送,且在80C452中設有128字節的雙向先進先出(FIFO)RAM陣列,支持從一個RAM到另一個RAM的高速數據傳送。

目前,使用較多的還有89C51型單片機,其內部有4KB/8KB/16KB/32KB/64KB的Flash程序存儲器、128/256/512/1024字節的隨機存取數據存儲器、3個定時器/計數器,采用雙DPTR結構,有6個中斷源,分4個優先級控制,可低電壓運行,且有較強的抗電磁干擾能力。本章仍以8051為例,講述單片機的基本組成與工作原理,然后介紹89C51單片機的組成與特點。

8051單片機的內部結構如圖3.1所示,包含1個8位中央處理器CPU、4KB程序存儲器EPROM、128B隨機存取存儲器RAM、4個8位并行I/O接口、1個全雙工串行通信接口、2個16位定時器/計數器及21個特殊功能寄存器。外部具有64KB程序存儲器尋址能力和64KB數據存儲器尋址能力。指令系統中增加了乘除法指令,提高了運算及數據處理能力,且具有位操作能力。圖3.18051單片機內部組成P1P1口鎖存器P1口驅動器8PCONSCONTMODTCONSBUF(TX)SBUF(RX)IEIPTH0TL0TH1TL1中斷、串行口和定時器部件P3P3口鎖存器P3口驅動器8PSENEARSTALE指令寄存器IR定時控制邏輯寄存器BSPRAM128×8+5VVCC地址寄存器RAMP0口鎖存器P0P0口驅動器8ROM4K×8P2口鎖存器P2P2口驅動器8PSW暫存寄存器1暫存寄存器2累加器A算術邏輯部件ALU程序地址寄存器緩沖寄存器PC增量PCDPTR圖3.1(2)3.2中央處理器

中央處理器是進行算術/邏輯運算,控制程序執行的部件。它包括運算器和控制器,主要組成已經反映在圖3.1(2)中。3.2.1運算器3.2.2控制器3.2.3時鐘與定時3.2.1運算器

運算器主要包括算術/邏輯部件ALU、累加器、暫存寄存器TMP1和TMP2、程序狀態標志寄存器PSW、BCD碼修正電路等。為了提高數據處理和位操作能力,片內設有一個通用寄存器B和一些專用寄存器。運算器的功能主要是對數據進行加、減、乘、除等算術運算及“與”、“或”、“非”、“異或”等邏輯運算。對于位操作數,可進行置位、清零、求反、移位、條件判斷及按位“與”、按位“或”等操作。3.2.2控制器

控制器包括程序計數器PC、指令寄存器、指令譯碼器、定時控制與條件轉移邏輯電路等。由于可以外接64K字節的數據存儲器和I/O接口電路,因此在控制器中設有一個16位的地址指示器DPTR,用來對外部數據存儲器和I/O接口尋址。為了便于數據保護,設有8位堆棧指示器SP。

PSW寄存器共有8位,全部用作程序運行時的狀態標志,其格式如下:

字節地址D0HPSW

位地址D7HD6HD5HD4HD3HD2HD1HD0HCYACF0RS1RS0OVPP:奇偶標志位。當累加器中1的個數為偶數時,P置1,否則清0。OV:溢出標志位。當執行算術運算時,最高位和次高位的進位(或借位)相同時,有溢出,OV置1;否則,沒有溢出,OV清0。RS0RS1:寄存器工作區選擇。F0:用戶標志位。AC:輔助進位標志位。算術運算時,若低半字節向高半字節有進位(或借位)時,AC置1,否則清0。Cy:最高進位標志位。算術運算時,若最高位有進位(或借位)時,Cy置1,否則清0。D1:保留。3.2.3時鐘與定時

MCS-51單片機的定時時序如圖3.2所示。一個機器周期為6個時鐘周期,表示為S1~S6。在一個機器周期中,包含有兩個機器周期信號ALE。時鐘信號S為振蕩器頻率的2分頻,一般情況下,算術/邏輯運算在S的前半周期P1進行,內部寄存器傳送在S的后半周期P2進行。MCS-51單片機的大部分指令執行時間為一個機器周期,少數為2個機器周期,乘法和除法指令需要4個機器周期。

P1P2P1P2P1P2P1P2P1P2P1P2S6S5S4S3S2S1圖3.2MCS-51時序圖讀操作碼讀操作數一個機器周期3.3存儲器

在MCS-51系列單片機中,程序存儲器和數據存儲器互相獨立,物理結構也不相同。程序存儲器為只讀存儲器,數據存儲器為隨機存取存儲器。從物理地址空間看,共有4個存儲地址空間,即片內程序存儲器、片外程序存儲器、片內數據存儲器和片外數據存儲器,I/O接口與外部數據存儲器統一編址,其示意如圖3.3所示。圖3.3MCS-51存儲器空間(b)數據存儲器00HFFH內部外部FFFFH0000H(a)程序存儲器0FFFH0000HFFFFH0000H外部EA=0內部EA=13.3.1程序存儲器

程序存儲器包括內部程序存儲器和外部程序存儲器。8051內設4KBROM,8751內設4KBEPROM,地址范圍為0000H~0FFFH,外部可擴展64KB,地址范圍為0000H~FFFFH。在其引腳中設有一個控制端。若該端接高電平,程序執行時先執行內部程序存儲器中的程序,當地址大于等于1000H后,執行外部程序存儲器中的程序。若該端接低電平,則全部執行外部程序存儲器中的程序。程序存儲器中存放的數據只能用查表指令訪問,其格式如下:

MOVCA,@A+PCMOVCA,@A+DPTR

3.3.2數據存儲器

數據存儲器包括內部數據存儲器和外部數據存儲器。內部數據存儲器分為128字節的RAM區和128字節的特殊功能寄存器區,總的地址范圍為00H~FFH。在特殊功能寄存器地址空間中離散地分布著21個特殊功能寄存器。如累加器A、寄存器B、程序狀態標志寄存器PSW等。外部可擴充64KB的數據存儲器,地址范圍為0000H~FFFFH。內部數據存儲器和外部數據存儲器在00H~FFH地址區重疊。對于內部數據存儲器可以直接尋址,也可以間接尋址,間接尋址時,間接地址寄存器為R0和R1,指令格式如下:MOVA,@R0MOVA,@R1MOV@R0,AMOV@R1,A外部數據存儲器只能間接尋址,間接地址寄存器為R0、R1和DPTR。用R0和R1只能訪問低256個字節單元,用DPTR可訪問64KB單元。指令格式如下:MOVXA,@R0MOVXA,@R1MOVXA,@DPTRMOVX@R0,AMOVX@R1,AMOVX@DPTR,A1.內部RAM

內部RAM共128個字節單元,其分布如圖3.4所示。00H~1FH單元為4個寄存器工作區,每區8個寄存器,表示為R0~R7。寄存器工作區的選擇是通過程序狀態標志寄存器PSW的第3~4位進行,如表3.1所示。設置4個寄存器工作區可以提高現場保護能力和CPU實時響應的速度。圖3.4內部RAM結構數據緩沖區

2FH30H1FH20H00H7FH只能字節尋址字節、位尋址4個寄存器區(R0~R7)1區2區3區0區表3.1寄存器工作區選擇與地址分配

PSW.4(RS1)PSW.3(RS0)寄存器區

R0~R7占用地址

000區

00H~07H011區

08H~0FH102區

10H~17H113區

18H~1FH20H~2FH的16個單元既可按字節尋址,作為一般的工作單元,又可以按位由CPU直接尋址,進行位操作。30H~7FH區只能按字節尋址,一般用作數據緩沖區或堆棧區。

2.特殊功能寄存器特殊功能寄存器有21個,離散地分布在80H~FFH地址區域中,其名稱、地址分配和復位后的初始狀態如表3.2所示,這些寄存器的功能將在以后各章中介紹。特殊功能寄存器名

稱地

址復位后狀態B通用寄存器F0H00HA累加器E0H00HPSW程序狀態字D0H00HIP中斷優先級寄存器B8H×××00000BP3P3口B0HFFHIE中斷允許寄存器A8H0××00000BP2P2口A0HFFHSBUF串行口發送/接收緩沖器99H不定SCON串行口控制寄存器98H00HP1P1口90HFFHTH1定時器/計數器1高8位8DH00HTH0定時器/計數器0高8位8CH00HTL1定時器/計數器1低8位8BH00HTL0定時器/計數器0低8位8AH00HTMOD定時器/計數器方式字89H00HTCON定時器控制寄存器88H00HPCON波特率選擇寄存器87H00HDPH地址寄存器高8位83H00HDPL地址寄存器低8位82H00HSP堆棧指針81H07HP0P0口80HFFH表3.2特殊功能寄存器表3.2(2)3.堆棧工作區在MCS-51單片機中堆棧是向上生成,空棧底,實棧頂,由堆棧指示器SP指示。SP是一個8位寄存器,屬特殊功能寄存器,字節地址為81H。堆棧工作區可設在內部RAM的任意區域中,但在使用時注意不要與所選寄存器工作區、位地址區重疊。系統復位后,堆棧指針SP的初值為07H,指向寄存器工作區0。因此,用戶在初始化程序中應對SP設置初值,一般設在30H~7FH為宜。

4.外部數據存儲器在MCS-51系列單片機的外部可擴展64KB的數據存儲器,用來存放隨機數據,因此一般由RAM構成。程序運行時,只能通過地址寄存器DPTR和通用寄存器R0、R1間接尋址。3.4布爾處理機1.布爾處理機布爾處理機實際上是一位字長的計算機,它有中央處理器、位累加器、位地址空間和位操作指令。通過編程可實現位處理或位控制功能。由于在MCS-51單片機中內含有一個布爾處理機,因此具有很強的位處理功能。2.MCS-51單片機中布爾處理機的組成在MCS-51單片機的內部RAM中,20H~2FH即可以按字節尋址,也可以按位尋址。這16個單元共有128位,每位有一個位地址,尋址范圍為00H~7FH,如表3.3所示。另外,有11個特殊功能寄存器,如累加器A、寄存器B、程序狀態字PSW等,既有字節地址,也有位地址,其詳細地址如表3.4所示。表中給出了能按位尋址的寄存器的位地址。在程序狀態標志寄存器PSW中,進位標志位C作為位累加器使用。字節地址位

址D7D6D5D4D3D2D1D02FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H7F776F675F574F473F372F271F170F077E766E665E564E463E362E261E160E067D756D655D554D453D352D251D150D057C746C645C544C443C342C241C140C047B736B635B534B433B332B231B130B037A726A625A524A423A322A221A120A027971696159514941393129211911090178706860585048403830282018100800表3.3RAM尋址區位地址分配特殊功能寄存器字節地址位

址D7D0BF0H

F7F6F5F4F3F2F1F0AE0H

E7E6E5E4E3E2E1E0PSWD0HCYACF0RS1RS0OV

PD7D6D5D4D3D2D1D0IPB8H

PSPT1PX1PT0PX0---BCBBBAB9B8P3B0HP3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0B7B6B5B4B3B2B1B0IEA8HEA

ESET1EX1ET0EX0AF--ACABAAA9A8P2A0HP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0A7A6A5A4A3A2A1A0SBUF99H

SCON98HSM0SM1SM2RENTB8RB8TIRI9F9E9D9C9B9A9998P190HP1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.09796959493929190TH18DH

TH08CHTL18BHTL08AHTMOD89HTCON88HTF1TR1TF0TR0IE1IT1IE0IT08F8E8D8C8B8A8988PCON87H

DPH83HDPL82HSP81HP080HP0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.08786858483828180

在指令系統中設有位操作指令,與位累加器C和位地址空間結合起來,構成一個完整的布爾處理機。位操作指令有位傳送、位清0、位置1、位取“反”、按位“與”、按位“或”及位測試轉移等。MCS-51單片機的4個8位并行I/O接口均具有位地址,即實現位輸入輸出及位控制功能。3.5并行I/O接口MCS-51單片機內部設置有4個8位并行I/O接口,其中P0口為雙向三態輸入輸入接口,P1、P2、P3口為準雙向輸入輸出接口。3.5.1P0口與P2口3.5.2P1口與P3口3.5.1P0口與P2口P0口是一個8位雙向三態輸入輸出接口,P2口是一個準雙向輸入輸出接口,而且每一位都有自已的位地址。中央處理器可接字節進行數據傳送,也可按位進行位操作。在聯接外部存儲器時,P0口作為8位數據輸入輸出口和外部存儲器低8位地址口,地址/數據分時傳送。P2口輸出外部存儲器的高8位地址,其連接如圖3.5所示。數據總線(D7~D0)地址鎖存器ROM程序存儲器

64KOERAM或I/O口

64KWRRDP2口8051ALEEAP0口WRPSENRD地址總線(A15~A0)圖3.5外部存儲器連接3.5.2P1口與P3口

P1口與P3口是8位準雙向輸入輸出接口,每一位也有自己的位地址。中央處理器可按字節進行數據傳送,也可按位進行位操作。另外,P3口具有第二功能,如表3.5所示,表3.5P3口功能控制信號線引腳符號功能P3.0RXD串行口輸入P3.1TXD串行口輸出P3.2外部中斷0輸入P3.3外部中斷1輸入P3.4T0定時器0外部輸入P3.5T1定時器1外部輸入P3.6外部數據存儲器寫信號P3.7外部數據存儲器讀信號3.6定時器/計數器3.6.1定時器/計數器的組成3.6.2定時器/計數器的工作方式3.6.3定時器/計數器的使用3.6.1定時器/計數器的組成MCS-51單片機中設置有2個16位的可編程定時器/計數器,具有4種工作方式,其邏輯結構如圖3.6所示。定時器/計數器T0由計數器TH0和TL0組成,定時器/計數器T1由計數器TH1和TL1組成。TH、TL分別為兩個8位計數器,連接起來可組成16位計數器。定時器/計數器的工作方式由方式控制字TMOD選擇,定時器/計數器的啟停由控制寄存器TCON控制,這兩個寄存器均屬特殊功能寄存器。T0

T1圖3.6定時器/計數器邏輯結構

CPUTCONTMODTL1TH1TH0TL0內部總線定時器/計數器工作方式控制字TMOD:字節地址89HTMODD7D6D5D4D3D2D1D0GATEC/M1M0GATEC/M1M0其中M1、M0為方式選擇,C/T為定時/計數選擇,GATE為定時器/計數器工作方式選擇。定時器/計數器啟停控制寄存器TCON:用于中斷控制

字節地址88HTCOND7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0

其中低4位用于中斷控制,高4位用于定時器/計數器的啟/停控制,TF為溢出標志,TR為啟/停控制標志。3.6.2定時器/計數器的工作方式

1.工作方式0

當M1M0=00時選擇工作方式0,其邏輯圖如圖3.7所示。在工作方式0狀態下,TL低5位與TH并成13位計數器。計數工作時,TL低5位計滿后向TH計數器進位。當C/=0時為定時工作狀態,振蕩器輸出脈沖(12MHz)經12分頻,產生定時脈腫(1MHz)送計數器計器。當C/=1時,為計數工作狀態,由T0引腳輸入計數脈沖,對計數器進行計數。計數器溢出時將TF置1,表示定時時間到,向CPU發中斷請求。當GATE=0時,A點為高電平,定時器/計數器的啟/停由啟/停標志位TR0決定。TR0=1時,定時器/計數器啟動;TR0=0時,定時器/計數器停止工作。當GATE=1時A點位由決定,這樣B點的電位就由TR0和聯合決定,即定時器/計數器的運行由TR0和兩個條件控制。TL0TH05(8)位8位TF0中斷請求&≥1C/T=1C/T=0TR0振蕩器÷12T0GATE圖3.7定時器/計數器工作方式0與工作方式1T1的工作情況與T0相同。TR可由程序置1或者清0,當計數溢出時TF置1;CPU中斷響應后,TF清0。CPU也可讀出TCON、TH及TL中的內容來了解T0或T1的工作狀態。2.工作方式1

當M1M0=01時,定時器/計數器選擇工作方式1,這時TH與TL并成16位計數器,按照16位計數器方式工作。其它過程與工作方式0相同。3.工作方式2

當M1M0=10時,定時器/計數器選擇工作方式2。在工作方式2狀態下TL為8位計數器,TH作為預置常數寄存器,其邏輯圖如圖3.8所示。當TL計數溢出后,一方面將TF置1,發中斷請求,另一方面再把預置常數寄存器TH中的數送入TL,使定時器/計數器重復工作。重新裝入TF中斷請求TL(8位)計數器TH(8位)預置常數寄存器圖3.8

重復定時/計數控制4.工作方式3

當M1M0=11時,定時器/計數器選擇工作方式3。工作方式3是T0分為一個8位定時器/計數器和一個8位定時器,TH0用于定時器/計數器,TL0用于定時器。這樣MCS-51就具有一個16位、一個8位定時器/計數器和一個8位定時器。定時器/計數器的工作原理與工作方式0相同,只是計數器僅用8位的TH0。定時器如圖3.9所示,使用了定時器/計數器T1的狀態控制位TR1和TF1,占用了定時器/計數器T1的中斷源。圖3.9由TH0組成8位定時器TR1中斷請求TF1TH08位振蕩器÷12

一般情況下,當T1作為串行口的波特率發生器時,T0才選擇為工作方式3。當T0選擇為工作方式3時,T1可選擇為工作方式0或工作方式1或工作方式2,作為串行口的波特率發生器或者用于不需要中斷請求的場合。工作方式3只適合于定時器/計數器T0;當T1的方式控制字M1M0=11時,停止工作。

定時器/計數器,其內部一樣,都是計數。定時器對內部時鐘信號計數,計數器是對外部信號計數。MCS-51單片機的定時器/計數器是加1計數,因此工作時涉及到計數初值。由計數初值開始加1,直到計滿溢出,向CPU發中斷請求。因此,要使定時器/計數器工作,須確定以下幾方面的工作。(1)確定定時器/計數器的工作方式,即定時還是計數?(2)確定計數初值。(3)確定定時器/計數器是否可以中斷請求?(4)如何啟動定時器/計數器工作?(5)選擇工作方式2使定時器/計數器連續工作還是由中斷服務程序使其連續工作?3.6.3定時器/計數器的使用

工作方式的確度是向TMOD寄存器寫入方式控制字。例如用T0定時,選擇工作方式1,內啟動,傳送指令為:MOVTMOD,#01H計數初值的確定,如下:設計數值為X,則須裝入的計數初值為2n-X。方式0,n=13;方式1,n=16;方式2和方式3,n=8。在定時方式下,按機器周期計數,每個機器周期包括12個振蕩周期。當晶振頻率為6MHz時,1個機器周期==2μS,定時時間為2XμS。若要求定時1mS,則:X==500由此得計數初值為:216-500=65036=FE0CH設置初值的指令為:MOVTL0,#0CHMOVTH0,#0FEH啟動T0定時的指令為:MOVTCON,#10H或

SETBTR03.7串行I/O接口3.7.1串行通信基本方式3.7.2串行通信接口的組成與特點3.7.3串行通信接口的工作方式3.7.4數據發送與接收3.7.1串行通信基本方式

串行通信是指數據一位一位地順序傳送。其特點是通信線路簡單,只要一對傳輸線就可以通信,但速度慢。在實際應用中,串行通信又分為同步傳送和異步傳送兩種方式。1.同步傳送同步傳送是指在一個數據塊的開頭使用同步字符。數據傳送時使用同一頻率的時鐘脈沖來實現發送端與接收端的同步。這種時鐘脈沖稱為同步脈沖,數據同步傳送的格式如圖3.10所示。圖3.10

同步傳送SYN字符1SYN字符2數據

數據傳送時,數據與同步脈沖同時發出。在數據塊中首先發同步字符,一般為1~2個。接收端首先接收同步字符,確認同步后開始接收數據。采用同步方式傳送,硬件設備較為復雜,但與異步傳送相比,同步傳送速率高。

2.異步傳送異步傳送是以字符或一定位數的數據為單位,有起始位和停止位,作為字符的開頭和結束標志,這樣的單位稱為幀。一幀中,起始標志占一位,數據占5、6、7或者8位,停止標志占1、1或者2位。一般規定,起始位用低電平(0)表示,停止位用高電平(1)表示。數據傳送時,一幀一幀地傳送。若傳送ASCII碼字符,數據中的第8位可作為奇偶校驗位。異步傳送數據格式如圖3.11所示。圖3.11異步傳送一幀信息停止位起始位奇偶校驗7位數據停止位

串行通信按照數據傳送的方向,可分為三種:單工、半雙工和全雙工通信方式。數據傳送速率用波特率表示,即每秒鐘傳送二進制數的位數,單位為“波特”。異步傳送常用波特率為50~19200波特,同步傳送速率較高,一般在20000波特以上。3.7.2串行通信接口的組成與特點

在MCS-51單片機中,串行I/O接口是一個全雙工串行通信接口,有一個數據接收緩種器和一個數據發送緩沖器,兩個緩沖器共用一個地址99H,表示為SBUF。中央處理器對接收緩沖器只能讀出不能寫入,對發送緩沖器只能寫入不能讀出。系統中有兩個特殊功能寄存器SCON和PCON,控制串行通信工作方式。

1.串行口控制寄存器SCON

串行口控制寄存器共有8位,字節地址為98H,格式如下:SCON位地址

字節地址98H9FH9EH9DH9CH9BH9AH99H98HSM0SM1SM2RENTB8RB8TIRISM0SM1:工作方式選擇位,可選擇4種工作方式,如表3.6所示。表3.6SM0SM1方式選擇SM0SM1方式功能說明波特率000移位寄存器方式fosc/120118位UART可變1029位UARTFosc/64或Fosc/321139位UART可變SM2:工作方式2或方式3串行多機通信允許位。在方式2或方式3時,若SM2=1,接收到的數據第9位(RB8)為1,RI置1,向中央處理器CPU發中斷請求;接收到的數據第9位(RB8)為0,RI不置1,不向CPU發中斷請求。若SM2=0,接收到的數據送SBUF,接收到的數據第9位送RB8,RI置1。在工作方式1時,若SM2=1,只有接收到有效停止位時RI置1,否則RI不置1。在工作方式0時,SM2應為0。

REN:允許串行接收。

TB8:在方式2和方式3時是發送數據的第9位。

RB8:在方式2和方式3時是接收數據的第9位。在方式1時,若SM2=0,RB8為接收到數據的停止位。在工作方式0時,不使用RB8。TI:發送中斷標志。由硬件在方式0串行發送第8位結束或在其它方式中發送停止位的開始時置1,由軟件清0。RI:接收中斷標志。由硬件在方式0串行接收第8位結束或在其它方式中接收停止位的中間時置1(除了與SM2有關),由軟件清0。以上標志設有位地址,可進行位操作,復位時全部清0。

2.波特率選擇寄存器PCON字節地址87HPCOND7D6D5D4D3D2D1D0SMODPCON用來確定串行數據傳送時的波特率,沒有位地址。有關SMOD位的使用,將在下面結合串行通信接口的工作方式一起介紹。3.7.3串行通信接口的工作方式

1.工作方式0

當SM0SM1=00時,選擇工作方式0,為移位寄存器輸入/輸出方式,可外接移位寄存器或同步輸入/輸出設備。按工作方式0發送時,RXD引腳用于串行數據輸出,TXD輸出移位同步脈沖。當數據寫入發送緩沖器后,串行口將8位數據從低位開始以Fosc/12的波特率從RXD端輸出,輸出完后將中斷標志TI置1,發中斷請求。

REN為串行口允許接收控制位,在按工作方式0接收時,受到REN位的控制。REN=0,禁止接收;REN=1允許接收,數據由RXD端輸入,TXD端輸出移位同步信號。當接收到8位數據時,將中斷標志RI置1,發中斷請求。轉入中斷服務后,由中斷服務程序將TI、RI清0。在方式0中沒有使用TB8和RB8位。2.工作方式1

當SM0SM1=01時,串行接口選擇工作方式1,為可變波特率的8位異步通信方式。發送數據由TXD端輸出,每一幀信息為10位,一位起始標志位0,8位數據位和一位停止位1。發送時,數據送入發送緩沖器SBUF,然后啟動發送。數據發送完后,將中斷標志位TI置1。接收時(REN=1)以所選波特率的16倍速率采樣RXD引腳,當采樣到從1到0的下跳沿時啟動接收器,確認起始位后,接收一幀信息。當RI=0,停止位為1或SM2=0時,停止位進入RB8,中斷標志位RI置1。若這兩個條件都不滿足,則信息丟失。在通常情況下,串行口方式1工作時,SM2清0,波特率為:

方式1波特率=×定時器T1的溢出率為了可靠傳送,接收采樣時,每位采樣3次,按多數表決。中斷標志RI由中斷服務程序清0。3.工作方式2

當SM0SM1=10時,串行接口選擇工作方式2,為9位異步通信方式。在這種方式下,每一幀有11位。1位起始位,8位數據位,1位可以置1或者清0的第9位,1位停止位。第9位實際上是SCON中的TB8,作為多機通信中址址/數據標志位或數據的奇偶校驗位。接收時,當RI=0,SM2=0或接收到的第9位數據為1時,接收數據送入SBUF,第9位送入RB8,中斷標志位RI置1;若二條件都不滿足,接收到的信息丟失。若第9位表示奇偶校驗位,則在中斷處理程序中應進行校驗處理。方式2波特率=×振蕩器頻率4.工作方式3當SM0SM1=11時,串行接口選擇工作方式3,為波特率可變的9位異步通信方式。除了波特率可變外,工作方式3與工作方式2相同。方式3波特率=×定時器T1的溢出率波特率是串行口每秒鐘發送或接收的數碼位數,與振蕩器的頻率或定時器的溢出率成正比。當定時器/計數器處于工作方式0、工作方式1和工作方式3時溢出率=/(2n-n位定時器初值+重置定時器的中斷處理程序機器周期數)當定時器處于工作方式2時溢出率=/(28-TH1)3.7.4數據發送與接收

1.數據發送對于串行口來說,只要中央處理器CPU把數據寫入發送緩沖器SBUF,數據將被一位一位地輸出,低位在先,高位在后。對于工作方式2和工作方式3,最高位的后面還有第9位(TB8)。若要進行串行通信,首先要確定串行口的工作方式,然后根據工作方式確定是否有第9位(TB8),以及第9位用作奇偶標志位還是用作地址標志位(對于多機通信)。另外,還要設置定時器T1的工作方式和計數初值,以選擇波特率。數據成批發送時還要確定一個發送數據區指針,以指示所要發送的數據。若TI為0,在CPU和串行口開中斷的情況下,即可發送數據。【例3.1】設串行口選擇工作方式2,有奇偶校驗,數據區指針為R0,發送一次數據的程序如下:

CLRTI;TI清0MOVA,@R0;取數

MOVC,P;奇偶標志送CMOVTB8,C;置奇偶標志MOVSBUF,A;數據發送WAIT:JBCTI,LOOP2;判斷數據是否發送完成

SJMPWAIT;數據位發送完,繼續循環LOOP2:INCR0;數據發送完,指針加12.數據接收只要串行口控制寄存器中的REN=1,串行口接收數據,并送入接收緩沖器SBUF,若有第9位,送RB8。要進行串行通信時,首先要確定串行口的工作方式,然后根據工作方式確定是否有第9位(RB8),以及第9位的作用。另外,還要設置定時器T1的工作方式和計數初值,以確定波特率。數據成批接收時還要確定一個數據區指針,以指示數據存放的地址。在CPU和串行口開中斷的情況下,每接收一幀數據,RI置1,向CPU發中斷請求。請求CUP讀出數據。【例3.2】設串行口選擇工作方式1,存放數據的區域指針為R0,接收程序如下:

CLRRI;RI清0 MOVA,SUBF;讀取數據

MOVR0,A;存數

INCR0;指針加13.8中斷控制系統3.8.1中斷源與中斷請求標志3.8.2中斷控制3.8.1中斷源與中斷請求標志MCS-51單片機有5個中斷源,2級中斷優先級,可實現2級中斷嵌套。每個中斷源可由程序開中斷或者關中斷,每個中斷源的優先級別可由程序設置。5個中斷源包括2個外部中斷、、2個內部定時器/計數器溢出中斷TF0、TF1和1個內部串行口中斷TI或RI。這些中斷請求分別由特殊功能寄存器TCON和SCON的相應位鎖存。

1.TCON用于中斷請求標志定時器/計數器啟停控制寄存器除用于啟停控制和溢出標志外,還用作中斷請求標志及外部中斷請求的觸發方式控制。其中溢出標志,也就是中斷請求標志。TCON用于中斷請求標志,格式如下:位地址TCON

字節地址88HD7D6D5D4D3D2D1D08FH8DH8BH8AH89H88HTF1TF0IE1IT1IE0IT0IT0:中斷請求觸發方式。當IT0=0時,電平觸發;當IT0=1時,下降沿觸發。為低電平有效。IT1:中斷請求觸發方式。作用同IT0。IE0:中斷請求標志位。當有請求時,IE0置1,向CPU請求中斷,否則為0。IE1:中斷請求標志位。作用同IE0。TF0:片內T0溢出中斷請求標志位,T0溢出時,TF0置1,向CPU請求中斷,否則為0。TF1:片內T1溢出中斷請求標志位,作用同TF0。位地址99H98H

字節地址98HSCOND7D6D5D4D3D2D1D0TIRI2.SCON用于中斷請求標志串行口控制寄存器的低2位(TI和RI)是串行口的發送中斷請求標志和接收中斷請求標志,其格式如下:TI:串行口發送中斷請求標志位,當發送完一個字節或發送停止位時TI置1,向CPU請求中斷處理,TI由中斷服務程序清0。

RI:串行口接收中斷請求標志位,當接收完一個字節或停止位時RI置1,向CPU請求中斷處理,RI也要由中斷服務程序清0。3.8.2中斷控制1.中斷允許寄存器IE

由控制字來實現,中斷控制寄存器有兩個,一個是中斷允許寄存器,另一個是中斷優先級寄存器,其格式如下:AFHACHABHAAHA9HA8H位地址

字節地址A8HIED7D6D5D4D3D2D1D0EAESET1EX1ET0EX0EA:開中斷標志位。EA=1,CPU開中斷;EA=0,CPU關中斷。ES:串行口中斷允許位。ES=1,串行口允許中斷;ES=0,則不允許中斷。ET0:定時器/計數器T0中斷允許位。ET0=1,T0允許中斷;ET0=0,則不允許中斷。EX0:中斷允許位。EX0=1,INT0允許中斷;EX0=0,INT0則不允許中斷。ET1:定時器/計數器T1中斷允許位。功能同ET0。EX1:中斷允許位。功能同EX0。復位后IE清0。2.中斷優先級寄存器IP位地址BCHBBHBAHB9HB8H

字節地址B8HIED7D6D5D4D3D2D1D0PSPT1PX1PT0PX0PS:串行口優先級控制位。PS=1時,串行口為高優先級中斷源;PS=0時,為低優先級中斷源。PT0:定時器/計數器T0優先級控制位。PT0=1時,T0為高優先級中斷源,PT0=0時,T0為低優先級中斷源。PX0:優先級控制位。PX1=1時,高優先級中斷源,PX0=0時,為低優先級中斷源。PT1:定時器/計數器T1優先級控制位。功能同PT0。PX1:優先級控制位。功能同PX0。

在MCS-51單片機中,中斷優先級分為兩級,即高優先級和低優先級。為此設置有兩個不可尋址的中斷優先級觸發器,分別指示兩級中斷服務。當CPU為高級中斷請求服務時,高優先級觸發器置1,否則清0。當幾個相同優先級別的中斷源同時請求時,CPU通過內部查詢來確定先為哪一個中斷請求服務,查詢優先級順序如表3.7所示。

在單片機工作時,中斷控制由程序來實現。例如CPU開中斷可由以下兩條指令來實現:SETB0AFH;EA置1或ORLIE,#80H;按位“或”,EA置1CPU關中斷可由以下兩條指令來實現:CLR0AFH;EA清0或ANLIE,#7FH;按位“與”,EA清0又如設置外部中斷源為高優先級,外部中斷源為低優先級,可由下面指令來實現:SETB0B8H;PX0置1CLR0BAH;PX1清0或MOVIP,#000××0×1B;PX0置1,PX1清0中斷源

同一級中斷源優先順序

外部

定時器/計數器T0

外部

定時器/計數器T1串行接口

表3.7同一級中斷源優先順序3.中斷響應處理

MCS-51單片機規定CPU在執行RETI或訪問IE、IP寄存器的指令時不響應中斷請求,只有上述指令執行完后的下一條指令周期的末尾才去響應新的中斷請求。響應后由硬件清除中斷請求標志(TI和RI除外),保護斷點,轉向中斷服務程序的入口,執行中斷服務程序。各中斷源服務程序的入口地址如表3.8所示。在保護斷點時,沒有保護PSW的狀態,若需要保護,可由中斷服務程序完成。在實際應用中,保護現場由壓棧指令(PUSH)來實現,恢復現場由彈棧指令(POP)來實現。對于工作寄存器R0~R7還可以使用寄存器工作區切換的方式來進行。下面舉例說明。表3.8中斷服務程序入口中斷源入口地址外部

0003H定時器/計數器T0000BH外部0013H定時器/計數器T1001BH串行接口0023H【例3.3】設串行口工作方式2,有奇偶校驗,數據發送中斷服務程序如下:RTI:PUSHPSW;壓棧保護現場

PUSHASETBPSW.4;寄存器工作區切換

CLRPSW.3CLRTIMOVA,@R0MOVC,PMOVSBUF,A;數據發送

INCR0POPA;恢復現場

POPPSWRETI

;中斷返回對于外部中斷源,若采用電平觸發方式,中斷返回之前外部中斷請求信號必須撤銷。否則,中斷返回后CPU會再次響應這一中斷請求。3.9MCS-51單片機外部特性3.9.1引腳功能3.9.2復位與掉電保護3.9.1引腳功能MCS-51單片機有40個引腳,雙列直插式結構,其引腳分布與邏輯符號如圖3.12所示,包括4個8位并行I/O接口、6條控制信號線和2條電源線。另外,P3口具有第2功能。圖3.12

89C51引腳圖與符號圖(a)引腳圖14023933843753663573483393210311130122913281427152616251724182319222021P10P11P12P13P14P15P16P17RST/VPDRXDP30TXDP31INT0P32INT1P33T0P34T1P35WRP36RDP37XTAL1XTAL2VSSVCCP00P01P02P03P04P05P06P07EA/VDDALE/PROGPSENP27P26P25P24P23P22P21P208051(b)符號圖XATL1XATL2EA/VDDPSENALE/PROGRXDTXDINT0INT1T0T1WRRDP0口地址/數據總線P1口P2口地址總線VSSVCCRST/VPD8051并行口P0:8位雙向I/O接口,連接外部存儲器低8位地址線和8位數據線。并行口P1:8位準雙向I/O接口,在編程和校驗時接收低8位地址,每一位可以獨立地輸入/輸出。并行口P2:8位準雙向I/O接口,連接外部存儲器高8位地址線,在編程和校驗時接收高位地址和控制信號。并行口P3:8位準雙向I/O接口,另第二功能。RXD/P3.0:串行通道接收器的數據輸入(異步)或數據輸入/輸出(同步)端。TXD/P3.1:串行通道發送器的數據輸出(異步)或時鐘輸出(同步)端。

/P3.2:中斷0輸入或定時器/計數器T0的門控輸入。

/P3.3:中斷1輸入或定時器/計數器T1的門控輸入。T0/P3.4:定時器/計數器T0外部計數脈沖輸入。T1/P3.5:定時器/計數器T1外部計數脈沖輸入。/P3.6:外部數據存儲器寫命令,低電平有效。

/P3.7:外部數據存儲器讀命令,低電平有效。RST/VPD:復位及提供后備電源。.ALE/:ALE地址輸出鎖存信號,EPROM編程時輸入編程脈沖。:外部程序存儲器讀出選通信號,讀出內容送并行口P0。

/VDD:是內部/外部程序存儲器選擇信號,高電平,選擇內部程序存儲器,低電平,選擇外部程序存儲器。對于內部沒有程序存儲器的單片機,必須接地;EPROM編程時VDD接21V電源。XTAL1XTAL2:外接晶體振蕩器或外部時鐘。VCC:+5V電源。VSS:接地端。3.9.2復位與掉電保護

1.RST/VPDRST/VPD引腳的內部電路如圖3.13所示,一方面經施密特觸發器與內部復位電路連接,另一方面經二極管與內部RAM連接。其作用是為內部電路提供復位信號和在掉電時為RAM存儲器提供備用電源。圖3.13RST/VPDD電路內部RAM施密特觸發器復位電路VCCRST/VPDVSS2.復位為了復位可靠,在復位電路的輸入端使用了一個施密特觸發器。每個機器周期的S5P2時刻采樣施密特觸發器的輸出,若連續兩次采樣到高電平才確認為是復位信號。因此要求復位信號(高電平)應在RST端至少保持2個機器周期。CPU在RST端變為高電平的第二個機器周期響應復位信號,使ALE和端變為輸入狀態,并將內部寄存器置為初始狀態。以后每個機器周期復位一次,直到RST端變為低電平(復位信號消失)為止。復位不影響內部存儲器RAM,復位后各特殊功能寄存器的狀態如表3.2(2)所示。上電復位電路如圖3.14所示,在RST端與VCC端之間接一個10μF的電容器,只要電源電壓VCC的上升時間不超過1mS,即可在接通電源時對單片機進行一次復位,即上電復位。PSEN3.掉電保護

MCS-51單片機的VPD引腳除作為復位信號輸入端外還作為備用電源輸入端。一旦主電源VCC出現故障后可由VPD接通備用電源。備用電源輸入電路有多種,圖3.15所示僅是其中一種。電源故障時,可通過向CPU發中斷請求。CPU中斷響應后,執行中斷服務程序,將有關數據送入內部RAM保存,然后由P1.0輸出0信號(低電平),觸發單穩電路555。若單穩電路定時輸出后,VCC仍然存在,則是假報警,復位后重新工作。若VCC已掉電,則由單穩電路接通備用電源,直到VCC恢復正常。也可由CPU輸出控制信號,啟動系統備用電源。圖3.14上電復位電路-10μF+

VCC8051RST/VPPVCC圖3.15掉電保護備用電源P1.0RST/VPD1234555

在8751單片機內部設置有4K的EPROM只讀存儲器,因此也就存在著編程、檢查和擦除的問題。3.10EPROM的編程、檢查與擦除3.10.1EPROM編程3.10.2程序檢查與擦除3.10.1EPROM編程EPROM編程時一般采用4~6MHz的振蕩頻率。EPROM單元地址由P0口和P2口的P2.0~P2.3輸入,寫入數據由P0口輸入,P2.4~P2.6和接低電平,P2.7接高電平,RST接2.5V高電平,/VDD端平時為TTL高電平,EPROM編程時加+21V電壓,ALE/加50ms的低電平編程脈沖。芯片連接與時序如圖3.16所示。PROG地址0000H…0FFFHA7~A0A11~A8TTL高電平4~6MHz+5V

編程數據g

ALE/PROGEA/VDDV1H1(+2.5V)P1口P23~P20P24P25P26P27XTAL2

XTAL1VSSP0口VCCALEEARSTPSEN8751(a)電路連接21±0.5VTTL低電平TTL高電平EA/VDD△t≥3個機器周期±10μS50±1mS△t△tTTL高電平數據P0口ALE/PROGP1口P23~P20地址TTL低電平(b)時序圖3.168751EPROM編程電路與時序3.10.2程序檢查與擦除

1.程序檢查程序檢查主要是將8751/8051單片機中EPROM/ROM的內容讀出檢查。程序檢查時的振蕩頻率也是4~6MHz。EPROM/ROM讀出時,單元地址由P0口和P2口的P2.0~P2.3輸入,P2.4~P2.6和接低電平,ALE和接高電平,RST接2.5V。數據由P0口輸出,P2.7作為讀出選通信號。當P2.7為高電平時P0口浮空;P2.7為低電平時,數據由P0口輸出。

2.EPROM擦除8751單片機內部E2PROM的擦除和其它E2PROM芯片的擦除方法一樣,通過紫外線照射來擦除。擦除后,可以重新寫入。一般日光燈和太陽光中都包含有紫外線。如果8751芯片上的窗口長期暴露在日光燈或太陽光下,其中的數據就會丟失。因此,8751單片機在寫入后,其上方的窗口須用黑紙或金屬膜覆蓋。3.1189C51單片機的組成與特點1.內部組成與特點

89C51單片機是在MCS-51的基礎上增添了一些新的功能部件而制造成功的。但是,由于生產廠商不同,因此所推出同一類型的產品在結構上往往略有差異。下面取其共有的部分,稱之為核,予以介紹,內部組成如圖3.17所示。圖3.1789C51單片機內部組成TH1TH0TCONTL1TL0TMOD定時器T0/T1T2CONTH2RCAP2HT2MODTL2RCAP2L定時器T2IEIPSCONSBUF串行口中斷控制IPHP0口P1口P2口P3口P0P1P2P3快閃存儲器FlashROM4K/8K/16/32KRAM256BAUXRAUXR1ERAM256/768B內部程序/數據存儲器節電與雙DPTR控制暫存TMP2暫存TMP1狀態PSW累加器A寄存器B算術邏輯部件ALUPCHPCLOSC定時控制電路PCONIP程序計數器雙DPTRCKCON堆棧SP指針DPTR數據指針時鐘控制SADDRSADEN用于地址識別的地址與地址掩碼寄存器

主要包括8位CPU、片內Flash程序存儲器、數據存儲器、布爾處理機、3個16位定時器/計數器、4個8位并行輸入輸出接口、一個全雙工UART等。

(1)CPUCPU采用CISC結構,字長8位,可進行加、減、乘、除以及“與”、“或”、“非”、“移位”等算術邏輯運算。主要包括算術邏輯部件ALU、累加器Acc、寄存器B、暫存寄存器TMP1/2、通用/專用寄存器組以及程序狀態寄存器PSW等。內設布爾處理器,可進行“位”操作。(2)存儲器存儲器分為程序存儲器和數據存儲器。早期MCS-51采用EPROM作為程序存儲器,從80C51開始使用快閃FLASH存儲器,容量為4KB至64KB,可支持系統中燒錄程序(ISP)和在應用中燒錄程序(IAP)。數據存儲器采用RAM,容量較小,一般為256,其中高位地址(80H~FFH)與特殊功能寄存器(SFR)重疊。為了擴大內部RAM的容量,在89C51之后新增片內RAM(即ERAM)256B/768B,在Philips的P89C51Rx2中新增片內RAM6

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論