




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第3章MCS-51單片機(jī)的內(nèi)部資源3.1單片機(jī)的中斷系統(tǒng)3.2單片機(jī)的定時器/計數(shù)器3.3單片機(jī)的串行通信本章小結(jié)
3.1單片機(jī)的中斷系統(tǒng)
3.1.1單片機(jī)中斷系統(tǒng)的概念當(dāng)CPU正在處理某事件的時候,外部或者內(nèi)部發(fā)生的某一事件請求CPU迅速去處理時,CPU暫時中止當(dāng)前的工作,轉(zhuǎn)到中斷服務(wù)處理程序去處理所發(fā)生的事件。中斷服務(wù)處理完該事件后,再返回到原來被中止的地方繼續(xù)原來的工作,這樣的過程稱為中斷。中斷過程如圖3-1所示。圖3-1中斷響應(yīng)過程
3.1.2單片機(jī)中斷系統(tǒng)的結(jié)構(gòu)和組成
MCS-51系列單片機(jī)的中斷系統(tǒng)有5個中斷源,且有2個中斷優(yōu)先級(高優(yōu)先級和低優(yōu)先級),每個中斷源的優(yōu)先級都可以由軟件來設(shè)定,也可實現(xiàn)兩級中斷服務(wù)程序嵌套。MCS-51單片機(jī)中斷系統(tǒng)的組成:4個與中斷有關(guān)的特殊功能寄存器(TCON、SCON的相關(guān)位作中斷源的標(biāo)志位)、中斷允許控制寄存器IE、中斷優(yōu)先級管理(IP寄存器)和中斷順序查詢邏輯電路等。
1.中斷系統(tǒng)的組成
MCS-51系列單片機(jī)的中斷系統(tǒng)結(jié)構(gòu)示意圖如圖3-2所示。中斷系統(tǒng)共有5個中斷源,其中,中斷入口地址是固定的,詳見表3-1。圖3-2MCS-51系列單片機(jī)的中斷系統(tǒng)結(jié)構(gòu)示意圖
TCON為定時器/計數(shù)器的控制寄存器,字節(jié)地址為88H,可位尋址,該寄存器中既包括了定時器/計數(shù)器T0和T1的溢出中斷請求標(biāo)志位TF0和TF1,也包括了兩個外部中斷請求的標(biāo)志位IE1和IE0。寄存器TCON的格式如圖3-3所示。圖3-3TCON中的中斷請求標(biāo)志位
寄存器TCON中與中斷系統(tǒng)有關(guān)的各標(biāo)志位的功能如下:
(1)?IT0:選擇外部中斷請求0為跳沿觸發(fā)方式還是電平觸發(fā)方式。
(2)?IE0:外部中斷請求0的中斷請求標(biāo)志位。
(3)?IT1:外部中斷請求1為跳沿觸發(fā)方式還是電平觸發(fā)方式,功能與IT0類似。
(4)?IE1:外部中斷請求1的中斷請求標(biāo)志位,功能與IE0類似。
(5)?TF0:定時器/計數(shù)器T0的溢出中斷請求標(biāo)志位。
(6)?TF1:定時器/計數(shù)器T1的溢出中斷請求標(biāo)志位,功能和TF0類似。
SCON為串行口控制寄存器,字節(jié)地址為98H。SCON的低二位鎖存串行口的發(fā)送中斷和接收中斷的中斷請求標(biāo)志為TI和RI,其格式如圖3-4所示。圖3-4SCON中的中斷請求標(biāo)志位
(1)?TI:發(fā)送中斷請求標(biāo)志位。
CPU將一個字節(jié)的數(shù)據(jù)寫入發(fā)送緩沖器SBUF時,就啟動一幀串行數(shù)據(jù)的發(fā)送,串口每發(fā)送完一幀串行數(shù)據(jù)后,硬件自動置TI標(biāo)志位為“1”。CPU響應(yīng)該中斷時,TI標(biāo)志并不自動清零,必須在中斷服務(wù)程序中用軟件對TI標(biāo)志清零。
(2)?RI:接收中斷請求標(biāo)志位。
在串口接收完一個數(shù)據(jù)幀后,硬件自動對RI標(biāo)志位置“1”。CPU響應(yīng)中斷時,RI標(biāo)志并不自動清零,必須在中斷服務(wù)程序中用軟件對RI標(biāo)志位清零。
3.1.3中斷控制
MCS-51的CPU對中斷源的開放或屏蔽由片內(nèi)的中斷允許寄存器IE控制,字節(jié)地址為A8H,可位尋址,中斷允許寄存器IE的格式格式如圖3-5所示。圖3-5中斷允許寄存器IE的格式
1.中斷允許寄存器IE
中斷允許寄存器IE對中斷的開放和關(guān)閉為兩級控制,有一個總的中斷控制位EA(IE.7位)。當(dāng)EA=0時,所有的中斷請求被屏蔽,CPU對任何中斷請求都不接受;當(dāng)EA=1時,CPU開放中斷,但5個中斷源的中斷請求是否允許,還要由IE中的低5位所對應(yīng)的5個中斷請求控制位的狀態(tài)來決定。IE中各位的功能如下:
(1)?EA:中斷允許總控制位。
?EA=0:CPU屏蔽所有的中斷請求(CPU關(guān)中斷)。
?EA=1:CPU開放所有的中斷請求(CPU開中斷)。
(2)?ES:串行口中斷允許位。
?ES=0:禁止串行口中斷。
?ES=1:允許串行口中斷。
(3)?ET1:定時器/計數(shù)器T1的溢出中斷允許位。
?ET1=0:禁止T1溢出中斷。
?ET1=1:允許T1溢出中斷。
(4)?EX1:外部中斷1中斷允許位。
?EX1=0:禁止外部中斷1中斷。
?EX1=1:允許外部中斷1中斷。
(5)?ET0:定時器/計數(shù)器T0的溢出中斷允許位。
?ET0=0:禁止T0溢出中斷。
?ET0=1:允許T0溢出中斷。
(6)?EX0:外部中斷0中斷允許位。
?EX0=0:禁止外部中斷0中斷。
?EX0=1:允許外部中斷0中斷。
MCS-51復(fù)位后,IE清零,所有中斷請求被禁止。IE中與各個中斷源相應(yīng)的位用指令置“1”或清零,即可允許或禁止各中斷源的中斷申請。若使某一個中斷源被允許中斷,除了IE相應(yīng)的位被置“1”外,還必須使EA位置“1”。
2.中斷優(yōu)先級寄存器IP
MCS-51的中斷請求源有兩個中斷優(yōu)先級,每一個中斷請求源可由軟件定為高優(yōu)先級中斷或低優(yōu)先級中斷,也可實現(xiàn)兩級中斷嵌套。所謂兩級中斷嵌套,就是MCS-51正在執(zhí)行低優(yōu)先級中斷的服務(wù)程序時,可被高優(yōu)先級中斷請求所中斷,處理完畢高優(yōu)先級中斷后,再返回低優(yōu)先級服務(wù)程序繼續(xù)執(zhí)行的過程。
關(guān)于各中斷源的中斷優(yōu)先級的關(guān)系,可歸納為下面兩條基本規(guī)則:
(1)低優(yōu)先級可被高優(yōu)先級中斷,反之則不能。
(2)同級中斷不會被它的同級中斷源所中斷。若CPU正在執(zhí)行高優(yōu)先級的中斷,則不能被任何中斷源所中斷。
MCS-51的片內(nèi)有一個中斷優(yōu)先級寄存器IP,其字節(jié)地址為B8H,可位尋址,可以用程序改變其內(nèi)容,即可進(jìn)行各中斷源中斷優(yōu)先級的設(shè)置。IP寄存器的格式如圖3-6所示。圖3-6中斷優(yōu)先級寄存器IP的格式
中斷優(yōu)先級寄存器IP各位的含義:
(1)?PS:串行口中斷優(yōu)先級控制位。
?PS=1:高優(yōu)先級中斷。
?PS=0:低優(yōu)先級中斷。
(2)PT1:定時器T1中斷優(yōu)先級控制位。
?PT1=1:高優(yōu)先級中斷。
?PT1=0:低優(yōu)先級中斷。
(3)?PX1:外部中斷1中斷優(yōu)先級控制位。
?PX1=1:高優(yōu)先級中斷。
?PX1=0:低優(yōu)先級中斷。
(4)?PT0:定時器T0中斷優(yōu)先級控制位。
?PT0=1:高優(yōu)先級中斷。
?PT0=0:低優(yōu)先級中斷。
(5)?PX0:外部中斷0中斷優(yōu)先級控制位。
?PX0=1:高優(yōu)先級中斷。
?PX0=0:低優(yōu)先級中斷。
中斷優(yōu)先級控制寄存器IP的各位都可由軟件置“1”和清零,以改變各中斷源的中斷優(yōu)先級。
MCS-51復(fù)位后,IP的內(nèi)容為0,各個中斷源均為低優(yōu)先級中斷。
MCS-51的中斷系統(tǒng)有兩個不可尋址的“優(yōu)先級激活觸發(fā)器”,一個用來指示某高優(yōu)先級的中斷正在執(zhí)行,所有后來的中斷均被阻止;另一個用來指示某低優(yōu)先級的中斷正在執(zhí)行,所有同級中斷都被阻止,但不阻斷高優(yōu)先級的中斷請求。
若同時收到幾個同一優(yōu)先級的中斷請求時,優(yōu)先響應(yīng)哪一個中斷取決于內(nèi)部的查詢順序。查詢順序如下:外部中斷0、T0溢出中斷、T1溢出中斷、串口中斷的中斷優(yōu)先級依次降低,即外部中斷0的中斷優(yōu)先級最高,串口中斷的中斷優(yōu)先級最低。
3.1.4響應(yīng)中斷的條件
一個中斷請求如果要被響應(yīng),需滿足以下必要條件:
(1)?IE寄存器中的中斷允許總控制位EA=1。
(2)該中斷源發(fā)出中斷請求,即該中斷源對應(yīng)的中斷請求標(biāo)志為“1”。
(3)該中斷源的中斷允許位=1,即該中斷沒有被屏蔽。
(4)無同級或更高級中斷正在被服務(wù)。
各個中斷的中斷入口地址如表3-2所示。
中斷響應(yīng)是有條件的,并不是查詢到所有中斷請求都能被立即響應(yīng),當(dāng)遇到下列三種情況之一時,中斷響應(yīng)被封鎖。
(1)?CPU正在處理同級的或更高優(yōu)先級的中斷。
(2)所查詢的機(jī)器周期不是當(dāng)前正在執(zhí)行指令的最后一個機(jī)器周期,只有在當(dāng)前指令執(zhí)行完畢后,才能進(jìn)行中斷響應(yīng)。
(3)正在執(zhí)行的指令是RETI或是訪問IE或IP的指令,需要再去執(zhí)行完一條指令,才能響應(yīng)新的中斷請求。
如果存在上述三種情況之一,CPU將丟棄中斷查詢結(jié)果,不能對中斷進(jìn)行響應(yīng)。
3.1.5外部中斷的響應(yīng)時間
以外部中斷為例,在每個機(jī)器周期的S5P2期間,INT0和INT1引腳的電平被鎖存到TCON的IE0和IE1標(biāo)志位,CPU在下一個機(jī)器周期才會查詢這些值,這時如果滿足中斷響應(yīng)條件,下一條要執(zhí)行的指令將是一條硬件長調(diào)用指令,使該程序轉(zhuǎn)至中斷源矢量地址入口。硬件長調(diào)用指令本身要花費(fèi)2個機(jī)器周期,這樣從外部中斷請求有效到開始執(zhí)行中斷服務(wù)程序的第一條指令,中間要隔3個機(jī)器周期,這是最短的響應(yīng)時間,如果遇到中斷受阻的情況,則中斷響應(yīng)時間會更長一些。
3.1.6外部中斷的觸發(fā)方式
1.電平觸發(fā)方式
當(dāng)IT=0時,外部中斷為電平觸發(fā)方式。該方式下CPU在每個機(jī)器周期的S5P2期間對引腳采樣,若測得為低電平,則認(rèn)為有中斷申請,隨即使IE相應(yīng)標(biāo)志位置位;若測得為高電平,認(rèn)為無中斷申請或中斷申請已撤除,隨即清除IE相應(yīng)標(biāo)志位。在電平觸發(fā)方式中,CPU響應(yīng)中斷后不能自動清除IE標(biāo)志位,也不能由軟件清除IE標(biāo)志位,所以在中斷返回前必須撤消引腳上的低電平,否則將再次中斷造成出錯。
所有電平方式適合于外中斷以低電平輸入且中斷服務(wù)程序能清除外部中斷請求(即外部中斷輸入電平又變?yōu)楦唠娖?的情況。
2.下降沿觸發(fā)方式
當(dāng)IT=1時,外部中斷設(shè)置為邊沿觸發(fā)方式。CPU在每個機(jī)器周期的S5P2期間采樣INT引腳,若在連續(xù)兩個機(jī)器周期采樣到先高后低的電平變化,則將IE相應(yīng)標(biāo)志置“1”,此標(biāo)志一直保持到CPU響應(yīng)中斷時,才由硬件自動清除,這樣不會丟失中斷,但輸入的負(fù)脈沖寬度至少保持1個機(jī)器周期(若晶振頻率為12MHz,則為1μs),才能被CPU采樣到。外部中斷的跳沿觸發(fā)方式適合于以負(fù)脈沖形式輸入的外部中斷請求。
3.1.7單片機(jī)中斷請求的撤銷
CPU響應(yīng)某中斷請求后,在中斷返回(RETI)之前,該中斷請求應(yīng)該撤消,否則會引起另一次中斷。單片機(jī)各中斷源請求撤消的方法各不相同,分別如下:
(1)定時器0和定時器1的溢出中斷,CPU在響應(yīng)中斷后,就由硬件自動清除TF0或TF1標(biāo)志位。
(2)外部中斷請求的撤消與設(shè)置的中斷觸發(fā)方式有關(guān)。對于邊沿觸發(fā)方式的外部中斷,CPU在響應(yīng)中斷后,也是由硬件自動將IE0或IE1標(biāo)志位清除的。對于電平觸發(fā)方式的外部中斷請求的撤銷,除了標(biāo)志位清零之外,還需在中斷響應(yīng)后把中斷請求信號引腳從低電平強(qiáng)制改變?yōu)楦唠娖?,電平方式外部中斷請求的撤銷電路如圖3-7所示。圖3-7電平方式外部中斷請求的撤銷電路
(3)串行口的中斷。CPU響應(yīng)后,無法知道是接收中斷還是發(fā)送中斷,還需測試這兩個中斷標(biāo)志位的狀態(tài),以判定是接收操作還是發(fā)送操作,然后才能清除。硬件不能自動清除TI和RI標(biāo)志位,因此CPU響應(yīng)中斷后,須在中斷服務(wù)程序中用軟件清除相應(yīng)的中斷標(biāo)志位,以撤消中斷請求。
3.1.8單片機(jī)中斷服務(wù)子程序的設(shè)計
中斷系統(tǒng)的運(yùn)行必須與中斷服務(wù)子程序相配合才能正確使用。
1.中斷服務(wù)子程序設(shè)計的任務(wù)
中斷服務(wù)子程序的基本任務(wù)有如下四個:
(1)設(shè)置中斷允許控制寄存器IE,允許相應(yīng)的中斷請求源中斷。
(2)設(shè)置中斷優(yōu)先級寄存器IP,確定并分配所使用的中斷源的優(yōu)先級。
(3)對于外部中斷源,還要設(shè)置中斷請求是采用電平觸發(fā)還是跳沿觸發(fā)。
(4)編寫中斷服務(wù)程序,處理中斷請求。
2.中斷服務(wù)子程序的處理
CPU響應(yīng)中斷結(jié)束后即轉(zhuǎn)至中斷服務(wù)程序入口。從中斷服務(wù)程序的第一條指令開始到返回指令為止,這個過程稱為中斷處理或稱為中斷服務(wù)。一般情況下,中斷處理包括兩部分:一是保護(hù)現(xiàn)場;二是中斷源服務(wù)。
3.中斷服務(wù)子程序的返回
中斷處理程序的最后一條指令是中斷返回指令,它的功能是將斷點彈出送回PC中,使程序能返回到原來被中斷的程序繼續(xù)執(zhí)行。
3.1.9單片機(jī)外部中斷擴(kuò)充方法
MCS-51單片機(jī)為用戶提供了兩個外部中斷請求輸入端。在實際的應(yīng)用系統(tǒng)中,兩個外部中斷請求源往往不夠用,需對外部中斷源進(jìn)行擴(kuò)充。
1.利用定時器擴(kuò)充外部中斷源法
單片機(jī)系統(tǒng)中有兩個定時器、兩個內(nèi)部中斷標(biāo)志和外部計數(shù)輸入引腳。
2.中斷和查詢結(jié)合法
利用單片機(jī)的兩根外部中斷輸入線,每一根中斷輸入線可以通過線或的關(guān)系連接多個外部中斷源,同時利用輸入端口線作為各中斷的識別線。多外部中斷連接法電路見圖3-8中的多外部中斷源連接方法。
圖3-8多外部中斷連接法電路
3.2單片機(jī)的定時器/計數(shù)器
實現(xiàn)定時/計數(shù)有軟件延時、數(shù)字電路硬件定時和可編程定時/計數(shù)器三種主要方法:(1)軟件定時是讓機(jī)器執(zhí)行一個程序段,這個程序段本身沒有具體的執(zhí)行目的,通過正確的挑選指令和安排循環(huán)次數(shù)實現(xiàn)軟件延時。由于執(zhí)行每條指令都需要時間,執(zhí)行這一段程序所需要的時間就是延時時間。這種軟件定時占用CPU的執(zhí)行時間,降低了CPU的工作效率。
(2)數(shù)字電路硬件定時可采用小規(guī)模集成電路器件555,外接定時部件(電阻和電容)構(gòu)成。這樣的定時電路簡單,但要改變定時范圍,必須改變電阻和電容,且在硬件連接好后,修改不方便。
(3)可編程定時/計數(shù)器是為方便微機(jī)系統(tǒng)的設(shè)計和應(yīng)用而研制的,它即可硬件定時,又可以通過軟件編程來確定定時時間。MCS-51單片機(jī)內(nèi)部有兩個16位的定時/計數(shù)器T0
和T1。
3.2.1定時器/計數(shù)器的結(jié)構(gòu)與工作原理
定時器/計數(shù)器的實質(zhì)是加1計數(shù)器(16位),由高8位和低8位兩個寄存器組成。TMOD是定時器/計數(shù)器的工作方式寄存器,用于確定工作方式和功能;TCON是控制寄存器,用于控制T0、T1的啟動和停止及設(shè)置溢出標(biāo)志。
1.定時器/計數(shù)器的結(jié)構(gòu)
MCS-51單片機(jī)內(nèi)部定時器的邏輯結(jié)構(gòu)如圖3-9所示。圖3-9MCS-51單片機(jī)定時器/計數(shù)器邏輯結(jié)構(gòu)框圖
2.定時器/計數(shù)器的工作原理
定時/計數(shù)器對內(nèi)部的機(jī)器周期個數(shù)計數(shù)就實現(xiàn)了定時,對片外脈沖個數(shù)的計數(shù)就是計數(shù)功能。
在作定時器使用時,輸入的時鐘脈沖是由晶體振蕩器的輸出經(jīng)12分頻后得到的,所以定時器也可看作是對單片機(jī)機(jī)器周期個數(shù)的計數(shù)器,當(dāng)晶體振蕩器連接確定后,機(jī)器周期的時間也就確定了,這樣就實現(xiàn)了定時功能。
3.2.2T0和T1定時器/計數(shù)器的控制
MCS-51系列單片機(jī)的定時/計數(shù)器是一種可編程序的部件,在定時/計數(shù)器開始工作之前,CPU必須將一些命令(稱為控制字)寫入該定時/計數(shù)器,這個過程稱為定時/計數(shù)器的初始化。在初始化程序中,要將工作方式控制字寫入模式控制寄存器TMOD,工作狀態(tài)控制字(或相關(guān)位)寫入控制寄存器TCON。
1.定時器/計數(shù)器的模式控制寄存器TMOD
特殊功能寄存器TMOD為定時器的模式控制寄存器,占用的字節(jié)地址為89H,不可以進(jìn)行位尋址,該寄存器TMOD的定義格式如圖3-10所示。如果要定義定時器的工作方式,需要采用字節(jié)操作指令賦值,其中高4位用于定時器T1,低4位用于定時器T0。系統(tǒng)復(fù)位時TMOD所有位均為0。圖3-10模式控制寄存器TMOD的定義格式
2.控制寄存器TCON
TCON的字節(jié)地址為88H,可進(jìn)行位尋址(位地址為88H~8FH),用于控制定時器的啟、停及定時器的溢出標(biāo)志和外部中斷觸發(fā)方式等,控制寄存器TCON的定義格式如圖3-11
所示。圖3-11控制寄存器TCON的定義格式
其中低4位與外部中斷有關(guān),在前面已經(jīng)詳細(xì)介紹,高4位的功能如下:
(1)?TF0、TF1:分別為定時器T0、T1的計數(shù)溢出標(biāo)志位。
(2)?TR0、TR1:分別為定時器T0、T1的運(yùn)行控制位,可由軟件置“1”或清零。
3.2.3T0和T1定時器/計數(shù)器的工作方式
定時/計數(shù)器可以通過特殊功能寄存器TMOD中的控制位的設(shè)置來選擇定時器方式或計數(shù)器方式;通過M1、M0兩位的設(shè)置選擇4種工作方式,分別為方式0、方式1、方式2和方式3?,F(xiàn)以定時/計數(shù)器T0為例加以說明。
1.方式0
當(dāng)M1M0為00時,定時器選定為方式0工作。在這種方式下,16位寄存器(由特殊功能寄存器TL0和TH0組成)只用了13位,TL0的高3位未用,由TH0的8位和TL0的低5位組成一個13位的定時/計數(shù)器,其最大的計數(shù)次數(shù)為213次。如果單片機(jī)采用6MHz晶振,機(jī)器周期為2?μs,則該定時器的最大定時時間為214μs。定時/計數(shù)器工作方式0的邏輯結(jié)構(gòu)圖如圖3-12所示。
圖3-12定時/計數(shù)器工作方式0的邏輯結(jié)構(gòu)圖
2.方式1
當(dāng)M1M0為01時,定時器選定為方式1工作。在這種方式下,16位寄存器由特殊功能寄存器TL0和TH0組成一個16位的定時/計數(shù)器,其最大的計數(shù)次數(shù)應(yīng)為216次。如果單片機(jī)采用6MHz晶振,機(jī)器周期為2μs,則該定時器的最大定時時間為217μs。定時/計數(shù)器工作方式1的邏輯結(jié)構(gòu)圖如圖3-13所示。除了計數(shù)位數(shù)不同外,方式1與方式0的工作過程相同。圖3-13定時/計數(shù)器工作方式1的邏輯結(jié)構(gòu)圖
3.方式2
方式2是自動重裝初值的8位定時/計數(shù)器。方式0和方式1當(dāng)計數(shù)溢出時,計數(shù)器變?yōu)槿?,因此再循環(huán)定時的時候,需要反復(fù)重新用軟件給TH和TL寄存器賦初值,這樣會影響定時精度。方式2就是針對此問題而設(shè)置的。
當(dāng)M1M0為10時,定時器選定為方式2工作。在這種方式下,8位寄存器TL0作為計數(shù)器,TL0和TH0裝入相同的初值,當(dāng)計數(shù)溢出時,在置1溢出中斷標(biāo)志位TF0的同時,TH0的初值自動重新裝入TL0。在這種工作方式下其最大的計數(shù)次數(shù)應(yīng)為28次。如果單片機(jī)采用6MHz晶振,機(jī)器周期為2μs,則該定時器的最大定時時間為29μs。定時/計數(shù)器工作方式2的邏輯結(jié)構(gòu)圖如圖3-14所示。圖3-14定時/計數(shù)器工作方式2的邏輯結(jié)構(gòu)圖
4.方式3
當(dāng)M1M0為11時,定時器選定為方式3工作。方式3只適用于定時/計數(shù)器T0,定時/計數(shù)器T1不能工作在方式3。
定時/計數(shù)器T0分為兩個獨(dú)立的8位計數(shù)器:TL0和TH0,定時/計數(shù)器工作方式3的邏輯結(jié)構(gòu)圖如圖3-15所示。圖3-15定時/計數(shù)器工作方式3的邏輯結(jié)構(gòu)圖
3.2.4計數(shù)器模式對輸入信號的要求
T0(P3.4)和T1(P3.5)兩個引腳作為計數(shù)輸入端,外部輸入的脈沖在出現(xiàn)從1到0的負(fù)跳變時有效,計數(shù)器進(jìn)行加1。計數(shù)方式下,單片機(jī)在每個機(jī)器周期的S5P2時對外部計數(shù)脈沖進(jìn)行采樣。如果前一個機(jī)器周期采樣為高電平,后一個機(jī)器周期采樣為低電平,則為一個有效的計數(shù)脈沖,在下一個機(jī)器周期的S3P1進(jìn)行計數(shù)。由于采樣計數(shù)脈沖需要兩個機(jī)器周期,即24個振蕩周期,因此計數(shù)脈沖的頻率最高為振蕩脈沖頻率的。
3.2.5定時器/計數(shù)器的初始化編程
MCS-51定時/計數(shù)器的初始化編程過程如下。
1.初始化的步驟
(1)確定工作方式、操作模式、啟動控制方式:寫入TMOD、TCON寄存器。
(2)設(shè)置定時或計數(shù)器的初值:可直接將初值寫入TH0、TL0或TH1、TL1中。16位計數(shù)初值必須分兩次寫入對應(yīng)的計數(shù)器。
(3)根據(jù)要求是否采用中斷方式:直接對IE位賦值。開放中斷時,對應(yīng)位置“1”;采用程序查詢方式時,IE相應(yīng)位清零進(jìn)行中斷屏蔽。
(4)啟動定時器工作:可使用TR0=1或者TR1=1啟動。T0或T1若設(shè)置為軟啟動,即GATE設(shè)置為0時,以上指令執(zhí)行后,定時器即可開始工作。
2.計數(shù)初值的計算
若設(shè)最大計數(shù)值為2n,n為計數(shù)器位數(shù),各操作模式下的2n值為:
模式0:2n=8192,n=13。
模式1:2n=65536,n=16。
模式2:2n=256,n=8。
模式3:2n=256,n=8,定時器T0分成兩個獨(dú)立的8位計數(shù)器,所以TH0、TL0的最大計數(shù)值均為256。
單片機(jī)中的T0、T1定時器均為加1計數(shù)器,當(dāng)加到最大值(00H或0000H)時產(chǎn)生溢出,將TF0或者TF1位置“1”,可發(fā)出溢出中斷,因此計數(shù)器初值X的計算式為:X=2n?-?計
數(shù)值。
(1)計數(shù)工作方式時,對外部脈沖進(jìn)行計數(shù),其計數(shù)初值為:X=2n-計數(shù)值。
(2)定時工作方式時,對機(jī)器周期進(jìn)行計數(shù),故計數(shù)脈沖頻率為fcont=fosc/6,計數(shù)周期T=1/fcont,定時工作方式的計數(shù)初值X=2n-計數(shù)值=2n-t/T=2n-(fosc×t)/(12或6)。
3.3單片機(jī)的串行通信3.3.1串行口的結(jié)構(gòu)與功能MCS-51系列單片機(jī)有一個可編程的全雙工串行通信接口,它既可作為UART,也可作為同步移位寄存器,其幀格式可為8位、10位或11位,并可以設(shè)置各種不同的波特率,通過引腳RXD(P3.0,串行數(shù)據(jù)接收端)和引腳TXD(P3.1,串行數(shù)據(jù)發(fā)送端)與外界進(jìn)行通信。該接口不僅能同時進(jìn)行數(shù)據(jù)的發(fā)送和接收,還可作為一個移位寄存器使用。MCS-51系列單片機(jī)串行口的結(jié)構(gòu)框圖如圖3-16所示,主要由發(fā)送控制器、接收控制器和串行控制寄存器組成。圖3-16MCS-51串行口結(jié)構(gòu)框圖
由圖3-16可知,發(fā)送電路由發(fā)送SBUF和發(fā)送控制器等組成;接收電路由接收SBUF、接收移位寄存器和接收控制器等組成。發(fā)送SBUF和接收SBUF都是8位數(shù)據(jù)緩沖寄存器:發(fā)送SBUF用于存放將要發(fā)送的數(shù)據(jù),接收SBUF用于存放串行口接收到的數(shù)據(jù)。CPU可以通過執(zhí)行讀取和接收指令對它們進(jìn)行存取,具體過程如下:
(1)兩個在物理上獨(dú)立的接收、發(fā)送緩沖器SBUF,占用同一地址99H,可同時發(fā)送、接收數(shù)據(jù)。發(fā)送緩沖器只能寫入,不能讀出;接收緩沖器只能讀出,不能寫入。
(2)串行發(fā)送與接收的速率與移位時鐘同步,定時器T1作為串行通信的波特率發(fā)生器,T1溢出率經(jīng)2分頻(或不分頻)又經(jīng)16分頻作為串行發(fā)送或接收的移位時鐘。移位時鐘的速率即波特率。
(3)接收器是雙緩沖結(jié)構(gòu),在前一個字節(jié)被接收緩沖器讀出之前,第二個字節(jié)即開始被接收,但當(dāng)?shù)诙€字節(jié)接收完畢而前一個字節(jié)CPU未讀取時,就會丟失前一個字節(jié)
內(nèi)容。
(4)串行口的發(fā)送:SBUF=temp,一幀數(shù)據(jù)發(fā)送完畢,TI=1。
(5)串行口的接收:當(dāng)一幀數(shù)據(jù)接收完畢,RI=1,temp=SBUF。
(6)串行口是一個可編程接口,由串行口控制寄存器SCON和電源控制寄存器PCON設(shè)置。
3.3.2串行口的控制寄存器
要控制單片機(jī)的串口必須對相應(yīng)的控制寄存器進(jìn)行設(shè)置,和串口相關(guān)的寄存器有串行口控制寄存器(SCON)和串行口電源控制寄存器(PCON)。
1.串行口控制寄存器(SCON)的格式
串行口控制寄存器(SCON)用于設(shè)置串行口的工作方式、監(jiān)視串行口工作狀態(tài)、發(fā)送與接收的狀態(tài)控制等,它是一個既可字節(jié)尋址又可位尋址的特殊功能寄存器,地址為98H。串行口控制寄存器(SCON)的格式如圖3-17所示。圖3-17串行口控制寄存器(SCON)的格式
SCON各位的定義:
(1)SM0、SM1:工作方式選擇位。串行口工作方式選擇詳見表3-4。
(2)?SM2:方式2、方式3多機(jī)通信控制位。在方式2、3處于接收時,若SM2=1,且接收到第9位數(shù)RB8為0,則不能置位接收中斷標(biāo)志RI,接收數(shù)據(jù)失效;在方式1接收時,若SM2=1,則只有接收到有效的停止位,才能置位RI;在方式0時,SM2應(yīng)為0。
(3)?REN:串行口接收控制位,由軟件置位或清零。REN=1,允許接收;REN=0,禁止接收。
(4)?TB8:發(fā)送數(shù)據(jù)的第9位。在方式2和方式3中,要發(fā)送的第9位數(shù)據(jù)存放在TB8位,可用軟件置位或清零。它可作為通信數(shù)據(jù)的奇偶校驗位。在單片機(jī)的多機(jī)通信中,TB8常用來表示是地址幀還是數(shù)據(jù)幀,“1”表示地址幀,“0”表示數(shù)據(jù)幀。
(5)?RB8:在方式2和方式3中,接收到的第9位數(shù)據(jù)就存放在RB8。它可以是約定的奇偶校驗位。在單片機(jī)的多機(jī)通信中用它作為地址或數(shù)據(jù)標(biāo)識位。在方式1中,若SM2=0,則RB8存放已接收的停止位;在方式0中,該位未用。
(6)?TI:發(fā)送中斷請求標(biāo)志。在一幀數(shù)據(jù)發(fā)送完后被置位。在方式0時,發(fā)送第8位結(jié)束時由硬件置位;在方式1、2、3中,在停止位開始發(fā)送時由硬件置位。置位TI意味著向CPU提供“發(fā)送緩沖器已空”的信息,CPU響應(yīng)后發(fā)送下一幀數(shù)據(jù)。在任何方式中,TI都必須由軟件清零。
(7)?RI:接收中斷請求標(biāo)志。在接收到一幀數(shù)據(jù)后由硬件置位。在方式0時,當(dāng)接收第8位結(jié)束時由硬件置位;在方式1、方式2、方式3中,在接收到停止位的中間點時由硬件置位。RI=1,表示請求中斷,CPU響應(yīng)中斷后,從SBUF取出數(shù)據(jù)。但在方式1中,當(dāng)SM2=1時,若未接收到有效的停止位,則不會對RI置位。在任何方式中,RI都必須由軟件清零。
由圖3-16可知,串行口的中斷無論是接收中斷還是發(fā)送中斷,當(dāng)CPU響應(yīng)中斷時都進(jìn)入0023H程序地址,執(zhí)行串行口的中斷服務(wù)子程序,這時由軟件來判別是接收中斷,還是發(fā)送中斷。而中斷標(biāo)志必須在中斷服務(wù)子程序中加以清除,以防出現(xiàn)一次中斷多次響應(yīng)的現(xiàn)象。
2.串行口電源控制寄存器(PCON)的格式
PCON為電源控制寄存器,是特殊功能寄存器,地址為87H。PCON中的第7位與串行口有關(guān)。串行口電源控制寄存器(PCON)的格式如圖3-18所示。圖3-18串行口電源控制寄存器(PCON)的格式
3.3.3串行口的工作方式
MCS-51單片機(jī)串行口有方式0、方式1、方式2和方式3四種工作方式,現(xiàn)對每種工作方式下的特點作進(jìn)一步的說明。
1.方式0
方式0即同步移位寄存器輸入/輸出工作方式。8位串行數(shù)據(jù)的輸入或輸出都是通過RXD端,而TXD端用于輸出同步移位脈沖。波特率固定為單片機(jī)振蕩頻率(fosc)的1/12。
串行傳送數(shù)據(jù)8位為一幀(沒有起始、停止、奇偶校驗位),由RXD(P3.0)端輸出或輸入,低位在前,高位在后。TXD(P3.1)端輸出同步移位脈沖,可以作為外部擴(kuò)展的移位寄存器的移位時鐘,因而串行口方式0常用于擴(kuò)展外部并行I/O口。方式0的幀格式如圖3-19所示。
圖3-19方式0的幀格式
(1)方式0發(fā)送。
串行口可以外接串行輸入/并行輸出的移位寄存器,如74LS164,用以擴(kuò)展并行輸出口,方式0擴(kuò)展并行輸出口電路如圖3-20所示。當(dāng)CPU執(zhí)行一條將數(shù)據(jù)寫入發(fā)送緩沖器SBUF的指令時,產(chǎn)生一個正脈沖,串行口即把SBUF中的8位數(shù)據(jù)以fosc/12的固定波特率從RXD引腳串行輸出,低位在先,逐位移入74LS164。8位全部移完,TI=1。如要再發(fā)送,必須先將TI清零。串行發(fā)送時,外部可擴(kuò)展一片(或幾片)串入/并出的移位寄存器,方式0的發(fā)送時序如圖3-21所示。圖3-20方式0擴(kuò)展并行輸出口圖3-21方式0的發(fā)送時序
(2)方式0接收。
串行接收時,串行口可以擴(kuò)展一片(或幾片)并入/串出的移位寄存器,方式0擴(kuò)展并行入口電路如圖3-22所示,利用74LS165,用以擴(kuò)展并行輸入口。向串口的SCON寫入控制字(置為方式0,并置“1”REN位,同時RI=0)時,產(chǎn)生一個正脈沖,串行口即開始接收數(shù)據(jù)。RXD為數(shù)據(jù)輸入端,TXD端輸出的同步移位脈沖將74LS165逐位移入RXD端。8位全部移完,RI=1,表示一幀數(shù)據(jù)接收完。如要再發(fā)送,必須先將RI清零,方式0的接收時序如圖3-23所示。圖3-22方式0擴(kuò)展并行輸入口圖3-23方式0的接收時序
2.方式1
方式1時,一幀數(shù)據(jù)為10位,1個起始位(0),8個數(shù)據(jù)位,1個停止位(1),先發(fā)送或接收最低位,其幀格式如圖3-24所示。圖3-24方式1的幀格式
方式1時,其波特率是可變的,由定時器T1的計數(shù)溢出率決定。在串行通信中,常用定時器T1作為波特率發(fā)生器使用。通常選用定時方式2,避免因為重裝時間常數(shù)而帶來的定時誤差,其波特率由下式確定:
其中,SMOD為PCON寄存器最高位的值(0或1)。
T1溢出率為1s內(nèi)T1發(fā)生溢出的次數(shù),它與T1的工作方式有關(guān)。
T1溢出率的計算方法:
(1)方式1發(fā)送。
在TI=0時,當(dāng)執(zhí)行一條數(shù)據(jù)寫發(fā)送緩沖器SBUF的指令,就啟動發(fā)送。發(fā)送開始時,內(nèi)部發(fā)送控制信號變?yōu)橛行?,然后發(fā)送電路自動在8位發(fā)送字符前、后分別添加1位起始位和1位停止位,并在移位脈沖作用下,每經(jīng)過一個TX時鐘周期,便產(chǎn)生一個移位脈沖,并由TXD按照從低位到高位輸出一個數(shù)據(jù)位。8位數(shù)據(jù)位全部發(fā)送完畢后,TI也由硬件在發(fā)送停止位時置位,即TI=1,向CPU申請中斷。方式1的發(fā)送時序如圖3-25所示,圖中TX時鐘的頻率就是發(fā)送的波特率。圖3-25方式1的發(fā)送時序
(2)方式1接收。
接收操作可在RI=0和REN=1的條件下進(jìn)行。多接收器接收時,接收器以所選波特率的16倍速率采樣RXD端電平,檢測到RXD端輸入電平發(fā)生負(fù)跳變時(起始位),開始接收數(shù)據(jù)。內(nèi)部16分頻計數(shù)器的16個狀態(tài)把傳送每一位數(shù)據(jù)的時間16等分,在每個時間的7、8、9這三個計數(shù)狀態(tài),位檢測器采樣RXD端電平,接收的值是3次采樣中至少有兩次相同的值,這樣可以防止外界的干擾。位檢測采樣的頻率為RX時鐘頻率的16分頻。方式1的接收時序如圖3-26所示,圖中RX時鐘的頻率就是接收的波特率。圖3-26方式1的接收時序
當(dāng)一幀數(shù)據(jù)接收完畢,須同時滿足以下兩個條件,接收才真正有效:
①RI=0,即上一幀數(shù)據(jù)接收完成時,RI=1發(fā)出的中斷請求已被響應(yīng),SBUF中的數(shù)據(jù)已被取走,說明“接收SBUF”已空。
②SM2=0或收到的停止位=1(方式1時,停止位已進(jìn)入RB8),則收到的數(shù)據(jù)裝入SBUF和RB8(RB8裝入停止位),且置中斷標(biāo)志RI為“1”。
若上述兩個條件不能同時滿足,則收到的數(shù)據(jù)將丟失。
3.方式2和方式3
方式2和方式3下,串行口工作在11位異步通信方式。一個幀信息包含一個起始位(0)、8個數(shù)據(jù)位、一個可編程第9數(shù)據(jù)位和一個停止位(1)。其中可編程位是SCON中的TB8位,在8個數(shù)據(jù)位之后,可作奇偶校驗位或地址/數(shù)據(jù)幀的標(biāo)志位使用,方式2和方式3的幀格式如圖3-27所示。方式2和方式3兩者的差異僅在于通信波特率有所不同:方式2的波特率是固定的,由主頻fosc經(jīng)32或64分頻后提供,方式3的波特率是可變的。圖3-27方式2和方式3的幀格式
方式2的波特率由下式確定:
方式3的波特率由下式確定:
(1)方式2(或3)發(fā)送。
發(fā)送前,先根
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 社區(qū)食堂營運(yùn)管理制度
- 租房收納歸類管理制度
- pvc包裝管理制度
- 船廠設(shè)備防護(hù)管理制度
- 職業(yè)健康輻射管理制度
- 社區(qū)老年安全管理制度
- 騰訊會議日程管理制度
- 宿舍等車間管理制度
- 上海鴛鴦鍋管理制度
- 科普設(shè)備使用管理制度
- GB/T 7939.1-2024液壓傳動連接試驗方法第1部分:管接頭
- T-CEA 7027-2024 軌道交通用電梯數(shù)據(jù)采集智能分析預(yù)警系統(tǒng)及智慧運(yùn)維大數(shù)據(jù)管理平臺功能要求
- 得寶松封閉治療
- 低壓配電系統(tǒng)維護(hù)保養(yǎng)及操作規(guī)程
- 肝癌科普講座課件
- 石膏固定術(shù)課件
- 閑魚開店運(yùn)營計劃書模板
- 《變壓器保護(hù)培訓(xùn)》課件
- 湖南省長郡中學(xué)、雅禮中學(xué)等四校2024屆數(shù)學(xué)高二下期末調(diào)研試題含解析
- 水上交通行業(yè)安全培訓(xùn)
- 《院感培訓(xùn)護(hù)士》課件
評論
0/150
提交評論