版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
4.1中斷系統(tǒng)4.2定時/計數(shù)器4.3串行通信及其接口習(xí)題4單片機系統(tǒng)的運行同其他系統(tǒng)一樣,CPU需要不斷地和外部設(shè)備交換數(shù)據(jù)。當(dāng)CPU與外部設(shè)備交換信息時,若用查詢的方式,則CPU就要浪費時間去等待外設(shè)。為了解決快速CPU和慢速外設(shè)之間的矛盾,提高CPU和外設(shè)的工作效率,引入了中斷技術(shù)。中斷系統(tǒng)是單片機的重要組成部分。CPU通過中斷技術(shù)可以分時操作和管理多個外部設(shè)備,實現(xiàn)實時數(shù)據(jù)采集、實時控制、故障自動處理等功能,從而使CPU的工作效率得到很大的提高。4.1中斷系統(tǒng)4.1.1中斷的概念
在日常生活中,中斷事件經(jīng)常發(fā)生,例如:張同學(xué)正在教室寫作業(yè),忽然被人叫出去,回來后,繼續(xù)寫作業(yè),這就是生活中的“中斷”現(xiàn)象,也就是正常的工作過程被突發(fā)的事件打斷了。計算機中的中斷概念和生活中的中斷概念類似。中斷是指CPU對系統(tǒng)中或系統(tǒng)外發(fā)生的某個事件的一種響應(yīng)過程,即CPU正在執(zhí)行程序時,系統(tǒng)發(fā)生某一事件需要迅速處理,CPU暫時停止現(xiàn)行程序的執(zhí)行,而自動轉(zhuǎn)去處理該事件,當(dāng)事件處理完成后,CPU再返回到被暫停的程序斷點處,繼續(xù)執(zhí)行原來的程序,這一過程稱為中斷,如圖4.1所示。我們把實現(xiàn)中斷功能的硬件系統(tǒng)和軟件系統(tǒng)統(tǒng)稱為中斷系統(tǒng)。
為實現(xiàn)中斷功能,單片機的中斷系統(tǒng)應(yīng)解決以下幾方面的問題。圖4.1中斷過程
1.中斷源
所謂中斷源,是指引起CPU中斷的事件,即中斷請求信號的來源。中斷源向CPU提出的處理請求,稱為中斷請求或中斷申請。中斷請求信號的產(chǎn)生及該信號怎樣被CPU有效地識別是中斷源需要解決的問題,而且要求中斷請求信號產(chǎn)生一次,只能被CPU接收處理一次,不能一次中斷被CPU多次響應(yīng),這也就是中斷請求信號的及時撤除問題。
2.中斷響應(yīng)與返回
中斷源向CPU提出中斷請求,CPU暫時停止自身的事務(wù),轉(zhuǎn)去處理事件的過程,稱為中斷響應(yīng)過程。對事件的整個處理過程,稱為中斷服務(wù)或中斷處理。處理完畢,再回到原來被中止的地方,稱為中斷返回。CPU接收到中斷請求信號后,怎樣轉(zhuǎn)向該中斷源的中斷服務(wù)程序及執(zhí)行完中斷處理程序后如何正確返回被中斷的程序繼續(xù)執(zhí)行是問題的關(guān)鍵。中斷響應(yīng)與返回的過程中涉及到CPU響應(yīng)中斷的條件、現(xiàn)場保護等問題。
3.優(yōu)先級控制
通常一個中斷系統(tǒng)都有多個中斷源,經(jīng)常會出現(xiàn)兩個以上中斷源同時提出中斷請求的情況,這樣就需要設(shè)計者事先根據(jù)輕重緩急給每一個中斷源確定一個中斷級別(優(yōu)先權(quán)),當(dāng)多個中斷源同時發(fā)出中斷申請時,CPU能找到優(yōu)先權(quán)級別最高的中斷源,響應(yīng)它的中斷請求,在優(yōu)先權(quán)級別最高的中斷源處理完后,再響應(yīng)級別較低的中斷源。當(dāng)CPU響應(yīng)某一中斷源的請求并進行中斷處理時,若有優(yōu)先權(quán)級別更高的中斷源發(fā)出中斷申請,則CPU要能中斷正在進行的中斷服務(wù)程序,保留這個程序的斷點和現(xiàn)場,響應(yīng)高級中斷,在高級中斷處理完以后,再繼續(xù)執(zhí)行被中斷的中斷程序,這種情況稱為中斷嵌套。CPU一般都可實現(xiàn)多級中斷嵌套。4.1.2MCS-51系列單片機的中斷系統(tǒng)
1.?MCS-51系列單片機中斷系統(tǒng)的組成
MCS-51系列單片機的中斷系統(tǒng)是8位單片機中功能較強的一種。51子系列單片機具有5個中斷源,52子系列單片機具有6個中斷源,具有兩級中斷優(yōu)先級,可實現(xiàn)兩級中斷嵌套,4個用于中斷控制的特殊功能寄存器IE、IP、TCON和SCON用來控制中斷的類型、中斷的開放/禁止和各種中斷源的優(yōu)先級別。其整個中斷系統(tǒng)結(jié)構(gòu)組成如圖4.2所示。圖4.2MCS-51系列單片機中斷系統(tǒng)結(jié)構(gòu)
2.中斷源及中斷請求標(biāo)志
51系列單片機具有5個中斷源,可分為兩大類:外部中斷和內(nèi)部中斷。外部中斷源由引腳(P3.2)和(P3.3)輸入;內(nèi)部中斷源包括片內(nèi)定時/計數(shù)器T0和T1的溢出中斷以及串行口發(fā)送/接收中斷。這些中斷源產(chǎn)生的中斷請求信號均由單片機中的特殊功能寄存器TCON和SCON的相應(yīng)位鎖存。
1)定時/計數(shù)器控制寄存器TCON
TCON為定時/計數(shù)器T0、Tl的控制器,同時也鎖存了T0、Tl的溢出中斷請求信號標(biāo)志和外部中斷請求信號標(biāo)志,其各位的定義如下:
TFl:定時器T1的溢出中斷申請位。定時器Tl被允許計數(shù)以后,從初值開始加1計數(shù),當(dāng)產(chǎn)生溢出時置TFl=1,向CPU請求中斷,直到CPU響應(yīng)該中斷時才由硬件清0。
TR1:定時/計數(shù)器T1的啟停控制位。TR1=1時,定時器T1開始計數(shù)工作,TR1=0時,TI停止計數(shù)。TR1狀態(tài)由軟件設(shè)置。
TF0:定時器T0的溢出中斷申請位。T0被允許計數(shù)以后,從初值開始加1計數(shù),當(dāng)產(chǎn)生溢出時,硬件自動置TF0為1,向CPU請求中斷,當(dāng)CPU響應(yīng)該中斷后,該位由硬件清0。
TR0:定時/計數(shù)器T0的啟??刂莆?。TR0=1時,定時器T0開始計數(shù)工作;TR0=0時,T0停止計數(shù)。TR0狀態(tài)由軟件設(shè)置。
IE1:外部中斷(
P3.3)請求標(biāo)志位。當(dāng)CPU檢測到在(P3.3)引腳上出現(xiàn)的外部中斷信號(低電平或脈沖下降沿)時,由硬件自動將該位置位,請求中斷。當(dāng)CPU響應(yīng)中斷進入中斷服務(wù)程序后,該位被硬件自動清0(指脈沖邊沿觸發(fā)方式,電平觸發(fā)方式時不能由硬件清0)。
IT1:外部中斷(P3.3)觸發(fā)方式控制位。由軟件來置1或清0,以控制外部中斷1的觸發(fā)類型。當(dāng)IT1=0時為邊沿觸發(fā)方式(即由高變低的下降沿觸發(fā)中斷),CPU在每個機器周期采樣(P3.3)引腳輸入電平,若相繼的兩次采樣中一個周期采樣為高電平,接著下一個周期采樣為低電平,則視為有中斷請求信號產(chǎn)生,置位IEl。采用邊沿觸發(fā)方式時,外部中斷源輸入的高電平和低電平時間必須保持1個機器周期,才能保證CPU可靠地檢測到由高到低的負跳變。當(dāng)IT1=0時,設(shè)定為低電平觸發(fā)中斷方式,當(dāng)(P3.3)引腳輸入低電平時,有中斷請求信號產(chǎn)生,置位IEl,申請中斷。采用電平觸發(fā)方式時,外部中斷輸入引腳(P3.3)必須保持低電平有效,直到該中斷被CPU響應(yīng)為止。同時,在該中斷服務(wù)程序執(zhí)行完之前,外部中斷輸入引腳(P3.3)的有效電平必須被撤銷,否則將產(chǎn)生另一次中斷。
IE0:外部中斷(P3.2)請求標(biāo)志位。外部中斷0產(chǎn)生中斷請求信號時,硬件自動將該位置為1,請求中斷,當(dāng)中斷響應(yīng)之后,該位被清0,其功能與IE1類同。
IT0:外部中斷(P3.2)觸發(fā)方式控制位。IT0=0時,外部中斷0為低電平觸發(fā)方式;IT0=1時,外部中斷0為邊沿觸發(fā)方式,其功能和ITl類似。
2)串行口控制寄存器SCON
SCON為串行口控制寄存器,SCON的低兩位鎖存串行口接收中斷和發(fā)送中斷標(biāo)志RI和TI,其格式如下:
TI:串行口發(fā)送中斷標(biāo)志位。在串行口發(fā)送完一組數(shù)據(jù)時,TI由硬件自動置為1,請求中斷。當(dāng)CPU響應(yīng)中斷進入中斷服務(wù)程序后,TI狀態(tài)不能被硬件自動清除,必須在中斷服務(wù)程序中由軟件來清除。
RI:串行口接收中斷標(biāo)志位。在串行口接收完一組數(shù)據(jù)時,RI由硬件自動置為1,請求中斷。當(dāng)CPU響應(yīng)中斷進入中斷服務(wù)程序后,TI狀態(tài)不能被硬件自動清除,必須在中斷服務(wù)程序中由軟件來清除。其他各位是控制串行口的工作狀態(tài)的,與中斷沒有關(guān)系,在后續(xù)章節(jié)進行介紹。單片機系統(tǒng)復(fù)位之后,TCON、SCON中各位均為0,應(yīng)用時應(yīng)注意各位的初始狀態(tài)。
MCS-51單片機中,當(dāng)中斷源申請中斷時首先要置位相應(yīng)的中斷標(biāo)志位,CPU檢測到中斷標(biāo)志位之后才決定是否響應(yīng)。當(dāng)CPU響應(yīng)了中斷請求,相應(yīng)的標(biāo)志位就要被清除,否則CPU在執(zhí)行完本次中斷服務(wù)程序之后還要再次響應(yīng)該中斷請求,會造成混亂。因此在應(yīng)用中需要注意中斷請求的撤銷以及中斷標(biāo)志的清除。
3.中斷控制
MCS-51單片機有兩個特殊功能寄存器,用于中斷系統(tǒng)的控制,分別為中斷允許寄存器IE和中斷優(yōu)先級寄存器IP。
1)中斷允許寄存器IE
IE控制CPU對中斷源的開放或屏蔽,以及每個中斷源是否允許中斷,其格式為
EA:CPU中斷開放標(biāo)志。EA=1,CPU開放中斷;EA=0,CPU屏蔽所有的中斷請求。
ES:串行中斷允許位。ES=l,允許串行口中斷;ES=0,禁止串行口中斷。
ETI:定時/計數(shù)器Tl溢出中斷允許位。ETl=1,允許Tl中斷;ETl=0,禁止Tl中斷。
EXl:外部中斷l(xiāng)中斷允許位。EX1=l,允許外部中斷1中斷;EXl=0,禁止外部中斷1中斷。
ET0:定時/計數(shù)器T0溢出中斷允許位。ET0=1,允許T0中斷;ET0=0,禁止T0中斷。
EX0:外部中斷0中斷允許位。EX0=1,允許外部中斷0中斷;EX0=0,禁止外部中斷0中斷。
MCS-51單片機復(fù)位后,IE中各位均被清0,即禁止所有中斷。因此,想要開放所需要的中斷請求,則必須在程序中用軟件指令來實現(xiàn)。
2)中斷優(yōu)先級寄存器IP
MCS-51單片機具有兩個中斷優(yōu)先級,每個中斷源可編程為高優(yōu)先級中斷或低優(yōu)先級中斷,并可實現(xiàn)二級中斷嵌套。特殊功能寄存器IP就是用來設(shè)定各中斷源優(yōu)先級別的,其格式如下:
PS:串行口中斷優(yōu)先級控制位。PS=1,設(shè)定串行口為高優(yōu)先級中斷;PS=0,設(shè)定串行口為低優(yōu)先級中斷。
PT1:定時/計數(shù)器T1中斷優(yōu)先級控制位。PT1=1,設(shè)定定時/計數(shù)器T1為高優(yōu)先級中斷;PT1=0,設(shè)定定時/計數(shù)器T1為低優(yōu)先級中斷。
PX1:外部中斷1中斷優(yōu)先級控制位。PX1=l,設(shè)定外部中斷1為高優(yōu)先級中斷;PX1=0,設(shè)定外部中斷1為低優(yōu)先級中斷。
PT0:定時/計數(shù)器T0中斷優(yōu)先級控制位。PT0=1,設(shè)定定時/計數(shù)器T0為高優(yōu)先級中斷;PT0=0,設(shè)定定時/計數(shù)器T0為低優(yōu)先級中斷。
PX0:外部中斷0中斷優(yōu)先級控制位。PX0=1,設(shè)定外部中斷0為高優(yōu)先級中斷;PX0=0,設(shè)定外部中斷0為低優(yōu)先級中斷。當(dāng)系統(tǒng)復(fù)位后,IP各位均為0,所有中斷設(shè)置為低優(yōu)先級中斷。
通過設(shè)置IP寄存器把各中斷源的優(yōu)先級分為高、低兩級,它們遵循兩條基本原則:
①低優(yōu)先級中斷可以被高優(yōu)先級中斷所中斷,反之不能。
②一種中斷一旦得到響應(yīng),與它同級的中斷不能再中斷它。
當(dāng)CPU同時收到幾個同一優(yōu)先級別的中斷請求時,哪一個的請求得到服務(wù)取決于內(nèi)部的硬件查詢順序,CPU將按自然優(yōu)先級順序確定響應(yīng)哪個中斷請求。其自然優(yōu)先級由硬件形成,排列如表4.1所示。表4.1中斷源的內(nèi)部查詢次序4.1.3中斷處理過程
中斷處理過程可分為三個階段:中斷響應(yīng)、中斷處理和中斷返回。
1.中斷響應(yīng)
1)中斷響應(yīng)條件
單片機響應(yīng)中斷的條件為中斷源有請求(中斷允許寄存器IE相應(yīng)位置1),且CPU開中斷(即EA=1)。這樣,在每個機器周期的S5P2期間,對所有中斷源按用戶設(shè)置的優(yōu)先級和內(nèi)部規(guī)定的優(yōu)先級進行順序檢測,并可在S6期間找到所有有效的中斷請求。如有中斷請求,且滿足下列條件,則在下一個機器周期的S1期間響應(yīng)中斷,否則將丟棄中斷采樣的結(jié)果:
①無同級或高級中斷正在處理。②現(xiàn)行指令執(zhí)行到最后一個機器周期且已結(jié)束。
③若現(xiàn)行指令為RETI或訪問IE、IP的指令時,執(zhí)行完該指令且緊隨其后的另一條指令也已執(zhí)行完畢。
2)中斷響應(yīng)過程
CPU響應(yīng)中斷后,首先置位相應(yīng)的優(yōu)先級觸發(fā)器,然后把斷點地址壓入堆棧保護,并將響應(yīng)的中斷矢量地址裝入程序計數(shù)器,轉(zhuǎn)入該中斷服務(wù)程序進行處理。各中斷源與之對應(yīng)的矢量地址見表4.2。表4.2中斷源及其對應(yīng)的矢量地址對于有些中斷源,CPU在響應(yīng)中斷后會自動清除中斷標(biāo)志,如定時器溢出標(biāo)志TF0、TF1以及邊沿觸發(fā)方式下的外部中斷標(biāo)志IE0、IE1;而有些中斷標(biāo)志不會自動清除,只能由用戶用軟件清除,如串行口的接收發(fā)送中斷標(biāo)志RI、TI;在電平觸發(fā)方式下的外部中斷標(biāo)志IE0和IE1則是根據(jù)引腳的電平變化的,CPU無法直接干預(yù),需在引腳外加硬件(如D觸發(fā)器)使其自動撤銷外部中斷請求。
中斷服務(wù)程序從矢量地址開始執(zhí)行,一直到中斷返回指令“RETI”為止。
3)中斷響應(yīng)時間
所謂中斷響應(yīng)時間,是指CPU檢測到中斷請求信號到轉(zhuǎn)入中斷服務(wù)程序入口所需要的機器周期數(shù)。了解中斷響應(yīng)時間對設(shè)計實時測控應(yīng)用系統(tǒng)有重要指導(dǎo)意義。
MCS-51單片機響應(yīng)中斷的最短時間為三個機器周期。若CPU檢測到中斷請求信號的時間正好是一條指令的最后一個機器周期,則不需等待就可以立即響應(yīng)。所謂響應(yīng)中斷,就是由內(nèi)部硬件執(zhí)行一條長調(diào)用指令,需要兩個機器周期,加上檢測需要的一個機器周期,一共需要三個機器周期才開始執(zhí)行中斷服務(wù)程序。中斷響應(yīng)的最長時間由下列情況決定:若中斷檢測時正在執(zhí)行RETI或訪問IE或IP指令的第一個機器周期,則包括檢測在內(nèi)需要兩個機器周期(以上三條指令均需兩個機器周期);若緊接著要執(zhí)行的指令恰好是執(zhí)行時間最長的乘、除法指令,則其執(zhí)行時間均為四個機器周期;再用兩個機器周期執(zhí)行一條長調(diào)用指令才轉(zhuǎn)入中斷服務(wù)程序。這樣,總共需要8個機器周期。其他情況下的中斷響應(yīng)時間一般為3~8個機器周期。
2.中斷處理
CPU響應(yīng)中斷結(jié)束后即轉(zhuǎn)至中斷服務(wù)程序的入口。從中斷服務(wù)程序的第一條指令開始到返回指令為止,這個過程稱為中斷處理或中斷服務(wù)。中斷處理包括兩部分內(nèi)容:一是保護現(xiàn)場;二是為中斷源服務(wù)。
保護現(xiàn)場是指保護PSW、工作寄存器、專用寄存器等數(shù)據(jù)。如果在中斷服務(wù)程序中要用這些寄存器,則在進入中斷服務(wù)之前應(yīng)將它們的內(nèi)容保護起來。在中斷結(jié)束時,即執(zhí)行RETI指令之前,再恢復(fù)這些寄存器的內(nèi)容,這一動作稱為恢復(fù)現(xiàn)場。
中斷服務(wù)是針對中斷源的具體要求進行的處理。
3.中斷返回
中斷服務(wù)程序中,最后一條指令是中斷返回指令RETI,該指令的功能是結(jié)束本次中斷服務(wù),返回到原程序。在執(zhí)行RETI指令時,將壓入堆棧的中斷點地址彈出并送回程序計數(shù)器,使程序返回到原來被中斷處繼續(xù)執(zhí)行,同時清除相應(yīng)的優(yōu)先級觸發(fā)器。4.1.4中斷請求的撤除
中斷源發(fā)出中斷請求后,CPU首先置位相應(yīng)的中斷標(biāo)志位,然后通過對中斷標(biāo)志位的檢測決定是否響應(yīng)中斷,所以撤除中斷請求就是要清除中斷標(biāo)志。CPU響應(yīng)某中斷請求后,在該中斷返回之前,應(yīng)將其對應(yīng)的中斷標(biāo)志位復(fù)位,否則CPU在返回主程序后將再次響應(yīng)該中斷。MCS-51單片機各個中斷源標(biāo)志位的清除方法不相同。
對于定時器T0和定時器T1的溢出中斷,CPU在響應(yīng)中斷后,由硬件自動清除TF0或TF1標(biāo)志位,即中斷請求自動撤銷,無需采取其他措施。對于串行口的中斷,CPU響應(yīng)中斷后,硬件不能自動清除TI和RI標(biāo)志位,因此在CPU響應(yīng)中斷后,必須在中斷服務(wù)程序中用軟件來清除相應(yīng)的中斷標(biāo)志位,以撤銷中斷請求。
外部中斷請求的撤消與設(shè)置的中斷觸發(fā)方式有關(guān)。對于邊沿觸發(fā)方式的外部中斷,CPU在響應(yīng)中斷后,也是由硬件自動將IE0或IEl標(biāo)志位清除的,無需采取其他措施。對于電平觸發(fā)方式的外部中斷,在硬件上,CPU對和引腳的信號完全沒有控制(在專用寄存器中,沒有相應(yīng)的中斷請求標(biāo)志),因此,需要另外采取硬件措施撤銷外部中斷請求。圖4.3給出了一種常用的撤銷外部中斷的電路。圖4.3撤銷外部中斷請求電路外部中斷請求信號通過D觸發(fā)器加到單片機引腳上。當(dāng)外部中斷請求信號使D觸發(fā)器的CLK端發(fā)生正跳變時,由于D端接地,Q端輸出0,向單片機發(fā)出中斷請求。CPU響應(yīng)中斷后,利用一根口線,如P1.0作應(yīng)答線,在中斷服務(wù)程序中用下面兩條指令來撤除中斷請求。
ANLP1.0,#0FEH
ORLP1.0,#01H
第一條指令使P1.0為0,而P1口其他各位的狀態(tài)不變。由于P1.0與直接置1端相連,因而D觸發(fā)器Q=1,撤除了中斷請求信號。第二條指令將P1.0變成1,使以后產(chǎn)生的新的外部中斷請求信號又能向單片機申請中斷。
4.1.5中斷應(yīng)用舉例
MCS-51單片機的中斷系統(tǒng)在應(yīng)用時,應(yīng)先進行初始化,即進行開中斷,設(shè)置中斷觸發(fā)方式等。下面通過舉例來說明中斷系統(tǒng)的應(yīng)用。
例4.1
現(xiàn)有4臺設(shè)備A、B、C、D,需要向單片機申請中斷,試設(shè)計相應(yīng)的電路并編寫程序。
解:根據(jù)要求,四個設(shè)備相當(dāng)于四個中斷源,而單片機本身只有兩個中斷源,故需要擴展外部中斷源。本題采用P1口的4位和外部中斷結(jié)合,形成四個中斷,高電平有效。電路如圖4.4所示。圖4.4擴展四個外部中斷源電路4.2.1定時/計數(shù)器的結(jié)構(gòu)及工作原理
1.定時/計數(shù)器的結(jié)構(gòu)
MCS-51單片機內(nèi)部的定時/計數(shù)器邏輯結(jié)構(gòu)如圖4.5所示,它由6個特殊功能寄存器組成。其中,TMOD為定時/計數(shù)器方式控制寄存器,用來設(shè)置兩個16位定時/計數(shù)器T0和T1的工作方式;TCON為定時/計數(shù)器控制寄存器,主要用來控制定時/計數(shù)器T0和T1的啟動和停止。兩個16位的定時/計數(shù)器T0(TH0和TL0)和T1(TH1和TL1)用于設(shè)置定時或計數(shù)的初值。4.2定時/計數(shù)器圖4.5定時/計數(shù)器邏輯結(jié)構(gòu)圖
2.定時/計數(shù)器的工作原理
MCS-51單片機內(nèi)部的兩個16位可編程的定時/計數(shù)器T0和T1均有定時和計數(shù)功能。T0和T1的工作方式及功能選擇、定時時間、啟動方式等均可以通過編程對相應(yīng)特殊功能寄存器TMOD和TCON進行設(shè)置來實現(xiàn),計數(shù)值也由軟件命令設(shè)置于16位的定時/計數(shù)器(TH0、TL0或TH1、TL1)中。
16位定時/計數(shù)器是一個二進制的加1寄存器,當(dāng)啟動后就開始從所設(shè)定的計數(shù)初始值開始加1計數(shù),寄存器計滿后,會自動產(chǎn)生溢出并提出中斷請求。定時與計數(shù)兩種模式下的計數(shù)方式不相同,通常選擇T0和T1工作在定時方式時,計數(shù)器對內(nèi)部時鐘機器周期數(shù)進行計數(shù),即每個機器周期寄存器加1;選擇T0和T1工作在計數(shù)方式時,計數(shù)脈沖來自外部輸入引腳T0和T1,用于對外部事件進行計數(shù),當(dāng)外部輸入引腳上出現(xiàn)由1到0的跳變時,計數(shù)器的值加1(如果外接一時鐘源,當(dāng)然也可將其作為定時的基準(zhǔn)源)。
定時/計數(shù)器是單片機中工作相對獨立的部件,當(dāng)設(shè)定好其工作方式及功能并啟動后,它就會獨立地進行計數(shù),不再占用CPU的時間,直到計數(shù)溢出,才向CPU申請中斷處理,它是一個工作效率高且工作靈活的部件。4.2.2定時/計數(shù)器的工作方式及控制器
定時/計數(shù)器是可編程的,因此,在使用前必須對其進行初始化,設(shè)定其工作方式、計數(shù)初值等。
1.定時/計數(shù)器方式控制寄存器TMOD(89H)
定時/計數(shù)器T0、T1都有四種工作方式,可通過程序?qū)MOD進行設(shè)置來選擇,其各位定義如下:
TMOD的低4位用于定時/計數(shù)器T0的工作方式選擇,高4位用于定時/計數(shù)器T1的工作方式選擇。
GATE:門控位,用于控制定時/計數(shù)器的啟動是否受外部中斷請求信號的控制。如果GATE=1,定時/計數(shù)器T0的啟動受芯片引腳(P3.2)控制,定時/計數(shù)器T1的啟動受芯片引腳(P3.3)控制;如果GATE=0,定時/計數(shù)器的啟動與引腳和無關(guān)。一般情況下GATE=0。
C/:定時或計數(shù)功能選擇位。當(dāng)=1時為計數(shù)方式;當(dāng)=0時為定時方式。
M1、M0:定時/計數(shù)器工作方式選擇位。MCS-51單片機的定時/計數(shù)器有四種工作方式,如表4.3所示。表4.3定時/計數(shù)器工作方式的選擇
2.定時/計數(shù)器控制寄存器TCON
TCON用于控制定時/計數(shù)器的啟、停、溢出標(biāo)志和外部中斷信號觸發(fā)方式,其各位定義如下:
TCON的高4位與定時/計數(shù)器相關(guān),其低4位與外部中斷相關(guān),其各位的定義在4.1.2節(jié)已經(jīng)講述,在此不再贅述。
3.定時/計數(shù)器的工作方式
1)方式0
方式0為13位定時/計數(shù)器。13位計數(shù)寄存器由TH0(TH1)的高8位和TL0(TL1)的低5位構(gòu)成,TL0(TL1)中的高3位不用。其結(jié)構(gòu)如圖4.6所示。圖4.6T0(或T1)方式0的結(jié)構(gòu)當(dāng)C/=1時,圖中多路開關(guān)自動地接到下面,定時/計數(shù)器工作在計數(shù)狀態(tài),加法計數(shù)器對T0(T1)引腳上的外部脈沖計數(shù)。計數(shù)值由下式確定:
N=213-x=8192-x
式中,N為計數(shù)值,x是計數(shù)器的初值。x=8191時為最小計數(shù)值1,x=0時為最大計數(shù)值8192,即計數(shù)范圍為1~8192。定時/計數(shù)器在每個機器周期的S5P2期間采樣T0(T1)引腳輸入信號,若一個機器周期的采樣值為1,下一個機器周期的采樣值為0,則計數(shù)器加1。由于識別一個高電平到低電平的跳變需兩個機器周期,因此對外部計數(shù)脈沖的頻率應(yīng)小于fosc/24,且高電平與低電平的延續(xù)時間均不得小于1個機器周期。當(dāng)C/
=0時為定時器方式,多路開關(guān)自動地接到上面,加1計數(shù)器對機器周期脈沖Tcy計數(shù),每個機器周期計數(shù)器加1。定時時間由下式確定:
T=N×Tcy=(8192-x)Tcy
式中,Tcy為單片機的機器周期。如果振蕩頻率fosc=12MHz,則Tcy=1μs,定時時間范圍為1~8192μs。
可用程序?qū)?~8191的某一數(shù)送入TH0(TH1)、TL0(TL1)作為初值。TH0(TH1)、TL0(TL1)從初值開始加1計數(shù),直至溢出。所以初值不同,定時時間或計數(shù)值也不同。必須注意的是,加法計數(shù)器溢出后,必須用程序重新對TH0(TH1)、TL0(TL1)設(shè)置初值,否則下一次加法計數(shù)器將從0開始計數(shù)。外部中斷對于定時器的控制作用表現(xiàn)在:當(dāng)GATE=0時,或門被封鎖,信號無效,或門輸出常1,打開與門,TR0直接控制定時器0的啟動和關(guān)閉;當(dāng)GATE=1時,與門的輸出由的輸入電平和TR0位的狀態(tài)來共同決定。若TR0=1則與門打開,外部信號電平通過引腳直接開啟或關(guān)斷定時器T0,當(dāng)為高電平時,允許計數(shù),否則停止計數(shù);若TR0=0,則與門被封鎖,控制開關(guān)被關(guān)斷,停止計數(shù)。
2)方式1
方式1是16位定時/計數(shù)器,其結(jié)構(gòu)與方式0類似,唯一的區(qū)別在于計數(shù)器的位數(shù)不同。方式1的加1計數(shù)器由TH0(TH1)的8位和TL0(TL1)的8位構(gòu)成。
在方式1時,計數(shù)器的計數(shù)值由下式確定:
N=216-x=65536-x
計數(shù)范圍為1~65536。
定時器的定時時間由下式確定:
T=N×Tcy=(65536-x)Tcy
如果fosc=12MHz,則Tcy=1μs,定時范圍為1~65536μs。
3)方式2
方式2是能自動重裝計數(shù)初值的8位計數(shù)器。方式2中把16位的計數(shù)器拆成兩個8位計數(shù)器,低8位作計數(shù)器用,高8位用以保存計數(shù)初值。當(dāng)?shù)?位計數(shù)產(chǎn)生溢出時,將溢出中斷標(biāo)志位置1,同時又將保存在高8位中的計數(shù)初值重新裝入低8位計數(shù)器中,繼續(xù)計數(shù),循環(huán)不止。方式2的邏輯結(jié)構(gòu)如圖4.7所示。
在工作方式2時,計數(shù)器的計數(shù)值由下式確定:
N=28-x=256-x
計數(shù)范圍為1~256。
定時器的定時值由下式確定:
T=N×Tcy=(256-x)Tcy
如果fosc=12MHz,則Tcy=1μs,定時范圍為1~256μs。圖4.7T0(或T1)方式2的結(jié)構(gòu)
4)方式3
定時/計數(shù)器T0和T1在前三種工作方式下,其功能完全相同。但工作方式3對T0和T1是大不相同的。當(dāng)T1設(shè)置為工作方式3時,它將保持初始值不變,并停止計數(shù),其狀態(tài)相當(dāng)于將啟停控制位TR1設(shè)為0,因此T1不能工作在方式3下。
若將T0設(shè)為方式3,TL0和TH0被分成兩個互相獨立的8位計數(shù)器,其邏輯結(jié)構(gòu)如圖4.8所示。其中,TL0用原T0的各控制位、引腳和中斷源,即C/、GATE、TR0、TF0和T0(P3.4)引腳、(P3.2)引腳。TL0除僅用8位寄存器外,其功能和操作與方式0(13位計數(shù)器)、方式1(16位計數(shù)器)完全相同。TL0也可設(shè)置為定時器方式或計數(shù)器方式。圖4.8T0方式3的結(jié)構(gòu)
TH0只能用作定時器,對機器周期計數(shù)。它占用了定時器T1的控制位TR1和T1的中斷標(biāo)志位TF1,其啟停僅受TR1的控制。
當(dāng)把T0設(shè)置為方式3時,T1可工作在方式0、方式1以及方式2下,但由于TH0占用了T1的啟停控制位TR1和中斷標(biāo)志位TF1,因而此時T1只能由功能選擇位C/來控制運行,不能產(chǎn)生溢出中斷申請,這時T1適用于不需要中斷控制的定時器場合,如用作串行口的波特率發(fā)生器等。4.2.3定時/計數(shù)器應(yīng)用舉例
單片機上電復(fù)位后,TMOD、TCON等特殊功能寄存器都處于清0狀態(tài),因而要想使定時/計數(shù)器按用戶要求工作,必須先進行初始化設(shè)置和計數(shù)初值的確定等工作。
1.定時/計數(shù)器初始化
定時/計數(shù)器初始化的內(nèi)容包含以下幾點:
(1)確定定時/計數(shù)器的工作模式及工作方式,即給TMOD置相應(yīng)的控制字。
(2)計算計數(shù)初值,送入計數(shù)器TH0、TL0或TH1、TL1中。
(3)根據(jù)使用要求確定是否需要開放中斷,若使用溢出中斷功能,則需要對中斷允許寄存器IE以及中斷優(yōu)先級寄存器IP進行設(shè)置。
(4)給定時/計數(shù)器控制寄存TCON送入命令字,啟動定時/計數(shù)器工作。
2.定時/計數(shù)器計數(shù)初值計算
定時/計數(shù)器T0和T1在系統(tǒng)復(fù)位之后均為0,若需要改變其計數(shù)值,則需要預(yù)先設(shè)置一定的計數(shù)初值。
1)定時器的初值計算
當(dāng)選擇定時功能時,計數(shù)器是對機器周期進行計數(shù)。設(shè)T為定時時間,x為計數(shù)器的初值,n為計數(shù)器位數(shù),單片機系統(tǒng)時鐘頻率為fosc,則計數(shù)初值可通過如下公式計算:
2)計數(shù)功能的初值計算
選擇計數(shù)功能時,計數(shù)脈沖由外部引腳引入,是對外部脈沖進行計數(shù),計數(shù)初值可由下式確定:
x=2n-N
式中,N為計數(shù)值,其他參數(shù)的定義同定時器初值計算公式。
3.應(yīng)用舉例
例4.2
用定時/計數(shù)器T1進行外部事件計數(shù),每計數(shù)1000個脈沖后,定時/計數(shù)器T1轉(zhuǎn)為定時工作方式,定時10ms后又轉(zhuǎn)為計數(shù)方式,如此循環(huán)不止。假定fosc為6MHz,用方式1編程。
解:將T1在定時和計數(shù)兩種方式下輪換工作,首先讓T1工作在方式1。
T1為定時器時初值:
T1為計數(shù)器時初值:
x+1000=216
x=64536=FC18H
CPU與外部的信息交換稱為通信。通信的基本方式可分為并行通信和串行通信兩種。并行通信是指構(gòu)成信息的二進制字符的各位數(shù)據(jù)同時傳送的通信方法。并行通信的主要特點是傳輸速度快,在短距離通信中占優(yōu)勢,對長距離數(shù)據(jù)傳輸來說,因為信號線太多導(dǎo)致線路復(fù)雜,成本高。串行通信是指構(gòu)成信息的二進制字符的各位數(shù)據(jù)一位一位順序地傳送的通信方式。串行通信線路簡單,成本低但傳輸速度慢,適用于遠距離傳輸。此處著重介紹串行通信的基礎(chǔ)知識和MCS-51單片機的串行接口功能及其應(yīng)用。4.3串行通信及其接口4.3.1串行通信的基礎(chǔ)知識
串行通信又分為異步通信和同步通信兩種方式。在單片機中,主要使用異步通信方式。
1.異步通信和同步通信
1)異步通信
在異步通信中,被傳送的信息通常是一個字符代碼或一個字節(jié)數(shù)據(jù),它們都以規(guī)定的相同傳送格式(字符幀格式)一幀一幀地發(fā)送或接收。發(fā)送端和接收端各有一套彼此獨立、互不同步的通信機構(gòu),可以由各自的時鐘來控制數(shù)據(jù)的發(fā)送和接收。
一個字符在異步傳送中又稱為一幀數(shù)據(jù),字符幀也稱數(shù)據(jù)幀,由起始位、數(shù)據(jù)位、奇偶校驗位和停止位四部分組成,如圖4.9所示。
起始位:為邏輯“0”信號,位于字符幀開頭,占一位,表示發(fā)送端開始發(fā)送一幀
信息。
數(shù)據(jù)位:緊跟起始位之后就是數(shù)據(jù)位。在數(shù)據(jù)位中,低位在前(左),高位在后(右)。根據(jù)字符編碼方式的不同,數(shù)據(jù)位可取5位、6位、7位或8位,數(shù)據(jù)的位數(shù)沒有嚴(yán)格的
限制。
奇偶校驗位:數(shù)據(jù)位發(fā)送或接收完之后,可發(fā)送奇偶校驗位,它只有一位,用于傳送數(shù)據(jù)的有限差錯檢測或表示數(shù)據(jù)的一種性質(zhì),是發(fā)送和接收雙方預(yù)先約定好的一種檢驗方式。它可以是奇校驗也可以是偶校驗,有時也可以不用奇偶校驗。
停止位:為邏輯“1”信號,此位位于字符幀末尾,表示一幀字符信息已發(fā)送完畢。停止位可以是1、1.5或2位,在實際應(yīng)用中由用戶根據(jù)需要確定。圖4.9異步通信的字符幀格式(a)無空閑信字符幀;(b)有空閑位字符幀在串行異步傳送中,通信雙方必須事先約定:
(1)字符格式。雙方要事先約定字符的編碼形式、奇偶校驗形式及起始位和停止位的規(guī)定。例如用ASCII碼通信,有效數(shù)據(jù)為7位,加一個奇偶校驗位、一個起始位和一個停止位共10位。當(dāng)然停止位也可以大于1位。
(2)波特率。波特率就是數(shù)據(jù)的傳送速率,即每秒鐘傳送的二進制位數(shù),單位為位/秒。它與字符的傳送速率(字符/秒)之間有以下關(guān)系:
波特率=一個字符的二進制編碼位數(shù)×字符/秒
發(fā)送端與接收端的波特率必須一致。
異步串行通信的傳送速率一般為50~9600波特,常用于計算機到CRT終端和字符打印機之間的通信、直通電報以及無線電通信的數(shù)據(jù)發(fā)送等。
2)同步通信
同步通信是一種連續(xù)串行傳送數(shù)據(jù)的通信方式,一次通信只傳送一幀信息。這里的信息幀與異步通信中的字符幀不同,通常含有若干個數(shù)據(jù)字符,即數(shù)據(jù)塊,它們都是由同步字符、數(shù)據(jù)字符和校驗字符三部分組成的。一旦檢測到同步字符,下面就是按順序傳送的數(shù)據(jù)塊。同步通信數(shù)據(jù)傳送格式如圖4.10所示。
同步通信的缺點是要求發(fā)送時鐘和接收時鐘保持嚴(yán)格同步,故發(fā)送時除應(yīng)和發(fā)送的波特率保持一致外,還要求發(fā)送時鐘和接收時鐘必須保持嚴(yán)格同步。故這種方式對硬件要求較高。圖4.10同步通信的格式
3)波特率
波特率是指每秒鐘傳送二進制數(shù)碼的位數(shù)(亦稱比特數(shù)),單位是b/s。波特率是串行通信的重要指標(biāo),用于表征數(shù)據(jù)傳送的速度。波特率越高,數(shù)據(jù)傳輸速度越快。
在異步串行通信中,接收設(shè)備和發(fā)送設(shè)備除了采用相同的字符幀格式外,還必須保持相同的傳送波特率,這樣才能成功地傳送數(shù)據(jù)。
4)串行通信的制式
串行通信中,信息數(shù)據(jù)在通信線路兩端的通信設(shè)備之間傳遞,按照數(shù)據(jù)傳遞方向和兩端通信設(shè)備所處的工作狀態(tài),可將串行通信分為單工、半雙工和全雙工三種工作制式,如圖4.11所示。圖4.11串行通信數(shù)據(jù)傳送的制式(a)單工傳送;(b)半雙工傳送;(c)全雙工傳送
(1)單工制式。單工方式下,通信線路A端只有發(fā)送站,B端只有接收站,數(shù)據(jù)只能從A站發(fā)至B站,數(shù)據(jù)傳送是單向的,不能反向傳送信息,如圖4.11(a)所示。
(2)半雙工制式。如圖4.11(b)所示,數(shù)據(jù)傳送是雙向的,但任一時刻數(shù)據(jù)只能從A站發(fā)至B站,或者從B站發(fā)至A站,也就是說,只能是一方發(fā)送另一方接收,不能同時發(fā)送和接收。
(3)全雙工制式。全雙工制式下,通信線路A、B兩端都有發(fā)送器和接收器,如圖4.11(c)所示,數(shù)據(jù)傳送也是雙向的,A、B兩端可以同時發(fā)送和接收數(shù)據(jù)。因此,工作效率比前兩種都要高。4.3.2MCS-51單片機的串行通信接口及其工作方式
MCS-51單片機中有一個全雙工的串行口,通過軟件編程,它可作異步通信串行口(UART)使用,也可作同步移位寄存器用。它的字符幀格式可以是8位、10位或11位,可以設(shè)置多種波特率,能方便地構(gòu)成雙機、多機串行通信接口,從而能實現(xiàn)51單片機系統(tǒng)之間點對點的單機通信、多機通信以及與系統(tǒng)機的單機或多機通信。
1.串行口的結(jié)構(gòu)與功能
MCS-51串行口結(jié)構(gòu)框圖如圖4.12所示。MCS-51單片機串行口主要由兩個物理上獨立的串行數(shù)據(jù)緩沖寄存器SBUF、發(fā)送控制器、接收控制器、輸入移位寄存器和輸出控制門組成。兩個特殊功能寄存器SCON和PCON用來控制串行口的工作方式和波特率。發(fā)送緩沖寄存器SBUF只能寫,不能讀;接收緩沖寄存器SBUF只能讀,不能寫。兩個緩沖寄存器共用一個地址99H,可以用讀/寫指令區(qū)分。圖4.12MCS-51單片機串行口內(nèi)部結(jié)構(gòu)示意圖串行發(fā)送時,通過“MOVSBUF,A”寫指令,CPU把累加器A的內(nèi)容寫入發(fā)送緩沖器SBUF,再由TXD引腳一位一位地向外發(fā)送;串行接收時,接收端從RXD一位一位地接收數(shù)據(jù),直到收到一個完整的字符數(shù)據(jù)后通知CPU,再通過“MOVA,SBUF”讀指令,CPU從接收緩沖器SBUF讀出數(shù)據(jù),送到累加器A中。發(fā)送和接收的過程可以采用中斷方式,從而可以大大提高CPU的效率。
2.與串行口相關(guān)的控制寄存器
MCS-51單片機中,與串行口工作相關(guān)的特殊功能寄存器有四個,分別為串行口控制寄存器SCON、電源控制寄存器PCON、中斷允許寄存器IE和中斷優(yōu)先級寄存器IP。其中PCON、IE、IP在前面章節(jié)已經(jīng)介紹過,在此只介紹SCON。
SCON用于串行口的工作方式選擇、接收和發(fā)送控制以及串行口的狀態(tài)標(biāo)志,是一個可位尋址的8位特殊功能寄存器。其各位的定義如下:
SM0、SM1:由軟件置位或清0,用于選擇串行口四種工作方式,如表4.4所示。
SM2:多機通信控制位。在方式2和方式3中,如SM2=1,則接收到的第9位數(shù)據(jù)(RB8)為0時不啟動接收中斷標(biāo)志RI(即RI=0),并且將接收到的前8位數(shù)據(jù)丟棄;RB8為1時,才將接收到的前8位數(shù)據(jù)送入SBUF,并置位RI,產(chǎn)生中斷請求。當(dāng)SM2=0時,則不論第9位數(shù)據(jù)為0或為1,都將前8位數(shù)據(jù)裝入SBUF中,并產(chǎn)生中斷請求。在方式0時,SM2必須為0。
REN:允許串行接收控制位。若REN=0,則禁止接收;若REN=1,則允許接收。該位由軟件置位或復(fù)位。表4.4串行口工作方式和波特率對照表
TB8:發(fā)送數(shù)據(jù)D8位。在方式2和方式3時,TB8為所要發(fā)送的第9位數(shù)據(jù)。在多機通信中,以TB8位的狀態(tài)表示主機發(fā)送的是地址還是數(shù)據(jù):TB8=0為數(shù)據(jù);TB8=1為地址。TB8也可用作數(shù)據(jù)的奇偶校驗位。該位由軟件置位或復(fù)位。
RB8:接收數(shù)據(jù)D8位。在方式2和方式3時,接收到的第9位數(shù)據(jù)可作為奇偶校驗位或地址幀或數(shù)據(jù)幀的標(biāo)志。方式1時,若SM2=0,則RB8是接收到的停止位。在方式0時,不使用RB8位。
TI:發(fā)送中斷標(biāo)志位。在方式0時,當(dāng)發(fā)送數(shù)據(jù)第8位結(jié)束后,或在其他方式發(fā)送停止位后,由內(nèi)部硬件使TI置位,向CPU請求中斷。CPU在響應(yīng)中斷后,必須用軟件清零。此外,TI也可供查詢使用。
RI:接收中斷標(biāo)志位。在方式0時,當(dāng)接收數(shù)據(jù)的第8位結(jié)束后,或在其他方式接收到停止位中間由內(nèi)部硬件使RI置位,向CPU請求中斷。同樣,在CPU響應(yīng)中斷后,也必須用軟件清零。RI也可供查詢使用。
串行發(fā)送中斷標(biāo)志TI和串行接收中斷標(biāo)志RI是同一個中斷源,CPU事先不知道是發(fā)送中斷TI還是接收中斷RI產(chǎn)生的中斷請求,所以在全雙工通信時,必須由軟件來判別。單片機復(fù)位時,SCON所有位均清0。
3.串行口工作方式
MCS-51單片機串行口有四種工作方式,分別為方式0、方式1、方式2和方式3。
1)方式0
方式0下,串行口用作同步移位寄存器,其波特率固定為單片機振蕩頻率的1/12,串行傳送數(shù)據(jù)8位為一幀,由RXD(P3.0)引腳發(fā)送或接收,低位在前,高位在后。TXD(P3.1)引腳輸出同步移位脈沖信號,可以作為外部擴展的移位寄存器的移位時鐘,因而串行口方式0常用于擴展外部并行I/O口。方式0發(fā)送時,CPU執(zhí)行一條將數(shù)據(jù)寫入發(fā)送緩沖器SBUF的指令,即啟動發(fā)送,TXD輸出移位脈沖,串行口即將8位數(shù)據(jù)以振蕩頻率的1/12的波特率從RXD端串行發(fā)送出去。1幀(8位)數(shù)據(jù)發(fā)送完畢時,各控制端均恢復(fù)原狀態(tài),只有TI保持高電平,呈中斷申請狀態(tài)。要再次發(fā)送數(shù)據(jù)時,必須由軟件將TI清0。方式0接收時,在RI=0的條件下,將REN(SCON.4)置1就啟動一次接收過程。此時RXD為串行數(shù)據(jù)接收端,TXD依然輸出同步移位脈沖。REN置1啟動了接收控制器。TXD輸出同步移位脈沖控制外接芯片逐位輸入數(shù)據(jù),波特率為fosc/12。在內(nèi)部移位脈沖作用下,RXD上的串行數(shù)據(jù)逐位移入移位寄存器。當(dāng)8位數(shù)據(jù)(一幀)全部移入移位寄存器后,接收控制端失效,停止輸出移位脈沖,將8位數(shù)據(jù)并行送入接收數(shù)據(jù)緩沖器SBUF中保存。與此同時,接收控制器硬件置接收中斷標(biāo)志RI=1,向CPU申請中斷。CPU響應(yīng)中斷后,用軟件使RI=0,使移位寄存器開始接收下一幀信息,然后通過讀接收緩沖器的指令,讀取SBUF中的數(shù)據(jù)。
2)方式1
在方式1下,串行口為10位通用異步通信接口。一幀信息包括1位起始位(0)、8位數(shù)據(jù)位(低位在前)和l位停止位(1)。TXD是發(fā)送端,RXD是接收端。其傳送波特率可變。
方式1發(fā)送時,CPU執(zhí)行一條寫SBUF指令便啟動了串行口發(fā)送,數(shù)據(jù)從TXD輸出。在指令執(zhí)行期間,CPU送來“寫SBUF”信號,將并行數(shù)據(jù)送入SBUF,啟動發(fā)送控制器。經(jīng)一個機器周期,發(fā)送控制端有效,通過輸出控制門從TXD上逐位輸出一幀信息。一幀信息發(fā)送完畢后,發(fā)送控制端失效,發(fā)送控制器硬件置發(fā)送中斷標(biāo)志TI=1,向CPU申請中斷。CPU響應(yīng)中斷后,由軟件使TI=0,可發(fā)送下一幀信息。方式1接收時,數(shù)據(jù)從RXD端輸入。當(dāng)REN置1后,就允許接收器接收,接收器便以波特率的16倍速率采樣RXD端電平。當(dāng)采樣到1到0的跳變時,啟動接收器接收,并復(fù)位內(nèi)部的16分頻計數(shù)器,以實現(xiàn)同步。計數(shù)器的16個狀態(tài)把1位時間等分成16份,并在每位的第7、8、9個計數(shù)狀態(tài)時采樣RXD電平。因此,每一位的數(shù)值采樣3次,至少有兩次相同的值才被確認。如果起始位接收到的值不是0,則起始位無效,復(fù)位接收電路。在檢測到一個1到0的跳變時,再重新啟動接收器。如果接收值為0,起始位有效,則開始接受本幀的其余信息。在RI=0的狀態(tài)下,接收到停止位為1(或SM2=0)時,將停止位送入RB8,8位數(shù)據(jù)進入接收緩沖器SBUF,并置中斷標(biāo)志RI=1。在方式1的接收器中設(shè)置有數(shù)據(jù)辨識功能,當(dāng)同時滿足兩個條件時,接收的數(shù)據(jù)才有效,且實現(xiàn)裝載SBUF、把RB8及RI置1,接收控制器再次采樣RXD的負跳變,以便接收下一幀數(shù)據(jù)。這兩個條件是RI=0和SM2=0,或接收到的停止位為1。如果這兩個條件任意一個不滿足,則所接收的數(shù)據(jù)無效,接收控制器不再恢復(fù)。
3)方式2與方式3
方式2、方式3都是11位異步通信接口,發(fā)送或接收的一幀信息由11位組成,其中1位起始位、9位數(shù)據(jù)位(低位在前)和1位停止位。方式2與方式3僅波特率不同,方式2的波特率為fosc/32(SMOD=1時)或fosc/64(SMOD=0時),而方式3的波特率由定時/計數(shù)器T1及SMOD決定。
在方式2、方式3時,發(fā)送、接收數(shù)據(jù)的過程與方式1的基本相同,不同之處僅在于對第9位數(shù)據(jù)的處理上。發(fā)送時,第9位數(shù)據(jù)由SCON中的TB8位提供。接收數(shù)據(jù)時,當(dāng)?shù)?位數(shù)據(jù)移入移位寄存器后,將8位數(shù)據(jù)裝入SBUF,第9位數(shù)據(jù)裝入SCON中的RB8。
4.波特率設(shè)置
串行口的四種工作方式對應(yīng)著三種波特率模式。
對于方式0,波特率是固定的,為fosc/12。
對于方式2,波特率由振蕩頻率fosc和SMOD(PCON.7)所決定,其對應(yīng)公式為
波特率=
當(dāng)SMOD=1時,波特率為fosc/32。
對于方式1和方式3,波特率由定時/計數(shù)器T1的溢出率和SMOD決定,即由下式確定:
波特率=
其中,溢出率取決于計數(shù)速率和定時器的預(yù)置值。當(dāng)利用TI作波特率發(fā)生器時,通常選用方式2,即8位自動重裝初值模式,其中TLl作計數(shù)器,THl存放自動重裝的定時初值。因此,對Tl初始化時,寫入方式控制字TMOD=00100000B。這樣每過“256-x”個機器周期,定時器Tl就會產(chǎn)生一次溢出,溢出周期為
溢出率為溢出周期的倒數(shù),因此,波特率的公式還可寫成:
波特率=實際應(yīng)用時,總是先確定波特率,再計算定時器T1的定時初值。根據(jù)上述波特率的公式,得出計算定時器方式2的初值x的公式為
x=256-4.3.3串行通信應(yīng)用舉例
MCS-51單片機的全雙工串行口是可編程的,所以在應(yīng)用時應(yīng)先對其進行初始化,即確定串行口的工作方式以及波特率等。
1.利用串行口擴展并行I/O接口
當(dāng)串行口工作于方式0時,是移位寄存器方式,此時可以利用串行口外接移位寄存器將串行口擴展為并行口。
例4.3
利用串行口方式0擴展I/O接口,接8個共陰極數(shù)碼管,使片內(nèi)RAM的30H~37H單元的內(nèi)容依次顯示在8個數(shù)碼管上。
解:串行口工作在方式0,在TXD和RXD引腳連接串入并出的移位寄存器74LS164即可實現(xiàn)題
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 未來五年蔬菜企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略分析研究報告
- 未來五年飛機安全服務(wù)行業(yè)跨境出海戰(zhàn)略分析研究報告
- 未來五年細香蔥行業(yè)直播電商戰(zhàn)略分析研究報告
- 未來五年調(diào)色系統(tǒng)企業(yè)縣域市場拓展與下沉戰(zhàn)略分析研究報告
- 未來五年網(wǎng)絡(luò)存儲設(shè)備企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略分析研究報告
- 2025屆中國大唐集團有限公司遼寧分公司高校畢業(yè)生招聘筆試參考題庫附帶答案詳解(3卷)
- 慶元縣2024浙江麗水市慶元縣緊缺專業(yè)人才招聘20人(二)筆試歷年參考題庫典型考點附帶答案詳解(3卷合一)
- 車行店鋪轉(zhuǎn)讓合同范本
- 個體超市轉(zhuǎn)讓合同范本
- 策劃公司合同范本
- 2025天津大學(xué)招聘15人備考考試試題及答案解析
- 2025年山西大地環(huán)境投資控股有限公司社會招聘116人備考題庫有答案詳解
- QGW1799.1電力安全工作規(guī)程變電部分無附錄
- 核對稿100和200單元概述
- GB/T 19809-2005塑料管材和管件聚乙烯(PE)管材/管材或管材/管件熱熔對接組件的制備
- 無機及分析化學(xué)考試題(附答案)
- 體質(zhì)中醫(yī)基礎(chǔ)理論課件
- 滬教版2022年五年級語文上冊期末整理復(fù)習(xí)全能練習(xí)單
- 電力工程檢驗批質(zhì)量驗收記錄【完整版】
- 五年制診斷學(xué)水腫血尿等
- 建筑結(jié)構(gòu)鑒定和加固技術(shù)講義
評論
0/150
提交評論