




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