




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、單片機定時器串行口及中斷系統(tǒng)1 第第4章定時器、串行口及中斷系統(tǒng)章定時器、串行口及中斷系統(tǒng) 4.1 MCS-51單片機的中斷系統(tǒng)單片機的中斷系統(tǒng) 4.2 MCS-51單片機片內(nèi)定時器單片機片內(nèi)定時器/計數(shù)計數(shù) 4.3 MCS-51單片機片內(nèi)串行口單片機片內(nèi)串行口 單片機定時器串行口及中斷系統(tǒng)2 定時定時/計數(shù)器計數(shù)器(Timer/Counter)是單片機的一個重要組 成部分,在實際的應(yīng)用中,通過定時或計數(shù)可以實現(xiàn)很多 重要的功能。 單片機應(yīng)用系統(tǒng)中,經(jīng)常需要和其它計算機進行數(shù)據(jù) 通信。MCS-51片內(nèi)設(shè)立了一個可編程的全雙工串行通信接全雙工串行通信接 口口,可作為通用異步接收/發(fā)送器UART,
2、也可作為同步移 位寄存器。 中斷中斷是指CPU正在處理某任務(wù)的過程中,由于計算機系 統(tǒng)內(nèi)、外的某種原因,發(fā)生的某一事件請求CPU及時處理, 于是CPU暫時中止當(dāng)前的工作,自動轉(zhuǎn)去處理所發(fā)生的事 件。處理完該事件后,再返回到原來被中止的斷點處繼續(xù) 工作,這樣的過程稱為中斷。 單片機定時器串行口及中斷系統(tǒng)3 4.1 MCS-51單片機的中斷系統(tǒng)單片機的中斷系統(tǒng) 4.1.1 中斷的概念中斷的概念 4.1.1.1 中斷系統(tǒng)的基本概念中斷系統(tǒng)的基本概念 中斷是指CPU正在處理某任 務(wù)的過程中, 由于計算機系統(tǒng) 內(nèi)、外的某種原因,發(fā)生的某一 事件請求CPU及時處理,于是 CPU暫時中止當(dāng)前的工作,自動 轉(zhuǎn)
3、去處理所發(fā)生的事件。處理 完該事件后,再返回到原來被 中止的斷點處繼續(xù)工作,這樣 的過程稱為中斷中斷。 單片機定時器串行口及中斷系統(tǒng)4 當(dāng)CPU正在處理一個中斷 請求的時候,外部又發(fā)生了 一個優(yōu)先級比它高的中斷事 件,請求CPU及時處理。于 是,CPU暫時中斷當(dāng)前的中 斷服務(wù)工作,轉(zhuǎn)而處理所發(fā) 生的事件。處理完畢,再回 到原來被中斷的地方,繼續(xù) 原來的中斷處理工作。這樣 的過程,稱為中斷嵌套中斷嵌套,這 樣的中斷系統(tǒng)稱為多級中斷 系統(tǒng)。 MCS-51具有2個中斷優(yōu)先級,可以實現(xiàn)2級中斷嵌套。 單片機定時器串行口及中斷系統(tǒng)5 與中斷相關(guān)的名詞介紹如下: (1)中斷系統(tǒng):)中斷系統(tǒng):實現(xiàn)中斷功能的
4、硬件系統(tǒng)和軟件系統(tǒng)統(tǒng)稱 為中斷系統(tǒng) (2)中斷源:)中斷源:產(chǎn)生中斷的請求源稱為中斷源。 (3)中斷請求:)中斷請求:中斷源向CPU提出的處理請求,稱為中斷 請求或中斷申請。 (4)中斷響應(yīng)過程:)中斷響應(yīng)過程:CPU暫時中止自身的事物,轉(zhuǎn)去處理 事件的過程,稱為CPU的中斷響應(yīng)過程。 (5)中斷服務(wù):)中斷服務(wù):對事件的整個處理過程,稱為中斷服務(wù) (或中斷處理)。 (6)中斷返回:)中斷返回:中斷處理完畢,在返回到原來被中止的地 方,稱為中斷返回。 單片機定時器串行口及中斷系統(tǒng)6 4.1.2.2中斷系統(tǒng)的優(yōu)勢中斷系統(tǒng)的優(yōu)勢 中斷系統(tǒng)是計算機的重要組成部分,中斷的使用消除 了CPU在查詢方式中
5、的等待現(xiàn)象,大大提高了CPU的工作效 率,改善了計算機的性能,具體表現(xiàn)在以下幾個方面: (1)有效地解決了快速CPU與慢速外設(shè)之間的通信矛盾,可使 CPU與多個外設(shè)并行工作,大大提高了工作效率。 (2) 在實時控制系統(tǒng)中,外設(shè)對CPU的服務(wù)請求是隨機的。 中斷系統(tǒng)可以及時處理控制系統(tǒng)中許多隨機產(chǎn)生的數(shù)據(jù)與 信息,使系統(tǒng)具備實時處理的能力,提高了控制系統(tǒng)的性能。 (3) 系統(tǒng)工作時會出現(xiàn)一些如電源斷電之類的突發(fā)故障,中 斷系統(tǒng)可以使故障發(fā)生時自動運行處理程序,系統(tǒng)具備了 處理故障的能力,提高了系統(tǒng)自身的可靠性。 單片機定時器串行口及中斷系統(tǒng)7 4.1.2 MCS-51中斷系統(tǒng)的結(jié)構(gòu)及中斷控制中斷
6、系統(tǒng)的結(jié)構(gòu)及中斷控制 4.1.2.1 MCS-51中斷系統(tǒng)結(jié)構(gòu)中斷系統(tǒng)結(jié)構(gòu) MCS-51中斷系統(tǒng)的結(jié)構(gòu)如圖所示: 單片機定時器串行口及中斷系統(tǒng)8 MCS-51的中斷系統(tǒng)有5個中斷源(MCS-52有 6個),2個 優(yōu)先級。5個中斷源分別為: (1)2個外部中斷請求:外部中斷0 ()、外部中斷1 (),分別由從P3.2、 P3.2引腳引入,低電平有效、 脈沖下降沿有效可選。 (2)2個片內(nèi)定時器/計數(shù)器溢出中斷請求:定時器/計數(shù)器0 溢出中斷(T0)、定時器/計數(shù)器1溢出中斷(T1),分別 在定時器T0、T1溢出時發(fā)出中斷申請。 (3)串行中斷(TXD/RXD),一次串行發(fā)送/接收完成后, 發(fā)出中
7、斷申請。 5個中斷均可由軟件設(shè)定為允許中斷或禁止中斷。 I IN NT T0 0 INT1 單片機定時器串行口及中斷系統(tǒng)9 4.1.2.2 MCS-51中斷控制中斷控制 1、 中斷允許控制中斷允許控制 CPU對中斷系統(tǒng)所有中斷,以及某個中斷源的開放和屏蔽 是由中斷允許寄存器IE控制的。IE字節(jié)地址A8H,位地址 為AFHA8H,IE位結(jié)構(gòu)如下表所示: 位地址位地址AFHAFHACHACHABHABHAAHAAHA9HA9HA8HA8H 位名稱位名稱EAEAESESET1ET1EX1EX1ET0ET0EX0EX0 單片機定時器串行口及中斷系統(tǒng)10 各位的含義如下: EX0(IE.0)外部中斷0允
8、許位。EX0=0,禁止外部中斷0 中斷;EX0=1允許外部中斷0中斷。 ET0(IE.1)定時/計數(shù)器T0中斷允許位。ET0=0,禁止T0 中斷;ET0=1,允許T0中斷。 EX1(IE.2)外部中斷1允許位。EX1=0,禁止外部中斷1 中斷;EX1=1,允許外部中斷1中斷。 ET1(IE.3)定時/計數(shù)器T1中斷允許位。ET1=0,禁止T1 中斷;ET1=1,允許T1中斷。 ES(IE.4)串行口中斷允許位。ES=0,禁止串行口中 斷;ES=1允許串行口中斷。 EA (IE.7)CPU中斷允許(總允許)位。EA=0,屏蔽所 有的中斷請求;EA=1,開放中斷。 通過EA可以使中斷允許形成兩級控
9、制,即各中斷源首 先受EA位的控制其次受各中斷源各自的中斷允許控制位 控制(IE低5位)。 單片機定時器串行口及中斷系統(tǒng)11 2、中斷優(yōu)先級控制、中斷優(yōu)先級控制 MCS-51單片機有兩個中斷優(yōu)先級,即可實現(xiàn)二級中斷 服務(wù)嵌套。每個中斷源的中斷優(yōu)先級都是由中斷優(yōu)先級寄中斷優(yōu)先級寄 存器存器IP中的相應(yīng)位的狀態(tài)來規(guī)定的,相應(yīng)位置“1”,為高 優(yōu)先級。相應(yīng)位置“0”,為低優(yōu)先級。中斷優(yōu)先級控制寄 存器IP的字節(jié)地址B8H,位地址BFHB8H,。IP位結(jié)構(gòu) 如下表所示: 位地址位地址BCHBCHBBHBBHBAHBAHB9HB9HB8HB8H 位名稱位名稱PSPSPT1PT1PX1PX1PT0PT0P
10、X0PX0 單片機定時器串行口及中斷系統(tǒng)12 各位的含義如下: PX0(IP.0):):外部中斷0優(yōu)先級控制位. PT0(IP.1):):定時/計數(shù)器T0優(yōu)先級控制位. PX1(IP.2):):外部中斷1優(yōu)先級控制位. PT1(IP.3):):定時/計數(shù)器T1優(yōu)先級控制位. PS(IP.4):):串行口優(yōu)先級控制位. 對同時發(fā)生多個中斷申請時CPU按以下原則處理: 不同優(yōu)先級的中斷同時申請先高后低 相同優(yōu)先級的中斷同時申請事先規(guī)定 正處理低優(yōu)先級中斷又接到高級別中斷停低轉(zhuǎn)高 正處理高優(yōu)先級中斷又接到低級別中斷高不理低 單片機定時器串行口及中斷系統(tǒng)13 同一優(yōu)先級中的中斷申請不止一個時,則有中斷
11、優(yōu)先 權(quán)排隊問題。同一優(yōu)先級的中斷優(yōu)先權(quán)排隊,由中斷系統(tǒng) 硬件確定的自然優(yōu)先級形成,其排列如下表所示: 中斷源中斷源優(yōu)先級優(yōu)先級 外部中斷0()高 定時/計數(shù)器(T0) 外部中斷1() 定時/計數(shù)器(T1) 串行口低 I IN NT T0 0 I IN NT T1 1 單片機定時器串行口及中斷系統(tǒng)14 3 3、 中斷標(biāo)志與方式控制寄存器中斷標(biāo)志與方式控制寄存器 MCS-51單片機的5個中斷源的中斷請求信號分別鎖存在特 殊功能寄存器TCON和SCON中。 1)TCON TCON為定時/計數(shù)器控制寄存器,字節(jié)地址為88H,其中的 中斷源請求標(biāo)志位如下表所示: 位地址位地址8FH8FH8DH8DH8
12、BH8BH8AH8AH89H89H88H88H 位名稱位名稱TF1TF1TF0TF0IE1IE1IT1IT1IE0IE0IT0IT0 單片機定時器串行口及中斷系統(tǒng)15 各位的含義如下: 定時器定時器/計數(shù)器計數(shù)器T1的溢出中斷請求標(biāo)志位(的溢出中斷請求標(biāo)志位(TF1):):當(dāng)啟動T1計 數(shù)后,如果T1計數(shù)器產(chǎn)生溢出,會由硬件使TF1置1,向CPU 發(fā)中斷請求。如果CPU響應(yīng)中斷請求,會自動由硬件將TF1清 零。 定時器定時器/計數(shù)器計數(shù)器T0的溢出中斷請求標(biāo)志位(的溢出中斷請求標(biāo)志位(TF0):):含義與TF1 相同。 外部中斷外部中斷1的中斷請求標(biāo)志(的中斷請求標(biāo)志(IE1):):如果檢測到
13、外部中斷引腳 P3.3上存在有效的中斷請求信號,就由硬件將IE1置1。如果 CPU響應(yīng)該中斷請求,則自動由硬件將IE1清零。 外部中斷外部中斷0的中斷請求標(biāo)志位(的中斷請求標(biāo)志位(IE0):):其含義與IE1類同。 外部中斷外部中斷1的中斷觸發(fā)方式控制位(的中斷觸發(fā)方式控制位(IT1):):IT1為1時,外部中 斷1為邊沿觸發(fā)方式,若CPU檢測到外部中斷1的引腳P3.3有由 高到低的跳變,就使IE1置1,請求中斷。IT1為0時,外部中斷 1為電平觸發(fā)方式,若CPU檢測到外部中斷1的引腳P3.3為低電 平,則使IE1置1,請求中斷;如果P3.3為高電平,則使IE1置0。 外部中斷外部中斷0的中斷
14、觸發(fā)方式控制位(的中斷觸發(fā)方式控制位(IT0):):其含義與IT1類同。 單片機定時器串行口及中斷系統(tǒng)16 2、SCON 兩個串行口發(fā)送接收中斷標(biāo)志占用了SCON寄存器中的 2位(TI和RI)。SCON是串行口控制寄存器,字節(jié)地址 為98H。SCON寄存器的位格式如下表所示: 位位 地地 址址 9999 H H 9898 H H 位位 名名 稱稱 RIRITITI 單片機定時器串行口及中斷系統(tǒng)17 各位的含義如下: 串行口內(nèi)部串行口內(nèi)部發(fā)送發(fā)送中斷請求標(biāo)志位(中斷請求標(biāo)志位(TI):):當(dāng)串行口發(fā)送完 一個字符后,由內(nèi)部硬件使發(fā)送中斷標(biāo)志TI置位。產(chǎn)生中 斷請求標(biāo)志,CPU響應(yīng)中斷時,并不復(fù)位
15、TI,TI必須由用 戶在中斷服務(wù)程序中用軟件清0(如:CLR TI )。 串行口內(nèi)部串行口內(nèi)部接收接收中斷請求標(biāo)志位(中斷請求標(biāo)志位(RI):):當(dāng)串行口接收到 一個字符后,由內(nèi)部硬件使接收中斷請求標(biāo)志位RI置位。 產(chǎn)生中斷請求標(biāo)志,同樣CPU響應(yīng)中斷時,并不復(fù)位RI, RI必須由用戶在中斷服務(wù)程序中用軟件清0(如:CLR RI ) 。 單片機定時器串行口及中斷系統(tǒng)18 4.1.2.3 MCS-51中斷響應(yīng)及中斷處理過程中斷響應(yīng)及中斷處理過程 CPU響應(yīng)中斷的條件包括: (1) 中斷源有請求,CPU開中斷(即IE的EA=1,中斷允許寄存 器IE相應(yīng)位置1)。滿足這個條件后,單片機CPU在每個機
16、 器周期對所有中斷源進行檢測,并可在任1個周期的S6期 間,找到所有有效的中斷請求,對其按優(yōu)先級排隊。 (2) 無同級或高級中斷正在處理。 (3) 現(xiàn)行指令執(zhí)行到最后1個機器周期且已結(jié)束。 (4) 若現(xiàn)行指令為訪問IE、IP的指令或RETI(中斷返回指令), 則要求該指令和緊隨其后的另一條指令也已執(zhí)行完畢。 單片機定時器串行口及中斷系統(tǒng)19 1、 MCS-51中斷矢量表中斷矢量表 中斷矢量指示中斷源的入口地址,CPU一旦響應(yīng)中斷,中 斷服務(wù)程序便從中斷矢量地址開始執(zhí)行。MCS51中斷 系統(tǒng)的各個中斷的中斷矢量地址如下 I IN NT T0 0 I IN NT T1 1 中斷源中斷源中斷矢量地址
17、中斷矢量地址 外部中斷0()0003H 定時器T0中斷000BH 外部中斷1()0013H 定時器T1中斷001BH 串行口中斷0023H 單片機定時器串行口及中斷系統(tǒng)20 2、 MCS-51中斷響應(yīng)的過程中斷響應(yīng)的過程 如果滿足中斷響應(yīng)的條件,單片機CPU便在緊接著中 斷申請的下1個機器周期的S1期間響應(yīng)中斷,否則,將丟棄 中斷查詢的結(jié)果。 1)CPU響應(yīng)中斷的操作步驟:響應(yīng)中斷的操作步驟: (1)將程序計數(shù)器PC的內(nèi)容(斷點地址)壓入堆棧。 (2)將相應(yīng)的中斷矢量地址(或中斷入口地址)裝入程序 計數(shù)器PC,轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序,進行中斷處理。 (3)中斷服務(wù)程序結(jié)束位置,執(zhí)行一條RETI
18、指令,將堆棧 中的斷點地址恢復(fù)到PC程序計數(shù)器中,使程序恢復(fù)到斷 點發(fā)生處繼續(xù)執(zhí)行。 單片機定時器串行口及中斷系統(tǒng)21 2)中斷撤銷)中斷撤銷 在中斷服務(wù)程序結(jié)束之前應(yīng)撤銷中斷請求,否則返回后將 再一次引起中斷。 對于某些中斷,中斷響應(yīng)后,計算機將自動清除有關(guān)的中 斷標(biāo)志位。如:定時器溢出標(biāo)志TF0,TF1,以及邊沿觸發(fā)方 式下的外部中斷標(biāo)志IE0、IE1; 而有些中斷標(biāo)志位不會自動清除,由用戶在中斷服務(wù)程序 中軟件清除,如:串行口的發(fā)送和接收標(biāo)志TI和RI。 對于電平觸發(fā)方式下的外部中斷標(biāo)志IE0和IE1,根據(jù)INT0 和INT1的電平變化,CPU無法直接干預(yù),必須由外部設(shè)置硬 件清除。 單
19、片機定時器串行口及中斷系統(tǒng)22 3)現(xiàn)場保護)現(xiàn)場保護 MCS-51單片機響應(yīng)中斷后,只保護斷點而不保護現(xiàn)場。 所謂的現(xiàn)場,是指如:累加器A、程序狀態(tài)字PSW、工作 寄存器Rn等寄存器在發(fā)生中斷時的值。 當(dāng)在中斷服務(wù)程序中需要使用這些寄存器時,應(yīng)該在使用 之前先將所需要使用的寄存器的內(nèi)容壓棧,在結(jié)束中斷服務(wù) 程序之前再將這些寄存器的內(nèi)容恢復(fù)出來,這也就是現(xiàn)場保 護。 現(xiàn)場保護時要注意入棧和出站的順序,要保證一一對應(yīng), “對稱”使用。否則容易造成現(xiàn)場破壞,甚至使程序發(fā)生 “紊亂”。 單片機定時器串行口及中斷系統(tǒng)23 4)中斷響應(yīng)時間)中斷響應(yīng)時間 MCS-51單片機響應(yīng)時序如下圖所示: 最短響應(yīng)
20、時間:若M1周期的S5P2前某中斷生效,在S5P2期間其中斷 請求被鎖存到相應(yīng)的標(biāo)志位中去;M2恰逢指令的最后一個機器周期, 且該指令不是RETI或訪問IE、IP的指令。于是,M3和M4便可以執(zhí)行 硬件LCALL指令,M5周期將進入了中斷服務(wù)程序。因此, MCS-51 的中斷響應(yīng)時間(從標(biāo)志置1到進入相應(yīng)的中斷服務(wù)),至少要3個完 整的機器周期。 最長響應(yīng)時間:若中斷查詢時,正在執(zhí)行RETI或者訪問IE或IP指令的 第1個機器周期,這樣查詢到中斷需要2個機器周期。根據(jù)前面分析, 我們知道,這種情況下的中斷申請,需要在執(zhí)行完指令后的一條指令 時才能響應(yīng)中斷,如果這條指令是乘除指令,則需要4個機器
21、周期, 另外,響應(yīng)中斷時,還需要執(zhí)行2個機器周期的斷點保護,因此, MCS-51的中斷響應(yīng)時間(從標(biāo)志置1到進入相應(yīng)的中斷服務(wù)),最長 要用2+4+2=8個完整的機器周期。 單片機定時器串行口及中斷系統(tǒng)24 5)中斷服務(wù)程序)中斷服務(wù)程序 由于兩個中斷源的入口矢量地址之間僅僅相隔8個單元, 很難容納下一個中斷服務(wù)子程序。所以,首先需要在中斷 入口地址單元處放一條無條件轉(zhuǎn)移指令,使程序跳轉(zhuǎn)到存 儲器的某個空間去,在這個空間中放置功能完善的中斷服 務(wù)程序。 由于51在響應(yīng)中斷時,只是自動保存了斷點,所以系 統(tǒng)的狀態(tài)寄存器PSW、工作寄存器,SFR寄存器的保護 和恢復(fù)必須由用戶自己在中斷服務(wù)子程序中
22、安排。另外, 在保護現(xiàn)場和恢復(fù)現(xiàn)場之前應(yīng)當(dāng)關(guān)閉中斷,以保證在保護 和恢復(fù)現(xiàn)場的時候CPU不去響應(yīng)新的中斷請求,從而使得 現(xiàn)場數(shù)據(jù)的正確性不受到影響。當(dāng)然,為了使系統(tǒng)在執(zhí)行 某個中斷服務(wù)子程序的時候能夠響應(yīng)更高級的中斷,應(yīng)當(dāng) 在保護現(xiàn)場和恢復(fù)現(xiàn)場之后打開中斷。 單片機定時器串行口及中斷系統(tǒng)25 【例【例4.1】若規(guī)定外部中斷1為邊沿觸發(fā)方式,高優(yōu)先級,在中斷服務(wù)程序中 將寄存器B的內(nèi)容進行半字節(jié)交換,B的初值設(shè)為21H。試編寫主程序 與中斷服務(wù)程序。 ORG 0000H LJMP MAIN ORG 0013H ;中斷矢量 LJMP INTS ORG 0030H MAIN:SETB EA ;總中斷
23、允許“開” SETB EX1 ;外部中斷1允許“開” SETB PX1 ;設(shè)置為高優(yōu)先級 SETB IT1 ;邊沿觸發(fā)方式 MOV B,#21H ;給 B 寄存器賦初值 HERE:SJMP HERE ;原地等待中斷申請 INTS: MOV A,B ;自B寄存器中取數(shù) SWAP A ;半字節(jié)交換 MOV B,A ;存回B RETI ;中斷返回 思考思考: :此例中中斷服務(wù)程序是否可以直接安排在中斷服務(wù)入口此例中中斷服務(wù)程序是否可以直接安排在中斷服務(wù)入口? ? 單片機定時器串行口及中斷系統(tǒng)26 【例【例4.2】電路結(jié)構(gòu)如下圖所 示,要求每次按動按鍵, 使外接發(fā)光二極管LED改 變一次亮滅狀態(tài), 輸
24、入按鍵信號,P1.0輸出 改變LED狀態(tài),對于外部 中斷,可以有兩種方式: 邊沿觸發(fā)方式和電平觸發(fā) 方式。這里分兩種情況分 別介紹。 單片機定時器串行口及中斷系統(tǒng)27 (1)邊沿觸發(fā)方式:)邊沿觸發(fā)方式: 每次按鍵K1按下, 產(chǎn)生的一次跳變, 引起一次外部中斷0 請求,在外部中斷0 服務(wù)程序中,將 P1.0的輸出狀態(tài)反 轉(zhuǎn),為了避免開關(guān) 抖動引起的多次中 斷可以考慮利用軟 件延時或者硬件去 抖動法。 ORG 0000H ;復(fù)位入口 AJMP MAIN ORG 0003H ;中斷入口 AJMP PINT0 ORG 0100H ;主程序 MAIN:MOV SP,#40H ;設(shè)棧底 SETB EA
25、;開總允許開關(guān) SETB EX0 ;開INT0中斷 SETB IT0 ;負跳變觸發(fā)中斷 H: SJMP H ;等待(執(zhí)行其它任務(wù)) ORG 0200H ;中斷服務(wù)程序 PINT0:CPL P1.0 ;改變LED LCALL Delay10ms;軟件延時去開關(guān)抖動 RETI ;返回主程序 單片機定時器串行口及中斷系統(tǒng)28 (2) 電平觸發(fā):電平觸發(fā): 為了避免一次按鍵引 起多次中斷響應(yīng),應(yīng) 該在每次按鍵按下引 起的中斷服務(wù)程序中 執(zhí)行完P(guān)1.0的電平反 轉(zhuǎn)后先不退出中斷服 務(wù)程序,而是利用軟 件等待按鍵釋放,按 鍵釋放后才結(jié)束中斷 服務(wù)程序。 ORG 0000H ;復(fù)位入口 AJMP MAIN
26、ORG0003H ;中斷入口 AJMP PINT0 ORG0100H ;主程序 MAIN: MOV SP,#40H ;設(shè)棧底 SETB EA ;開總允許開關(guān) SETB EX0 ;開INT0中斷 CLR IT0 ;低電平觸發(fā)中斷 H: SJMP H ;等待(執(zhí)行其它任務(wù)) ORG 0200H ;中斷服務(wù)程序 PINT0:CPL P1.0 ;改變LED WAIT: JNB P3.2,WAIT;等按鍵釋放 RETI ;返回主程序 單片機定時器串行口及中斷系統(tǒng)29 4.2 MCS-51單片機片內(nèi)定時器單片機片內(nèi)定時器/計數(shù)器計數(shù)器 4.2.1 定時器定時器/計數(shù)器的結(jié)構(gòu)及基本原理計數(shù)器的結(jié)構(gòu)及基本原理
27、 4.2.1.1 定時器定時器/計數(shù)器的結(jié)構(gòu)及其工作原理計數(shù)器的結(jié)構(gòu)及其工作原理 MCS-51單片機的定時/計數(shù)器的結(jié)構(gòu)如下圖所示。 單片機定時器串行口及中斷系統(tǒng)30 MCS-51單片機內(nèi)部有兩個16位的可編程定時/計數(shù)器, 稱為定時器定時器0 0(T0)和定時器定時器1 1(T1)。定時器0由兩個8位 專用寄存器TH0(作T0的高8位)和TL0(作T0的低8位)組 成,定時器1由兩個8位專用寄存器TH1和TL1組成。 定時/計數(shù)器本質(zhì)上是加本質(zhì)上是加1 1計數(shù)器計數(shù)器,加1計數(shù)器的初值 可以由程序設(shè)定,設(shè)置的初值不同,定時的時間或計數(shù)值 就不同??梢酝ㄟ^軟件設(shè)置定時/計數(shù)器為定時工作方式定時
28、工作方式 和計數(shù)工作方式計數(shù)工作方式。 當(dāng)定時/計數(shù)器設(shè)置為定時工作方式定時工作方式時,加1計數(shù)器對對 內(nèi)部機器周期計數(shù)內(nèi)部機器周期計數(shù),每個機器周期計數(shù)器加1,直至計滿 溢出,發(fā)出定時器溢出中斷請求信號。這時,定時器的計 數(shù)頻率是片內(nèi)振蕩器頻率的十二分之一,計數(shù)值N乘以機 器周期Tcy就是定時時間t。 單片機定時器串行口及中斷系統(tǒng)31 當(dāng)定時/計數(shù)器設(shè)置為計數(shù)工作方式計數(shù)工作方式時,加1計數(shù)器對對 來自輸入引腳來自輸入引腳T0T0(P3.4P3.4)和)和T1T1(P3.5P3.5)的外部脈沖信號計)的外部脈沖信號計 數(shù)數(shù),在每個機器周期的S5P2期間采樣外部脈沖,若前一個 機器周期采樣到高
29、電平,后一個機器周期采樣到低電平, 則將觸發(fā)計數(shù)器加1,更新的計數(shù)值將在下一個機器周期 的S3P1期間裝入計數(shù)器。因此,單片機檢測一個從高電平 到低電平的下降沿需要2個機器周期,要使下降沿能被檢 測到,就得保證被采樣高、低電平分別至少維持一個機器 周期的時間,即外部輸入信號的頻率不超過晶振頻率的外部輸入信號的頻率不超過晶振頻率的 1/241/24。如:當(dāng)晶振頻率為12MHz時,最高計數(shù)頻率不超過 0.5MHz,即計數(shù)脈沖的周期要大于2微秒。 單片機定時器串行口及中斷系統(tǒng)32 4.2.1.2 定時定時/計數(shù)器的工作方式寄存器和控制寄存器計數(shù)器的工作方式寄存器和控制寄存器 MCS-51單片機的可編
30、程定時/計數(shù)器,除了具有計數(shù) 寄存器THx和TLx以外,還有兩個寄存器TMOD和TCON用來 控制其工作模式或者反映其工作狀態(tài)。 1.1.工作方式寄存器工作方式寄存器TMODTMOD TMOD為定時/計數(shù)器T0、T1的工作方式控制寄存器, 字節(jié)地址89H,只能按字節(jié)對它尋址只能按字節(jié)對它尋址。TMOD的位結(jié)構(gòu)如 下表所示: TC /TC / 位位D7D6D5D4D3D2D1D0 TMODGATEM1M0GATEM1M0 單片機定時器串行口及中斷系統(tǒng)33 GATE C/ T M1 M0 GATEM1C/ TM0 定時器定時器T1 定時器定時器T0 TMOD (89H) D7 D6 D5 D4 D
31、3 D2 D1 D0 工作模式寄存器工作模式寄存器TMOD的位定義的位定義 單片機定時器串行口及中斷系統(tǒng)34 TMOD各位定義及具體的意義各位定義及具體的意義 單片機定時器串行口及中斷系統(tǒng)35 GATE:門控位,決定定時器/計數(shù)器的啟動開關(guān)信號(圖中 的K2)是否受外部中斷請求信號的影響。 GATE=0,只要用軟件使TR0(或TR1)置1就可以啟動定時 器,而不管INT0(或INT1)的電平是高還是低。 GATE=1,只有INT0(或INT1)引腳為高電平且由軟件使 TR0(或TR1)置1時,才能啟動定時器工作。 門控位對定時計數(shù)器啟動開關(guān)信號的控制作用 如下圖所示: 單片機定時器串行口及中斷
32、系統(tǒng)36 C/T C/T :定時或計數(shù)功能選擇位 當(dāng)C/TC/T=1時為計數(shù)方式;當(dāng)C/TC/T=0時為定時方式。 M1、M0:定時器/計數(shù)器工作方式選擇位,其值與工作方 式對應(yīng)關(guān)系如下表所示。 系統(tǒng)復(fù)位時,寄存器TMOD的所有位被清零。 M1M1M0M0工作方式工作方式功功 能能 說說 明明 00方式013位計數(shù)器 01方式116位計數(shù)器 10方式2自動重裝8位計數(shù)器 11方式3定時器T0分成兩個8位計數(shù)器,T1停止工作 單片機定時器串行口及中斷系統(tǒng)37 2. 2. 控制寄存器控制寄存器TCONTCON TCON是定時/計數(shù)器T0、T1的控制寄存器,字節(jié)地址88H, 可以位尋址可以位尋址,T
33、MOD的位結(jié)構(gòu)如下表所示: 各位的含義如下: TF1:定時器1溢出標(biāo)志位。當(dāng)定時器1計滿數(shù)產(chǎn)生溢出時, 由硬件自動置TF1為1,(在允許中斷的情況下)向CPU發(fā) 出中斷請求信號。如果CPU響應(yīng)中斷則轉(zhuǎn)向中斷服務(wù)程序, 硬件自動將該位清零。在中斷屏蔽時,CPU不響應(yīng)中斷無 法用硬件將該位清零,可以用軟件對其清零。 位8FH8EH8DH8CH8BH8AH89H88H TCONTF1TF1TR1TR1TF0TF0TR0TR0IE1IT1 IE0IT0 單片機定時器串行口及中斷系統(tǒng)38 TR1:定時器1運行控制位。使用軟件編程將TR1置1或清0 可以控制定時/計數(shù)器的啟動與關(guān)閉。但是當(dāng)GATE1, 需
34、要同時滿足 為高電平的條件,將TR1置1才會啟動 定時器1。 TF0:定時器0溢出標(biāo)志位。其功能及操作情況同TF1。 TR0:定時器0運行控制位。其功能及操作情況同TR1。 TCON中的低4位IT0、IE0、IT1、IE1與中斷有關(guān),已經(jīng)在 上一節(jié)介紹過。 在系統(tǒng)復(fù)位時,寄存器TCON的所有位被清零。 1INT 單片機定時器串行口及中斷系統(tǒng)39 4.2.2 定時器定時器/計數(shù)器的四種工作方式計數(shù)器的四種工作方式 MCS-51單片機的定時器/計數(shù)器有4種工作方式,分別由 TMOD寄存器中的M1、M0兩位的二進制編碼所決定,這里對 這4種工作方式進行具體介紹。 4.2.2.1 方式方式0及其用法及
35、其用法 當(dāng)M1 M0=00時,定時器/計數(shù)器設(shè)定為工作方式0,這時 為1313位位的定時/計數(shù)器。其邏輯結(jié)構(gòu)如下圖所示。 單片機定時器串行口及中斷系統(tǒng)40 在方式0下,T0和T1工作在13位的定時/計數(shù)器方式, 計數(shù)器的這13位由THx的8位作高8位和TLx的低5位作低5位 組成。當(dāng)TLx(x=0或1)的低5位計數(shù)溢出時就向高8位THx進 位,THx溢出時,置位TCON中的TFx標(biāo)志,向CPU發(fā)出中斷 請求,當(dāng)單片機進入中斷服務(wù)程序時,由內(nèi)部硬件自動清 除該標(biāo)志。 當(dāng) =0時(定時方式),多路開關(guān)與片內(nèi)振蕩器的 12分頻輸出相連,工作在定時工作方式。其定時時間為: (213定時器初值)機器周期
36、 根據(jù)上面的公式可以在已知定時時間的情況下求出所要 設(shè)定的定時器初值。 T/C 單片機定時器串行口及中斷系統(tǒng)41 當(dāng) =時(計數(shù)方式),多路開關(guān)與T0(P3.4)或 T1(P3.5)相連,外部計數(shù)脈沖由引腳輸入,工作在計數(shù) 工作方式。當(dāng)檢測到外部信號電平發(fā)生從到跳變時, 計數(shù)器加1。 設(shè)x為計數(shù)器初值,則外部脈沖計數(shù)值為 N=213x=8192x, x=8191時為最小計數(shù)值1,x=0時為最大計數(shù)值8192, 即計數(shù)范圍為18192。 T/C 單片機定時器串行口及中斷系統(tǒng)42 【例例4.3】定時器T0工作在方式0下最大的計數(shù)周期是多少?利用 定時器T0的方式0產(chǎn)生定時脈沖,要求每隔5ms產(chǎn)生寬
37、度為2個 機器周期的正脈沖,由P1.0輸出此定時序列脈沖信號(設(shè)時鐘 頻率為12MHZ)。 解:解:由于時鐘頻率為12MHZ,所以,機器周期為1s。T0工作在 方式0下最大的計數(shù)周期是: tmax=(8192-T0初值) 機器周期=(8192-0) 1s=8.192ms 為了產(chǎn)生周期為5ms的定時周期,先計算出定時器T0初值。 因為:t=(8192-T0初值) 機器周期 所以,當(dāng)t=5ms時,則:(8192-T0初值) 1s=5ms 解得:T0初值=3192=0 1100 0111 1000B, 其中將高8位 0110 0011B=63H 賦給TH0, 低5位 1 1000B=18H 賦給TL
38、0。 單片機定時器串行口及中斷系統(tǒng)43 參考程序如下: 方法一:采用查詢工作方式,編程如下: ORG 0000H AJMP MAIN ORG 0100H MAIN: CLR P1.0 MOV TMOD , #00H ;設(shè)定T0的工作方式 MOV TH0 , #63H ;給定時器T0送初值 MOV TL0 , #18H SETB TR0 ;啟動T0工作 LOOP: JNB TF0 , $ ;$為當(dāng)前指令指針地址 CLR TF0 SETB P1.0 ;產(chǎn)生2個機器周期的正脈沖 NOP CLR P1.0 MOV TH0 , #63H ;重裝載TH0和TL0 MOV TL0 , #18H SJMP L
39、OOP END 單片機定時器串行口及中斷系統(tǒng)44 方法二:采用中斷工作方式,編程如下: ORG 0000H AJMP MAIN ORG 000BH AJMP T0INT ORG 0100H MAIN: CLR P1.0 MOV TH0 , #63H ;給定時器T0送初值 MOV TL0 , #18H MOV IE , #82H;開放T0中斷與中斷總開關(guān) SETB TR0;啟動T0 SJMP $ ORG 0300H ;中斷服務(wù)程序 T0INT: SETB P1.0;產(chǎn)生2個機器周期的正脈沖 NOP CLR P1.0 MOV TH0 , #63H ;重裝載TH0和TL0 MOV TL0 , #18
40、H RETI 單片機定時器串行口及中斷系統(tǒng)45 4.2.2.2 方式方式1及其用法及其用法 當(dāng)M1M0=01時,定時器/計數(shù)器設(shè)定為工作方式1,這時 由THx作為高8位、TLx作為低8位,組成了16位定時器/計 數(shù)器。方式1除了計數(shù)位數(shù)與方式0不同外,其它均與工 作方式0相同。 方式1邏輯結(jié)構(gòu)如圖所示 單片機定時器串行口及中斷系統(tǒng)46 在定時模式下定時時間為: (216定時器初值)機器周期 計數(shù)模式請讀者結(jié)合方式0,自己分析,這里不再重復(fù)。 【例例4.4】定時器T0工作在方式1下最大的計數(shù)周期是多少?用定時器T0的方 式1產(chǎn)生50HZ的方波,由P1.0輸出此方波(設(shè)時鐘頻率為12MHZ)。 解
41、:解:由于時鐘頻率為12MHZ,所以,機器周期為1s。T0工作在方式1下最大 的計數(shù)周期是: tmax=(216-T0初值)機器周期=(65536-0) 1s=65.536ms 由于50HZ的方波周期為20ms,可以用定時器產(chǎn)生10ms的定時,每隔10ms 改變一次P1.0的電平,即可得到50HZ的方波。此時,應(yīng)使定時器T0工作 在方式1。工作在方式1時的T0初值,根據(jù)下式計算: t=(65536-T0初值) 機器周期=10ms 解得:T0初值=55536= 11011B=D8F0H,其中將高8位D8H賦給TH0,低8 位F0H賦給TL0。 單片機定時器串行口及中斷系統(tǒng)47 采用中斷工作方式,
42、編程如下: ORG 0000H AJMP MAIN ORG 000BH AJMP T0INT ORG 0100H MAIN: MOV TMOD , #01H MOV TH0 , #0D8H MOV TL0 , #0F0H MOV IE , #82H ;開放T0中斷與中斷總開關(guān) SETB TR0 SJMP $ ORG 0300H ;中斷服務(wù)程序 T0INT: CPL P1.0 MOV TH0 , #0D8H MOV TL0 , #0F0H RETI 單片機定時器串行口及中斷系統(tǒng)48 4.2.2.3 方式方式2及其用法及其用法 當(dāng)M1M0=10時,定時器/計數(shù)器設(shè)定為工作方式2。其 邏輯結(jié)構(gòu)如圖所
43、示。 單片機定時器串行口及中斷系統(tǒng)49 定時/計數(shù)器工作方式2具有自動重裝載功能自動重裝載功能。工作方 式0和工作方式1的最大缺點就是計數(shù)溢出后,計數(shù)器為0, 因而在循環(huán)定時或循環(huán)計數(shù)應(yīng)用時就存在需反復(fù)用軟件向 THx和TLx預(yù)置計數(shù)初值的問題,給程序設(shè)計帶來不便,同 時也會影響計時精度,工作方式2就針對這個問題而設(shè)置 的。 在工作方式2中,16位計數(shù)器分為兩部分,即以TLx作 為8位計數(shù)器進行計數(shù),以THx保存8位初值并保持不變, 作為預(yù)置寄存器,初始化時把相同的計數(shù)初值分別加載至 TLx和THx中,當(dāng)計數(shù)溢出時,不需再像方式0和方式1那樣 需要由軟件重新賦值,而是由硬件自動將預(yù)置寄存器TH
44、x 的8位計數(shù)初值重新加載給TLx,繼續(xù)計數(shù),不斷循環(huán)。 除能自動加載計數(shù)初值之外,方式2的其他控制方法同 方式0類似。 方式2的定時時間為: (28定時器初值)機器周期 計數(shù)模式請讀者結(jié)合方式0,自己分析,這里不再重復(fù)。 單片機定時器串行口及中斷系統(tǒng)50 【例【例4.5】定時器T1工作在方式2下最大的計數(shù)周期是多少?用 定時器T1的方式2從P1.0 腳輸出頻率=1KHz方波(設(shè)時鐘頻 率為6MHZ)。 分析:fosc= 6MHz ,1機器周期 =2s 1KHz方波周期 =1ms, 半個方波周期=500s (28定時器初值)機器周期=定時時間 (256X) 2s= 500s 計算初值:X=6
45、T1工作在方式1下最大的計數(shù)周期(晶振頻率為6MHZ)是: tmax=(28-T0初值)機器周期=(256-0) 2s=512s 單片機定時器串行口及中斷系統(tǒng)51 采用中斷工作方式,編程如下: ORG 0000H AJMP MAIN ORG 001BH ;T1的中斷矢量 CPL P1.0 ;中斷服務(wù):P1.0取反 RETI ORG 0030H ;中斷返回 MAIN: MOV TMOD,#20H ;選T1方式2 MOV TH1, #6 ;賦重裝值 MOV TL1, #6 ;賦初值 SETB ET1 ;開T1中斷 SETB EA ;開總中斷 SETB TR1 ;啟動T1 HERE: AJMP HE
46、RE ;原地等待中斷 END 單片機定時器串行口及中斷系統(tǒng)52 【例【例4.6】 利用T0的工作方式2擴展一個外部中斷源。 解:將T0設(shè)置為計數(shù)器方式,按方式2工作,TH0、TL0的初值均為0FFH,T0 允許中斷,CPU開放中斷。這樣每來一個脈沖,都將產(chǎn)生一次計數(shù)中斷,類 似于外部中斷。在定時計數(shù)器中斷服務(wù)程序中編寫該外部中斷的服務(wù)內(nèi)容即 可。 參考程序如下: ORG 0000H AJMP MAIN ORG 000BH AJMP T0INT ORG 0100H MAIN: MOV TMOD,#06H ;置T0為計數(shù)器方式2 MOV TL0,#0FFH ;置計數(shù)初值 MOV TH0,#0FFH
47、 SETB TR0 ;啟動T0工作 SETB EA ;CPU開中斷 SETB ET0 ;允許T0中斷 T0INT: ;編寫該中斷的服務(wù)程序 RETI 單片機定時器串行口及中斷系統(tǒng)53 4.2.2.4 方式方式3及其用法及其用法 當(dāng)M1M0=11時,定時器/計數(shù)器設(shè)定為工作方式3。其邏 輯結(jié)構(gòu)如圖所示。 單片機定時器串行口及中斷系統(tǒng)54 工作方式工作方式3 3只適用于定時器只適用于定時器T0T0。當(dāng)T0工作在方式3 時,TH0和TL0被拆成2個獨立的8位計數(shù)器。這時,TL0既可 作為定時器,也可作為計數(shù)器使用,它占用定時器T0所使用 的控制位,除了它的位數(shù)為8位外,其功能和操作與方式0 或1完全
48、相同。TH0只能作定時器用,并且占據(jù)了定時器T1 的控制位TR1和中斷標(biāo)志位TF1,TH0計數(shù)溢出置位TF1,且 TH0的啟動和關(guān)閉僅受TR1的控制。 定時器定時器T1T1無工作模式無工作模式3 3,當(dāng)將定時器T0設(shè)定為方式3時, 定時計數(shù)器T1仍可設(shè)置為方式0、1或2。但由于TR1、 TF1己被定時器TH0占用,中斷源已被定時器T0占用,所以 當(dāng)其計數(shù)器計滿溢出時,不能產(chǎn)生中斷。在這種情況下, 定時計數(shù)器1一般用作串行口波特率發(fā)生器,其計數(shù)溢出將 直接傳送給串行口控制數(shù)據(jù)的傳輸。這種情況下,定時/ 計數(shù)器T1只要設(shè)置好工作方式(設(shè)置好工作模式,工作初 值),然后用控制位C/T切換其為定時或計
49、數(shù)功能就可以使 T1運行,若想停止它的運行,只要把它的工作方式設(shè)置為方 式3即可,因為定時器T1沒有方式3,將它設(shè)置為方式3就使 它的工作停止。 單片機定時器串行口及中斷系統(tǒng)55 【例【例4.7】設(shè)晶振頻率為12MHz,定時計數(shù)器T0工作于方式3, TL0和TH0作為兩個獨立的8位定時器,要求TL0 使P1.0產(chǎn) 生200s的方波,TH0使P1.1產(chǎn)生400s的方波。 分析:fosc = 12MHz ,1機器周期 = 1s 若選擇工作方式3 計算初值: TL0初值= 256100/1=156=9CH TH0初值= 256200/1=56=38H 單片機定時器串行口及中斷系統(tǒng)56 ORG 000
50、0H AJMP MAIN ORG 000BH ;T0中斷服務(wù)程序 CPL P1.0;P1.0取反 MOV TL0 , #9CH; 重新裝入計數(shù)初值 RETI ORG 001BH ;T1中斷服務(wù)程序 CPL P1.1 ; P1.1取反 MOV TH0 , #38H; 重新裝入計數(shù)初值 RETI ORG 0100H ;主程序 MAIN: MOV TMOD , #03H ;T0工作于方式3 MOV TH0 , #38H ;置計數(shù)初值 MOV TL0 , #9CH SETB ET0 ;允許T0中斷(用于TL0) SETB ET1 ;允許T1中斷(用于TH0) SETB EA ;CPU開中斷 SETB
51、TR0 ; 啟動TL0 SETB TR1 :啟動TH0 SJMP $ ;等待中斷 單片機定時器串行口及中斷系統(tǒng)57 4.3 MCS-51單片機片內(nèi)串行口單片機片內(nèi)串行口 4.3.1串行通信的基本知識串行通信的基本知識 計算機通信是將計算機技術(shù)和通信技術(shù)的相結(jié)合,完成計 算機與外部設(shè)備或計算機與計算機之間的信息交換 。 4.3.1.1并行通信與串行通信并行通信與串行通信 根據(jù)通信數(shù)據(jù)比特的傳送方式,可以分為兩大類:并行通 信與串行通信。 單片機定時器串行口及中斷系統(tǒng)58 1、并行通信、并行通信 并行通信通常是將數(shù)據(jù)字節(jié)的各位用多條數(shù)據(jù)線同時進 行傳送。如圖所示: 優(yōu)點:優(yōu)點:控制簡單,傳輸速度快
52、; 缺點:缺點:傳輸線較多,成本高,容易引入干擾。 并行通信多用于短距離通信。并行通信多用于短距離通信。 單片機定時器串行口及中斷系統(tǒng)59 2、串行通信、串行通信 串行通信是將數(shù)據(jù)字節(jié)分成一位一位的形式在一條傳輸 線上逐個地傳送。如圖所示: 優(yōu)點:優(yōu)點:傳輸線少,成本低,且可以利用電話網(wǎng)等現(xiàn)成的設(shè)備; 缺點:缺點:數(shù)據(jù)的傳送控制復(fù)雜。 在多微機系統(tǒng)以及現(xiàn)代測控系統(tǒng)中信息的交換多采用在多微機系統(tǒng)以及現(xiàn)代測控系統(tǒng)中信息的交換多采用 串行通信方式。串行通信方式。 單片機定時器串行口及中斷系統(tǒng)60 4.3.1.2 同步通信與異步通信同步通信與異步通信 根據(jù)通信雙方之間的數(shù)據(jù)同步方式,串行通信可以分 為
53、兩大類:同步通信同步通信與異步通信異步通信。 1、異步通信、異步通信 異步通信是指通信的發(fā)送與接收設(shè)備使用各自的時 鐘控制數(shù)據(jù)的發(fā)送和接收過程。為使雙方的收發(fā)協(xié)調(diào),要 求發(fā)送和接收設(shè)備的時鐘頻率盡可能一致。 單片機定時器串行口及中斷系統(tǒng)61 異步通信是以字符(構(gòu)成的幀)為單位進行傳輸,字符與字 符之間的間隙(時間間隔)是任意的,但每個字符中的各位是 以固定的時間傳送的,即字符之間是異步的字符之間是異步的(字符之間不一定 有“位間隔”的整數(shù)倍的關(guān)系),但同一字符內(nèi)的各位是同步同一字符內(nèi)的各位是同步 的的(各位之間的距離均為“位間隔”的整數(shù)倍)。 異步通信的數(shù)據(jù)格式: 優(yōu)點:優(yōu)點:收發(fā)雙方時鐘不必
54、嚴格一致,實現(xiàn)容易,設(shè)備開銷較??; 缺點:缺點:每幀需23個附加位,幀間有間隔,傳輸效率低。 單片機定時器串行口及中斷系統(tǒng)62 2、同步通信、同步通信 同步通信時要建立發(fā)送方時鐘對接收方時鐘的直接控 制,使雙方達到完全同步雙方達到完全同步。此時,傳輸數(shù)據(jù)的位之間的距 離均為“位間隔”的整數(shù)倍,同時傳送的字符間不留間隙, 既保持位同步關(guān)系,也保持字符同步關(guān)系既保持位同步關(guān)系,也保持字符同步關(guān)系。 發(fā)送方對接收方的同步可以通過兩種方法實現(xiàn): 外同步外同步 自同步自同步 單片機定時器串行口及中斷系統(tǒng)63 外同步法:外同步法: 發(fā)送方除了發(fā)送數(shù)據(jù)信號以外,還要發(fā)送一路同步脈沖 信號。接收方根據(jù)這一同步
55、脈沖信號可以準時接收發(fā)送方 所發(fā)送的數(shù)據(jù)信號。 缺點:缺點:傳送一路信號需要兩條信號線,傳送成本較高; 優(yōu)點:優(yōu)點:實現(xiàn)簡單。 自同步法:自同步法: 發(fā)送方將要發(fā)送數(shù)據(jù)信號與同步脈沖信號合成在一起進 行傳送。接收方收到這樣一路合成信號之后,提取出其中 的同步信號,然后根據(jù)這一同步脈沖信號可以準時接收發(fā) 送方所發(fā)送的數(shù)據(jù)信號。 優(yōu)點:優(yōu)點:傳送一路信號只需要一條信號線,成本低; 缺點:缺點:實現(xiàn)比較復(fù)雜。 單片機定時器串行口及中斷系統(tǒng)64 4.3.1.3 單工通信與雙工通信單工通信與雙工通信 根據(jù)通信雙發(fā)數(shù)據(jù)的傳送方向,串行通信又可以分為 單工通信、半雙工通信與全雙工通信。 1、單工通信、單工通
56、信 單工是指數(shù)據(jù)傳輸僅能沿一個方向,不能實現(xiàn)反向傳輸。 2、半雙工通信、半雙工通信 半雙工是指數(shù)據(jù)傳輸可以沿兩個方向,但需要分時進行。 3、全雙工通信、全雙工通信 全雙工是指數(shù)據(jù)可以同時進行雙向傳輸。 單片機定時器串行口及中斷系統(tǒng)65 4.3.1.4 串行通信的錯誤校驗串行通信的錯誤校驗 串行通信信號傳送的過程中,容易受到各種干擾信號的 干擾,而產(chǎn)生錯誤。如下圖所示: 單片機定時器串行口及中斷系統(tǒng)66 為了檢查并糾正這些錯誤,通信的雙方應(yīng)該采取一些校驗 措施。單片機串行通信中常用的幾種校驗措施有: 1、奇偶校驗、奇偶校驗 在發(fā)送數(shù)據(jù)時,數(shù)據(jù)位尾隨的1位為奇偶校驗位(1或0)。 奇校驗:奇校驗:
57、數(shù)據(jù)中“1”的個數(shù)與校驗位“1”的個數(shù)之和應(yīng)為 奇數(shù);偶校驗:偶校驗:數(shù)據(jù)中“1”的個數(shù)與校驗位“1”的個數(shù)之 和應(yīng)為偶數(shù)。 接收字符時,對“1”的個數(shù)進行校驗,若發(fā)現(xiàn)不一致,則 說明傳輸數(shù)據(jù)過程中出現(xiàn)了差錯。 2、代碼和校驗、代碼和校驗 代碼和校驗是發(fā)送方將所發(fā)數(shù)據(jù)塊求和(或各字節(jié)異或), 產(chǎn)生一個字節(jié)的校驗字符(校驗和)附加到數(shù)據(jù)塊末尾。接 收方接收數(shù)據(jù)同時對數(shù)據(jù)塊(除校驗字節(jié)外)求和(或各字 節(jié)異或),將所得的結(jié)果與發(fā)送方的“校驗和”進行比較, 相符則無差錯,否則即認為傳送過程中出現(xiàn)了差錯。 單片機定時器串行口及中斷系統(tǒng)67 3、循環(huán)冗余(、循環(huán)冗余(CRC)校驗)校驗 循環(huán)冗余碼(Cy
58、cle Redundancy Check ,簡稱CRC)是最常用的一種 差錯校驗碼,其特征是:信息字段和校驗字段的長度可以任意指定。 CRC碼又稱為多項式碼。這是因為任何一個由二進制數(shù)位串組成的代碼 都可以和一個只含有0和1兩個系數(shù)的多項式建立一一對應(yīng)的關(guān)系。例如, 代碼1011011對應(yīng)的多項式為x6+x4+x3+x+1,而多項式x5+x4+x2+x對應(yīng)的代 碼為110110。 k位要發(fā)送的信息位可對應(yīng)于一個(k-1)次多項式K(x),r位冗余位對 應(yīng)于一個(r-1)次多項式R(x)。由k位信息位后面加上r位冗余位組成的 n=k+r位碼字則對應(yīng)于一個(n-1)次多項式 T(x)=xrK(x)
59、+R(x) 。 根據(jù)代數(shù)理論,多項式T(x)存在且僅存在一個r次多項式G(x),使得: T(x) =xrK(x)+R(x) = A(x)G(x) 其中G(x)=g0 x0+g1x1+g2x2+gr-1xr-1+grxr 稱為生成多項式,對應(yīng)的二進制 代碼稱為生成碼。 數(shù)據(jù)通信中利用這一原理,在發(fā)送方通過指定的G(x)產(chǎn)生CRC校驗碼, 接收方利用相同的多項式G(x)驗證收到的信息的正確性。 單片機定時器串行口及中斷系統(tǒng)68 【例例4.8】信息字段代碼為1011001,對應(yīng)多項式為m(x)= x6+x4+x3+1,假設(shè)生成多項式為g(x)= x4+x3+1,則對應(yīng)的g(x) 的代碼為11001,
60、x4m(x)= x10+x8+x7+x4對應(yīng)的代碼記為 10110010000,采用多項式除法: 得到余數(shù)1010 ,即校驗字段為1010,因此,形成的傳輸碼為: 1010 信息碼 校驗碼 單片機定時器串行口及中斷系統(tǒng)69 接收端在收到發(fā)送方發(fā)送過來的信息后,用同樣的生 成碼進行校驗,即用接收到的信息碼除以生成碼,如果能 夠除盡,則正確,否則出錯。 這種校驗方法糾錯能力強,常用于對磁盤信息的傳輸, 存儲區(qū)的完整性校驗,安全性要求較高的通信系統(tǒng)中等。 單片機定時器串行口及中斷系統(tǒng)70 4.2.2 MCS-51單片機串行口的結(jié)構(gòu)及其工作原理單片機串行口的結(jié)構(gòu)及其工作原理 4.2.2.1 MCS-5
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 年度預(yù)算與財務(wù)目標(biāo)設(shè)定計劃
- 系列美術(shù)創(chuàng)作主題教案計劃
- 打破部門壁壘的協(xié)同計劃
- 電子政務(wù):管理信息化整合之道
- 第五章+第1節(jié)《透鏡》教學(xué)設(shè)計 -2023-2024學(xué)年人教版物理八年級上學(xué)期
- 第二單元第9課《記錄校園生活》教學(xué)設(shè)計 2023-2024學(xué)年青島版(2019)初中信息技術(shù)第二冊
- 2025年山東貨運從業(yè)資格模擬考試題app
- 2025年太原貨運從業(yè)資格證考試題技巧
- 2025年鄭州貨運資格證考試真題
- 2025年高中化學(xué)必修二核心框圖和內(nèi)容結(jié)構(gòu)預(yù)復(fù)習(xí)
- 麻醉藥理學(xué)阿片類鎮(zhèn)痛藥PPT
- 電子課件-《市場營銷》-A45-2298完整版教學(xué)課件全書電子講義(最新)
- 紅土鎳礦濕法冶煉技術(shù)綜述
- 隧道開挖作業(yè)臺車計算書
- 水利水電工程金屬結(jié)構(gòu)與機電設(shè)備安裝安全技術(shù)規(guī)程
- 新視野大學(xué)英語讀寫譯4U校園第一單元課后測試答案
- 國學(xué)基本知識(課堂PPT)
- 獨資公司章程范本下載
- OQC出貨檢驗報告
- FMEA培訓(xùn)資料(共38頁).ppt
- DB62∕T 4472-2021 農(nóng)村互助老人幸福院運行管理規(guī)范
評論
0/150
提交評論