第4章中斷系和定時計數(shù)器_第1頁
第4章中斷系和定時計數(shù)器_第2頁
第4章中斷系和定時計數(shù)器_第3頁
第4章中斷系和定時計數(shù)器_第4頁
第4章中斷系和定時計數(shù)器_第5頁
已閱讀5頁,還剩108頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第第4章章 中斷系統(tǒng)和定時中斷系統(tǒng)和定時/計數(shù)器計數(shù)器本章學(xué)習(xí)目標(biāo)本章學(xué)習(xí)目標(biāo) :理解中斷概念,能正確描繪單片機(jī)中斷響應(yīng)過程理解中斷概念,能正確描繪單片機(jī)中斷響應(yīng)過程熟記熟記80c5180c51單片機(jī)的單片機(jī)的5 5個中斷源及其中斷入口地址個中斷源及其中斷入口地址能按要求正確設(shè)置特殊功能寄存器能按要求正確設(shè)置特殊功能寄存器ieie、ipip、tcontcon、sconscon和和tmodtmod熟悉中斷優(yōu)先控制的方法熟悉中斷優(yōu)先控制的方法能正確描繪定時能正確描繪定時/ /計數(shù)器的計數(shù)器的4 4種工作方式,重點掌種工作方式,重點掌握方式握方式1 1、方式、方式2 2的應(yīng)用的應(yīng)用學(xué)會定時學(xué)會定時/

2、 /計數(shù)初值的計算計數(shù)初值的計算能讀懂教材中的控制實例,學(xué)會編寫同等難度的能讀懂教材中的控制實例,學(xué)會編寫同等難度的中斷、定時中斷、定時/ /計數(shù)程序計數(shù)程序4.1 中斷系統(tǒng)中斷系統(tǒng)4.1.14.1.1中斷系統(tǒng)的基本概念中斷系統(tǒng)的基本概念某人看書某人看書某人正在處理一件事某人正在處理一件事a電話鈴響電話鈴響出現(xiàn)另一件須立即解決的事出現(xiàn)另一件須立即解決的事b暫??磿鴷和?磿兄怪兄筧 書中作記號書中作記號記錄斷點,便于接續(xù)記錄斷點,便于接續(xù) 電話談話電話談話處理處理b繼續(xù)看書繼續(xù)看書繼續(xù)繼續(xù)a的工作的工作保護(hù)斷點保護(hù)斷點中斷響應(yīng)中斷響應(yīng)中斷請求中斷請求中斷返回中斷返回1.中斷的概念中斷的概念 (

3、1)現(xiàn)實生活中的中斷:)現(xiàn)實生活中的中斷: 中斷原因:中斷原因: 一個人不可能同時一個人不可能同時完成兩項任務(wù)。完成兩項任務(wù)。 單片機(jī)單片機(jī)只有一個只有一個cpu,一旦面臨,一旦面臨多任務(wù),它也會多任務(wù),它也會中斷嗎?中斷嗎?先接電話,然后再繼續(xù)看書,這樣效率最高!4.1.1中斷系統(tǒng)的基本概念中斷系統(tǒng)的基本概念(2)單片機(jī)中的中斷)單片機(jī)中的中斷 cpu在處理某一事件在處理某一事件a時,發(fā)生了另一事件時,發(fā)生了另一事件b請求請求cpu迅速去處理迅速去處理(中斷發(fā)生或中斷請求)(中斷發(fā)生或中斷請求); cpu暫時中斷當(dāng)前的工作,轉(zhuǎn)去處理事件暫時中斷當(dāng)前的工作,轉(zhuǎn)去處理事件b(中斷響(中斷響應(yīng)和中

4、斷服務(wù))應(yīng)和中斷服務(wù)); 待待cpu將事件將事件b處理完畢后,再回到原來事件處理完畢后,再回到原來事件a被中被中斷的地方繼續(xù)處理事件斷的地方繼續(xù)處理事件a(中斷返回)(中斷返回)。中斷請求中斷請求中斷響應(yīng)中斷響應(yīng)中斷服務(wù)中斷服務(wù)中斷返回中斷返回中斷過程中斷過程事件事件b的的處理過程處理過程事件事件a事件事件b2.中斷技術(shù)的應(yīng)用中斷技術(shù)的應(yīng)用 并行處理并行處理 cpu可以與多臺外設(shè)并行工作,并分時與他們進(jìn)可以與多臺外設(shè)并行工作,并分時與他們進(jìn)行信息交換,提高了行信息交換,提高了cpu的工作效率。的工作效率。 實時控制實時控制 單片機(jī)應(yīng)用系統(tǒng)可能隨機(jī)請求單片機(jī)應(yīng)用系統(tǒng)可能隨機(jī)請求cpu提供服務(wù)。有

5、提供服務(wù)。有了中斷系統(tǒng),了中斷系統(tǒng),cpu就可以立即響應(yīng)并予以處理。就可以立即響應(yīng)并予以處理。 故障處理故障處理 單片機(jī)系統(tǒng)在工作時可能會出現(xiàn)一些突發(fā)故障,如單片機(jī)系統(tǒng)在工作時可能會出現(xiàn)一些突發(fā)故障,如電源斷電,存儲器出錯,程序執(zhí)行錯誤(如除數(shù)為電源斷電,存儲器出錯,程序執(zhí)行錯誤(如除數(shù)為0)等,一旦出現(xiàn)故障,等,一旦出現(xiàn)故障,cpu就可及時轉(zhuǎn)去執(zhí)行故障處理就可及時轉(zhuǎn)去執(zhí)行故障處理程序,而不必停機(jī)。程序,而不必停機(jī)。3.中斷系統(tǒng)中斷系統(tǒng) 為實現(xiàn)中斷功能而配置的硬件和為實現(xiàn)中斷功能而配置的硬件和編寫的軟件就是中斷系統(tǒng)。編寫的軟件就是中斷系統(tǒng)。中斷功能由中斷系統(tǒng)來執(zhí)行。中斷功能由中斷系統(tǒng)來執(zhí)行。圖

6、圖4-1 中斷系統(tǒng)的結(jié)構(gòu)框圖中斷系統(tǒng)的結(jié)構(gòu)框圖4.1.2 4.1.2 中斷源中斷源中斷的申請方中斷的申請方能夠向能夠向cpu發(fā)出中斷申請的部件稱為中斷源。發(fā)出中斷申請的部件稱為中斷源。80c51單片機(jī)有單片機(jī)有5個中斷源。見下表個中斷源。見下表 那些部件可以那些部件可以向向cpu申請申請中中斷呢?斷呢?中斷源中斷源 說明說明 外部中斷 從p3.2引腳引入的外部中斷申請定時器t0中斷 定時器t0溢出時引發(fā)中斷申請外部中斷從p3.3引腳引入的外部中斷申請定時器t1中斷定時器t1溢出時引發(fā)中斷申請串行口中斷一次串行發(fā)送或接收完成后,發(fā)出中斷申請0int1int4.1.3 中斷控制中斷控制中斷的控制中

7、斷的控制“工具工具” 中斷允許寄存器中斷允許寄存器ie 中斷優(yōu)先級寄存器中斷優(yōu)先級寄存器ip 定時定時/計數(shù)器及外部中斷控制寄存器計數(shù)器及外部中斷控制寄存器tcon 串口控制寄存器串口控制寄存器scon 單片機(jī)通過對單片機(jī)通過對4個特殊功能寄存器個特殊功能寄存器實施中斷控制:實施中斷控制:1中斷允許寄存器中斷允許寄存器ie 功能:功能: 控制單片機(jī)是否接受中斷申請,以及接控制單片機(jī)是否接受中斷申請,以及接受哪一種中斷申請受哪一種中斷申請 字節(jié)地址:字節(jié)地址: a8h 其格式和每位的含義如下:其格式和每位的含義如下:圖圖4-2 ie的格式的格式由位操作指令或數(shù)據(jù)傳送指令實現(xiàn)。由位操作指令或數(shù)據(jù)傳

8、送指令實現(xiàn)。例:同時打開外部中斷例:同時打開外部中斷0和串行口中斷,可設(shè)置為:和串行口中斷,可設(shè)置為:法法1:mov ie,#10010001b 法法2:setb ea setb es setb ex0 想一想還可以怎樣實現(xiàn)?想一想還可以怎樣實現(xiàn)? ie的設(shè)置方法:的設(shè)置方法:2中斷優(yōu)先級寄存器中斷優(yōu)先級寄存器ip 功能:功能: 對對80c51單片機(jī)進(jìn)行高級別或低級別中單片機(jī)進(jìn)行高級別或低級別中斷的設(shè)置,斷的設(shè)置, ip的字節(jié)地址:的字節(jié)地址: b8h 格式和每位的含義如下:格式和每位的含義如下: 圖圖4-3 ip的格式的格式 舉例舉例 例:例:令串行口為高優(yōu)先級中斷,外部中斷令串行口為高優(yōu)先

9、級中斷,外部中斷0為為低優(yōu)先級中斷。低優(yōu)先級中斷。 設(shè)置方法:設(shè)置方法:法法1: mov ie,#10010001b ;開中斷;開中斷 mov ip,#00010000b ;設(shè)優(yōu)先級;設(shè)優(yōu)先級 法法2: mov ie,#10010001b setb ps說明:說明:此時串口的優(yōu)先級高于外部中斷此時串口的優(yōu)先級高于外部中斷0的優(yōu)先級的優(yōu)先級 答案:答案: 此時此時cpu按自然優(yōu)先級順序確定該響應(yīng)哪個按自然優(yōu)先級順序確定該響應(yīng)哪個中斷請求。中斷請求。注意:注意: 自然優(yōu)先級由硬件決定,用戶不能更改。自然優(yōu)先級由硬件決定,用戶不能更改。排列見表排列見表42表表42 中斷入口地址及自然優(yōu)先級中斷入口地

10、址及自然優(yōu)先級 3定時定時/計數(shù)器及外部中斷控制寄存器計數(shù)器及外部中斷控制寄存器tcon 功能:功能: 字節(jié)地址:字節(jié)地址: 88h可設(shè)置外部中斷申請的形式:低電平觸發(fā)還是下可設(shè)置外部中斷申請的形式:低電平觸發(fā)還是下降沿觸發(fā)降沿觸發(fā)控制定時控制定時/計數(shù)器的計時開始或停止計數(shù)器的計時開始或停止是各中斷源(串口中斷除外)是否申請中斷的標(biāo)是各中斷源(串口中斷除外)是否申請中斷的標(biāo)志位志位格式如下,各位含義見表格式如下,各位含義見表43tcon d7 d6d5d4d3d2d1d0tf1 tr1 tf0 tr0 ie1 it1 ie0 it0 形式形式 符號符號 位地址位地址 功功 能能 說說 明明

11、中斷控制 it0 88h 外部中斷外部中斷0的觸發(fā)控制位的觸發(fā)控制位it0=0:低電平觸發(fā):低電平觸發(fā) it0=1:下降沿觸發(fā):下降沿觸發(fā)it0的狀態(tài)由用的狀態(tài)由用戶通過初始化程戶通過初始化程序定義序定義 ie0 89h 外部中斷外部中斷0請求標(biāo)志位。請求標(biāo)志位。cpu采樣到外部中斷采樣到外部中斷0的中斷請求時,的中斷請求時, ie0=1cpu響應(yīng)該中斷時,響應(yīng)該中斷時, ie00 ie0的狀態(tài)由單的狀態(tài)由單片機(jī)自動設(shè)置片機(jī)自動設(shè)置 it1 8ah 外部中斷外部中斷1的觸發(fā)控制位的觸發(fā)控制位it1=0:低電平觸發(fā):低電平觸發(fā)it1=1:下降沿觸發(fā):下降沿觸發(fā) it1的狀態(tài)由用的狀態(tài)由用戶通過初

12、始化程戶通過初始化程序定義序定義 ie1 8bh 外部中斷外部中斷1的中斷請求標(biāo)志位的中斷請求標(biāo)志位cpu采樣到外部中斷采樣到外部中斷1的中斷請求時,的中斷請求時, ie1=1cpu響應(yīng)該中斷時,響應(yīng)該中斷時, ie10 ie1的狀態(tài)由單的狀態(tài)由單片機(jī)自動設(shè)置片機(jī)自動設(shè)置 表表43 tcon的功能說明的功能說明形式形式 符號符號 位地址位地址 功功 能能 說說 明明 定定時時/計計數(shù)數(shù)控控制制 tr0 8ch tr0=1:啟動定時:啟動定時/計數(shù)器計數(shù)器t0tr0=0:停止定時:停止定時/計數(shù)器計數(shù)器t0 tr0的狀態(tài)由用戶的狀態(tài)由用戶通過初始化程序定通過初始化程序定義義 tf0 8dh 定時

13、定時/計數(shù)器計數(shù)器t0溢出中斷請求位溢出中斷請求位t0定時或計數(shù)完成時定時或計數(shù)完成時tf0=1,同時,同時申請中斷申請中斷cpu響應(yīng)該中斷時,響應(yīng)該中斷時, tf00 tf0的狀態(tài)由單片的狀態(tài)由單片機(jī)自動設(shè)置機(jī)自動設(shè)置 tr1 8eh tr1=1:啟動定時:啟動定時/計數(shù)器計數(shù)器t1tr1=0:停止定時:停止定時/計數(shù)器計數(shù)器t1 tr1的狀態(tài)由用戶的狀態(tài)由用戶通過初始化程序定通過初始化程序定義義 tf1 8fh 定時定時/計數(shù)器計數(shù)器t1溢出中斷請求位溢出中斷請求位t1定時或計數(shù)完成時定時或計數(shù)完成時tf1=1,同時,同時申請中斷申請中斷cpu響應(yīng)該中斷時,響應(yīng)該中斷時, tf10tf1的

14、狀態(tài)由單片的狀態(tài)由單片機(jī)自動設(shè)置機(jī)自動設(shè)置 續(xù)表續(xù)表4 43 3 例例 1 編程設(shè)定編程設(shè)定tcon為低電平觸發(fā)的高優(yōu)先級中為低電平觸發(fā)的高優(yōu)先級中斷源。斷源。分析:分析: 這是典型的中斷初始化問題,方法一般如下:這是典型的中斷初始化問題,方法一般如下:1)對)對tcon的相關(guān)位賦值的相關(guān)位賦值2)設(shè)定所用中斷源的優(yōu)先級)設(shè)定所用中斷源的優(yōu)先級賦值賦值ip3)開中斷)開中斷置位置位ie解:解: 法法1:clr it1 setb px1 setb ex1 setb ea例例 1 法法2:clr it1 mov ip,#04h mov ie,#84h4串口控制寄存器串口控制寄存器scon 功能:功

15、能: 只有只有d1和和d0位用于中斷,作為串口中斷請位用于中斷,作為串口中斷請求標(biāo)志,即串口中斷請求寄存器求標(biāo)志,即串口中斷請求寄存器 字節(jié)地址:字節(jié)地址: 98h 格式如下:格式如下:ri為接收中斷請求標(biāo)志位。為接收中斷請求標(biāo)志位。當(dāng)串口接收完一幀串行數(shù)據(jù)時,當(dāng)串口接收完一幀串行數(shù)據(jù)時,ri自動置自動置1;cpu響應(yīng)中斷后,用軟件對響應(yīng)中斷后,用軟件對ri清清0。ti為串行口發(fā)送中斷請求標(biāo)志。為串行口發(fā)送中斷請求標(biāo)志。當(dāng)串口發(fā)送完一幀串行數(shù)據(jù)時,當(dāng)串口發(fā)送完一幀串行數(shù)據(jù)時,ti自動置自動置1,請求中斷。,請求中斷。cpu響應(yīng)中斷后,由軟件對響應(yīng)中斷后,由軟件對ti清零。清零。其他幾位的含義及

16、用法見第其他幾位的含義及用法見第5章。章。4.1.4 中斷響應(yīng)中斷響應(yīng) 無同級或高級中斷正在服務(wù)無同級或高級中斷正在服務(wù) 有中斷請求信號有中斷請求信號 相應(yīng)的中斷源已打開,即相應(yīng)的中斷源已打開,即ea=1,中斷源,中斷源對應(yīng)中斷允許位也為對應(yīng)中斷允許位也為1。 當(dāng)前的指令周期已經(jīng)結(jié)束當(dāng)前的指令周期已經(jīng)結(jié)束 如果當(dāng)前指令為如果當(dāng)前指令為reti或訪問或訪問ie和和ip的指令,的指令,至少還要再執(zhí)行完一條指令。至少還要再執(zhí)行完一條指令。1.1.中斷響應(yīng)條件中斷響應(yīng)條件2.中斷響應(yīng)過程中斷響應(yīng)過程圖圖44中斷響應(yīng)過程中斷響應(yīng)過程將當(dāng)前寄存器內(nèi)容壓入堆棧,將當(dāng)前寄存器內(nèi)容壓入堆棧,如如 push ac

17、c在中斷服務(wù)程序中實現(xiàn),解決單片在中斷服務(wù)程序中實現(xiàn),解決單片機(jī)中斷后要干什么的問題。機(jī)中斷后要干什么的問題。把保存在堆棧中的寄存器內(nèi)容取出,送把保存在堆棧中的寄存器內(nèi)容取出,送回原來的位置,如回原來的位置,如pop acc4.1.5中斷嵌套中斷嵌套答案:答案:cpu要進(jìn)行分析判斷,決定是否響應(yīng):要進(jìn)行分析判斷,決定是否響應(yīng):情況情況1: 同級或低級中斷同級或低級中斷源申請中斷,源申請中斷,cpu不予理睬不予理睬情況情況2: 高級別中斷源申高級別中斷源申請中斷,請中斷,cpu就要響就要響應(yīng)。應(yīng)。 待執(zhí)行完高級別中斷服務(wù)程序后待執(zhí)行完高級別中斷服務(wù)程序后再轉(zhuǎn)回低級中斷服務(wù)程序繼續(xù)執(zhí)行,再轉(zhuǎn)回低級

18、中斷服務(wù)程序繼續(xù)執(zhí)行,這就是這就是中斷嵌套。中斷嵌套。圖圖45 二級中斷嵌套的執(zhí)行過程二級中斷嵌套的執(zhí)行過程 軟件構(gòu)成:軟件構(gòu)成:主程序主程序+中斷服務(wù)程序中斷服務(wù)程序 程序編制的關(guān)鍵點:程序編制的關(guān)鍵點: 要對題目要求進(jìn)行精確分析,明確要對題目要求進(jìn)行精確分析,明確哪些環(huán)節(jié)應(yīng)該安排在主程序中,哪些環(huán)哪些環(huán)節(jié)應(yīng)該安排在主程序中,哪些環(huán)節(jié)應(yīng)該安排在中斷服務(wù)程序中,再分別節(jié)應(yīng)該安排在中斷服務(wù)程序中,再分別編制主程序和中斷服務(wù)程序。編制主程序和中斷服務(wù)程序。4.2 中斷的應(yīng)用中斷的應(yīng)用4.2.14.2.1中斷應(yīng)用指導(dǎo)中斷應(yīng)用指導(dǎo) 1中斷系統(tǒng)的程序編制中斷系統(tǒng)的程序編制 1中斷系統(tǒng)的程序編制中斷系統(tǒng)的

19、程序編制 (1)編制主程序編制主程序p第一部分:主程序初始化第一部分:主程序初始化 功能:功能:p第二部分:須由主程序完成的其它功能。第二部分:須由主程序完成的其它功能。此部分必須編寫此部分必須編寫用于設(shè)置堆棧位置;用于設(shè)置堆棧位置;定義觸發(fā)方式(低電平觸發(fā)或脈沖下降沿觸發(fā))定義觸發(fā)方式(低電平觸發(fā)或脈沖下降沿觸發(fā))對對ie和和ip賦值等;賦值等;(2)選擇中斷服務(wù)程序的入口地址。選擇中斷服務(wù)程序的入口地址。(3)編制中斷服務(wù)程序編制中斷服務(wù)程序。 1中斷系統(tǒng)的程序編制中斷系統(tǒng)的程序編制即明確中斷服務(wù)程即明確中斷服務(wù)程序的起始位置序的起始位置注意注意1:一般要保護(hù)斷點一般要保護(hù)斷點, 即保護(hù)進(jìn)

20、入中斷時累加器即保護(hù)進(jìn)入中斷時累加器a、進(jìn)、進(jìn)/借位標(biāo)借位標(biāo)志志cy和和sfr的狀態(tài),的狀態(tài),并在退出中斷之前將其恢復(fù);并在退出中斷之前將其恢復(fù);注意注意2:必須在中斷服務(wù)程序中設(shè)定是否允許再次中斷必須在中斷服務(wù)程序中設(shè)定是否允許再次中斷(即中斷嵌(即中斷嵌套),由用戶對套),由用戶對ex0(或(或ex1)位置位或清)位置位或清0決定。決定。說明:說明:一般在中斷服務(wù)程序中涉及到關(guān)鍵數(shù)據(jù)一般在中斷服務(wù)程序中涉及到關(guān)鍵數(shù)據(jù)的設(shè)置時應(yīng)關(guān)的設(shè)置時應(yīng)關(guān) 中斷,即禁止嵌套。中斷,即禁止嵌套。2中斷應(yīng)用舉例中斷應(yīng)用舉例三相交流電的故障檢測電路三相交流電的故障檢測電路 例例2 圖圖4-6是三相交流電的故障檢

21、測電路。當(dāng)是三相交流電的故障檢測電路。當(dāng)a相缺電時,相缺電時,發(fā)光二極管發(fā)光二極管leda 亮;當(dāng)亮;當(dāng)b相缺電時,發(fā)光二極管相缺電時,發(fā)光二極管ledb亮;亮;當(dāng)當(dāng)c相缺電時,發(fā)光二極管相缺電時,發(fā)光二極管ledc亮。亮。硬件特點:硬件特點: 外部中斷外部中斷 由由3個交流個交流繼電器的觸點和一個或非門擴(kuò)繼電器的觸點和一個或非門擴(kuò)展而成;展而成; 3個個220v的交流繼電器的的交流繼電器的線圈線圈za、zb、zc分別接在分別接在a、b、c各相和交流地之間。各相和交流地之間。圖圖4-6 三相交流電的故障檢測電路三相交流電的故障檢測電路(1)檢測原理)檢測原理三相電正常情況下三相電正常情況下3個

22、線圈同時得電個線圈同時得電3個常開觸點全都閉合個常開觸點全都閉合0001不申請外部中斷不申請外部中斷故障情況下(假設(shè)故障情況下(假設(shè)a相掉電)相掉電)(1)檢測原理)檢測原理線圈線圈za失電失電常開觸點常開觸點za斷開斷開0申請外部中斷,在外部中斷服務(wù)申請外部中斷,在外部中斷服務(wù)程序中讀取程序中讀取p1.0引腳狀態(tài)引腳狀態(tài)0011產(chǎn)生產(chǎn)生a相掉電狀態(tài)信號送相掉電狀態(tài)信號送入入p1.01在中斷服務(wù)程序中在中斷服務(wù)程序中對該引腳輸出對該引腳輸出1a相故障指示燈亮相故障指示燈亮線圈線圈zb、zc有電有電常開觸點常開觸點zb、zc閉合閉合b、c相故障指示燈不亮相故障指示燈不亮(2)軟件設(shè)計軟件設(shè)計 o

23、rg 0000hljmp main;跳至主程序;跳至主程序org 0013h;的中斷入口地址;的中斷入口地址ljmp test;轉(zhuǎn)至中斷服務(wù)程序;轉(zhuǎn)至中斷服務(wù)程序org 0100hmain:mov p1,#15h;p1.0、p1.2、p1.4作輸入;作輸入;p1.1、p1.3、p1.5輸出輸出0setb ex1;開中斷;開中斷 clr it1 ;為低電平觸發(fā);為低電平觸發(fā)setb ea;cpu開中斷開中斷sjmp $;等待中斷;等待中斷test:jnb p1.0,lb;a相正常,轉(zhuǎn)測相正常,轉(zhuǎn)測b相相setb p1.1;a相掉電,點亮相掉電,點亮ledalb:jnb p1.2,lc;b相正常,

24、轉(zhuǎn)測相正常,轉(zhuǎn)測c相相setb p1.3;b相掉電,點亮相掉電,點亮ledblc:jnb p1.4,ll;c相正常,返回相正常,返回setb p1.5;c相掉電,點亮相掉電,點亮ledcll: reti end4.2.2 4.2.2 課題與實訓(xùn)課題與實訓(xùn)7 7 中斷控制流水燈中斷控制流水燈一一.實訓(xùn)目的實訓(xùn)目的 學(xué)習(xí)外部中斷的基本用法學(xué)習(xí)外部中斷的基本用法 掌握中斷處理程序的編程方法掌握中斷處理程序的編程方法二二.課題要求課題要求 在程序正常運行時在程序正常運行時p1口的口的8個個led燈作單燈左移燈作單燈左移8次而后次而后單燈右移單燈右移7次,如此循環(huán);中斷時(即按鍵按下)則次,如此循環(huán);中

25、斷時(即按鍵按下)則p1口的口的8個個led閃爍閃爍3次(即全亮全滅次(即全亮全滅3次)次)。三三.背景知識背景知識 1中斷程序的設(shè)計主要涉及開中斷、設(shè)定優(yōu)先級,外中斷還中斷程序的設(shè)計主要涉及開中斷、設(shè)定優(yōu)先級,外中斷還 涉及觸發(fā)方式的設(shè)定。涉及觸發(fā)方式的設(shè)定。 2在軟件設(shè)計中,首先要對主程序和中斷服務(wù)程序所完成的在軟件設(shè)計中,首先要對主程序和中斷服務(wù)程序所完成的 任務(wù)進(jìn)行劃分。根據(jù)該課題提出的要求,在主程序中應(yīng)該任務(wù)進(jìn)行劃分。根據(jù)該課題提出的要求,在主程序中應(yīng)該 完成的任務(wù)是完成的任務(wù)是8個個led循環(huán)左移右移;在中斷服務(wù)程序中循環(huán)左移右移;在中斷服務(wù)程序中 應(yīng)該完成的功能是應(yīng)該完成的功能是

26、8個個led閃爍閃爍3次。次。四四.硬件電路硬件電路 硬件結(jié)構(gòu)如圖硬件結(jié)構(gòu)如圖,12引腳的按鍵點動表示有中斷請求發(fā)出。引腳的按鍵點動表示有中斷請求發(fā)出。 圖圖4-7 實訓(xùn)實訓(xùn)7電路電路 五五.參考程序參考程序 org 0000h ljmp start org 0003h ljmp int0 org 0100h start:mov sp,#60h mov ie,#81h ;開;開int0中斷中斷 setb it0 ;int0下降沿觸發(fā)下降沿觸發(fā) l1: mov a,#0ffh ;設(shè)初值;設(shè)初值 mov r0,#8 ;設(shè)定左移八次;設(shè)定左移八次 clr c ;將;將cy清清0 l2: rlc a

27、;帶進(jìn)位位循環(huán)左移一位;帶進(jìn)位位循環(huán)左移一位 mov p1,a ;送;送p1口口,p1.0燈亮燈亮 acall delay ;延時;延時0.2秒秒 djnz r0,l2 ;判斷是否左移;判斷是否左移8次次 mov r0,#7 ;移動;移動7次次l3: rrc a ;帶進(jìn)位位循環(huán)右移;帶進(jìn)位位循環(huán)右移 mov p1,a ;送;送p1口口 acall delay djnz r0,l3 ;是否右移;是否右移7次?次? ajmp l1 ;重新開始;重新開始delay:mov r5,#4 ;延時;延時0.2秒秒 d1: mov r6,#200 d2: mov r7,#123 nop djnz r7,$

28、djnz r6,d2 djnz r5,d1 retint0: push psw ;保護(hù)保護(hù)psw,acc值值 push acc mov a,#00h ;使;使8個個led全亮全亮 mov r2,#6 ;閃爍;閃爍3次(全亮全滅各次(全亮全滅各3次)次) l4:mov p1,a ;a值送出值送出 lcall delay ;延時;延時0.2秒秒 cpl a ;a值取反值取反 djnz r2,l4 ;閃爍;閃爍3次?次? pop acc ;恢復(fù)保護(hù)的;恢復(fù)保護(hù)的a值值 pop psw ;恢復(fù)保護(hù)的;恢復(fù)保護(hù)的psw值值 reti ;返回主程序;返回主程序 end 六六.總結(jié)與提高總結(jié)與提高 1. 總

29、結(jié):中斷服務(wù)程序與子程序?qū)Ρ瓤偨Y(jié):中斷服務(wù)程序與子程序?qū)Ρ裙餐c:格式相近,執(zhí)行過程大體相同共同點:格式相近,執(zhí)行過程大體相同子程序子程序 執(zhí)行時刻是確定執(zhí)行時刻是確定的,的,cpu只要執(zhí)行只要執(zhí)行l(wèi)call、acall等等調(diào)用指令就會轉(zhuǎn)去調(diào)用指令就會轉(zhuǎn)去執(zhí)行子程序執(zhí)行子程序中斷服務(wù)程序中斷服務(wù)程序 中斷申請往往是中斷申請往往是隨機(jī)發(fā)生的。中斷服隨機(jī)發(fā)生的。中斷服務(wù)程序的發(fā)生可能是務(wù)程序的發(fā)生可能是在開中斷后的任意時在開中斷后的任意時刻,也可能不發(fā)生,刻,也可能不發(fā)生,2提高提高 編寫一個由兩個中斷(外部中斷編寫一個由兩個中斷(外部中斷0、外部中斷、外部中斷1)控制的流水燈程序??刂频牧魉疅舫?/p>

30、序。要求:要求: 主程序不變,中斷主程序不變,中斷0可使可使p1.0p1.3的的led閃閃爍爍5次,中斷次,中斷1可使可使p1.4p1.7的的led閃爍閃爍5次,設(shè)次,設(shè)定中斷定中斷1的優(yōu)先級比中斷的優(yōu)先級比中斷0高。高。.3定時計數(shù)器定時計數(shù)器 1. 日常生活中定時、計數(shù)的例子:日常生活中定時、計數(shù)的例子: 如鬧鐘、畫如鬧鐘、畫“正正”統(tǒng)計選票、家用水表對水量的計數(shù)。統(tǒng)計選票、家用水表對水量的計數(shù)。 2 . 單片機(jī)應(yīng)用系統(tǒng)中定時計數(shù)的需求:單片機(jī)應(yīng)用系統(tǒng)中定時計數(shù)的需求: 如用單片機(jī)控制的打鈴器、空調(diào)的定時開關(guān)、啤酒自如用單片機(jī)控制的打鈴器、空調(diào)的定時開關(guān)、啤酒自動生產(chǎn)線上對酒瓶的計數(shù)裝置等

31、。動生產(chǎn)線上對酒瓶的計數(shù)裝置等。 3 . 80c51單片機(jī)片內(nèi)的定時單片機(jī)片內(nèi)的定時/計數(shù)器:計數(shù)器: 兩個位可編程的定時計數(shù)器:兩個位可編程的定時計數(shù)器:t0和和t1,都能定,都能定時和對外部事件進(jìn)行計數(shù)。時和對外部事件進(jìn)行計數(shù)。 此外,此外,t1還可以作為串行接口的波特率發(fā)生器。還可以作為串行接口的波特率發(fā)生器。 .3.1.3.1定時計數(shù)器的結(jié)構(gòu)定時計數(shù)器的結(jié)構(gòu).定時和計數(shù)的原理定時和計數(shù)的原理(1)計數(shù))計數(shù) 定時計數(shù)器的實質(zhì)是加計數(shù)器(位),定時計數(shù)器的實質(zhì)是加計數(shù)器(位),其原理類似于古代用來計時的水鐘:其原理類似于古代用來計時的水鐘:假設(shè)計滿一小時需要假設(shè)計滿一小時需要100,00

32、0,000滴,這稱為水鐘的計數(shù)容量滴,這稱為水鐘的計數(shù)容量16位定時位定時/計數(shù)器的計數(shù)容量是計數(shù)器的計數(shù)容量是65536單片機(jī)是對脈沖個數(shù)計數(shù),計數(shù)器每單片機(jī)是對脈沖個數(shù)計數(shù),計數(shù)器每接收到一個脈沖,計數(shù)值加接收到一個脈沖,計數(shù)值加1,當(dāng)接收滿當(dāng)接收滿65535個脈沖后,再個脈沖后,再來一個脈沖,計數(shù)值清來一個脈沖,計數(shù)值清0表明表明這一輪計數(shù)結(jié)束,同時將標(biāo)這一輪計數(shù)結(jié)束,同時將標(biāo)志位志位tf0或或tf1置置1。 (2)定時)定時 單片機(jī)內(nèi)部的計數(shù)器用作定時器時,是對標(biāo)準(zhǔn)的單片機(jī)內(nèi)部的計數(shù)器用作定時器時,是對標(biāo)準(zhǔn)的時鐘進(jìn)行了計數(shù),每來一個時鐘脈沖,計數(shù)器加時鐘進(jìn)行了計數(shù),每來一個時鐘脈沖,計

33、數(shù)器加1,只要保證計數(shù)脈沖的間隔相等,則計數(shù)值就代表了只要保證計數(shù)脈沖的間隔相等,則計數(shù)值就代表了時間的流逝。時間的流逝。單片機(jī)中的定時器和計數(shù)器其實是一個器件:單片機(jī)中的定時器和計數(shù)器其實是一個器件:計數(shù)器:計數(shù)器:是對外部發(fā)生的事件進(jìn)行計數(shù),是對外部發(fā)生的事件進(jìn)行計數(shù),定時器:定時器:是對單片機(jī)內(nèi)部的標(biāo)準(zhǔn)時鐘脈沖進(jìn)行是對單片機(jī)內(nèi)部的標(biāo)準(zhǔn)時鐘脈沖進(jìn)行計數(shù)。計數(shù)。 見圖見圖4-9 ,它是由單片機(jī)的晶振經(jīng)過,它是由單片機(jī)的晶振經(jīng)過12分頻后得到。由于分頻后得到。由于晶振的頻率很準(zhǔn),所以這個時鐘脈沖的時間間隔也很準(zhǔn)。不晶振的頻率很準(zhǔn),所以這個時鐘脈沖的時間間隔也很準(zhǔn)。不難算出,當(dāng)單片機(jī)采用難算出,

34、當(dāng)單片機(jī)采用12的晶振時,它提供給計數(shù)器的晶振時,它提供給計數(shù)器的脈沖頻率是,脈沖周期就是的脈沖頻率是,脈沖周期就是微秒。微秒。圖圖4-9 定時定時/計數(shù)器計數(shù)器t0的結(jié)構(gòu)示意圖的結(jié)構(gòu)示意圖 單片機(jī)內(nèi)部的單片機(jī)內(nèi)部的16位定時計數(shù)器由高位定時計數(shù)器由高8位和低位和低8位位兩個寄存器組成:兩個寄存器組成:l t0由由th0和和tl0組成,組成,l t1由由th1和和tl1組成,組成, 定時計數(shù)器的計數(shù)值就存放在這里面。定時定時計數(shù)器的計數(shù)值就存放在這里面。定時/計計數(shù)器數(shù)器t1的結(jié)構(gòu)與的結(jié)構(gòu)與t0相同。相同。圖圖4-9 定時定時/計數(shù)器計數(shù)器t0的結(jié)構(gòu)示意圖的結(jié)構(gòu)示意圖 2定時定時/計數(shù)器的結(jié)構(gòu)

35、計數(shù)器的結(jié)構(gòu) 再以水鐘為例,當(dāng)水不斷落下,下面容器中的水不再以水鐘為例,當(dāng)水不斷落下,下面容器中的水不斷變多,最終總有一滴水使得容器完全充滿。這時如斷變多,最終總有一滴水使得容器完全充滿。這時如果再有一滴水落下,就會發(fā)生果再有一滴水落下,就會發(fā)生“溢出溢出”。與此類似,。與此類似,16位定時計數(shù)器計滿位定時計數(shù)器計滿65536個脈沖時,也會發(fā)生溢個脈沖時,也會發(fā)生溢出。出。 定時計數(shù)器溢出后標(biāo)志位定時計數(shù)器溢出后標(biāo)志位tf0(或(或tf1)由)由0變變1,由此能夠引發(fā)定時中斷(在中斷定時方式下),這就由此能夠引發(fā)定時中斷(在中斷定時方式下),這就像定時的時間一到,鬧鐘就會響一樣像定時的時間一到

36、,鬧鐘就會響一樣。 如果采用如果采用12的晶振,對應(yīng)的脈沖周期是的晶振,對應(yīng)的脈沖周期是微秒,計滿微秒,計滿65536個脈沖所對應(yīng)的時間就是個脈沖所對應(yīng)的時間就是65.536ms。 3定時定時/計數(shù)值的設(shè)置計數(shù)值的設(shè)置再回到水鐘的例子上去:再回到水鐘的例子上去: 剛才假設(shè)下面容器滴入剛才假設(shè)下面容器滴入100,000,000滴水才會滴水才會滿,現(xiàn)在我們在開始滴水之前先放入一勺水,這樣問滿,現(xiàn)在我們在開始滴水之前先放入一勺水,這樣問題就解決了。題就解決了。 計數(shù)器的道理是一樣的,只要用預(yù)置數(shù)的方法計數(shù)器的道理是一樣的,只要用預(yù)置數(shù)的方法先在計數(shù)容器內(nèi)存入一個初值先在計數(shù)容器內(nèi)存入一個初值 (通常

37、稱為時間常(通常稱為時間常數(shù)),數(shù)),如我們要計如我們要計100,那就存入,那就存入65436,只要再來,只要再來100個脈沖,就剛好會溢出,引發(fā)中斷。個脈沖,就剛好會溢出,引發(fā)中斷。計數(shù)器初值的設(shè)置計數(shù)器初值的設(shè)置 在主頻為在主頻為12mhz的情況下,每個時鐘脈沖是的情況下,每個時鐘脈沖是1微秒,微秒,則計滿則計滿65536個脈沖需個脈沖需65.536毫秒,如要定時毫秒,如要定時10毫秒則存毫秒則存入初值入初值55536,(,(10毫秒是毫秒是10000微秒,需計數(shù)微秒,需計數(shù)10000個個脈沖)??梢姡}沖)??梢?, 定時器的定時時間長短與系統(tǒng)時鐘和定時器定時器的定時時間長短與系統(tǒng)時鐘和定

38、時器初值有關(guān)初值有關(guān)。 說明說明 1. 當(dāng)定時計數(shù)器用作計數(shù)器時,通過引腳當(dāng)定時計數(shù)器用作計數(shù)器時,通過引腳p3.4(p3.5)對外部輸入脈沖計數(shù)。對外部輸入脈沖計數(shù)。 2 . 定時計數(shù)器定時計數(shù)器t0(t1)啟動運行后,會按設(shè)定的工作啟動運行后,會按設(shè)定的工作方式獨立進(jìn)行計數(shù),不再占用方式獨立進(jìn)行計數(shù),不再占用cpu時間。當(dāng)計數(shù)器時間。當(dāng)計數(shù)器t0(t1)計滿溢出時,計滿溢出時,tf0(tf1)置置1,向,向cpu發(fā)出中斷請求信號。發(fā)出中斷請求信號。定時器初值的設(shè)置定時器初值的設(shè)置4-10 定時定時/計數(shù)器的控制關(guān)系計數(shù)器的控制關(guān)系 4.3.24.3.2定時計數(shù)器的控制定時計數(shù)器的控制 在單

39、片機(jī)中有兩個特殊功能寄存器與定時在單片機(jī)中有兩個特殊功能寄存器與定時/計數(shù)有關(guān),計數(shù)有關(guān),它們就是它們就是tmod和和tcon,定時計數(shù)器,定時計數(shù)器t0、t1就由它們來就由它們來控制:控制: tmod用于設(shè)置工作方式;用于設(shè)置工作方式; tcon用于控制其啟動、停止和中斷申請。用于控制其啟動、停止和中斷申請。 1.定時器工作方式寄存器定時器工作方式寄存器tmod tmod用于設(shè)置用于設(shè)置t0和和t1的工作方式,字節(jié)地址為的工作方式,字節(jié)地址為89h,不能按位尋址。其格式和各位的含義如下:不能按位尋址。其格式和各位的含義如下: 2定時定時/計數(shù)器控制寄存器計數(shù)器控制寄存器tcon tcon的低

40、的低4位用于控制外部中斷,高位用于控制外部中斷,高4位用于位用于控制定時控制定時/計數(shù)器的啟動和中斷申請。計數(shù)器的啟動和中斷申請。l tf0(或(或tf1) 當(dāng)計數(shù)溢出時,當(dāng)計數(shù)溢出時,tf0(或(或tf1)會自動由)會自動由0變變1,告訴我們計數(shù)已滿,我們可以通過查詢告訴我們計數(shù)已滿,我們可以通過查詢tf0(或或tf1)位的狀態(tài)來判斷計時時間是否已到;位的狀態(tài)來判斷計時時間是否已到; 如果采用定時中斷方式,則如果采用定時中斷方式,則 tf0(或(或tf1)由由0變變1時,能自動引發(fā)中斷。時,能自動引發(fā)中斷。l tr0(或或tr1) 由圖由圖4-11 可知,只有可知,只有當(dāng)當(dāng)tr0(或或tr1

41、)為為1時,開時,開關(guān)關(guān)1才能閉合,計數(shù)脈沖才才能閉合,計數(shù)脈沖才能進(jìn)入計數(shù)器,故能進(jìn)入計數(shù)器,故tr0(或或tr1)稱為運行控制位,稱為運行控制位,可可用指令用指令“setb tr0(或或tr1)”來置位以啟動定時來置位以啟動定時/計數(shù)器運行;計數(shù)器運行;或用指令或用指令“clr tr0(或或tr1)”來關(guān)來關(guān)閉定時閉定時/計數(shù)器的工作,計數(shù)器的工作,一一切全靠編程人員控制。切全靠編程人員控制。圖4-11 定時/計數(shù)器t0方式0的邏輯結(jié)構(gòu)示意圖 4.3.3 4.3.3 定時定時/ /計數(shù)器的工作方式計數(shù)器的工作方式 80c51單片機(jī)定時單片機(jī)定時/計數(shù)器計數(shù)器t0有有4種工作方式(方式種工作

42、方式(方式0、1、2、3),),t1有有3種工作方式(方式種工作方式(方式0、1、2)。)。 1. 方式方式0 當(dāng)當(dāng)tmod的的m1m0=00時,定時時,定時/計數(shù)器工作于方式計數(shù)器工作于方式0。方式方式0為為13位定時位定時/計數(shù)器,由計數(shù)器,由tl0的低的低5位和位和th0(8位)共同位)共同完成計數(shù)功能(完成計數(shù)功能(tl0的高的高3位可忽略)。位可忽略)。 當(dāng)當(dāng)tl0的低的低5位溢出時,向位溢出時,向th0產(chǎn)生進(jìn)位;產(chǎn)生進(jìn)位;th0溢出時,將溢出時,將定時器中斷請求標(biāo)志位定時器中斷請求標(biāo)志位tf0置置1,可申請中斷,也可對,可申請中斷,也可對tf0進(jìn)進(jìn)行查詢。行查詢。 圖圖4-11 定

43、時定時/計數(shù)器計數(shù)器t0方式方式0的邏輯結(jié)構(gòu)示意圖的邏輯結(jié)構(gòu)示意圖 2. 方式方式1 當(dāng)當(dāng)m1m0=01時,定時時,定時/計數(shù)器工作于方式計數(shù)器工作于方式1。方式。方式1的計的計數(shù)位數(shù)是數(shù)位數(shù)是16位,由位,由tl0作為低作為低8位,位,th0作為高作為高8位共同構(gòu)位共同構(gòu)成。其余操作同方式成。其余操作同方式0。圖圖4-12 定時定時/計數(shù)器計數(shù)器t0方式方式1的邏輯結(jié)構(gòu)示意圖的邏輯結(jié)構(gòu)示意圖3. 方式方式2 當(dāng)當(dāng)m1m0=10時,定時時,定時/計數(shù)器工作于方式計數(shù)器工作于方式2。這是自動重。這是自動重裝初值的裝初值的8位計數(shù)方式,它省去了方式位計數(shù)方式,它省去了方式0和方式和方式1在多次重復(fù)

44、在多次重復(fù)計數(shù)狀態(tài)下必須重新設(shè)定計數(shù)初值的麻煩,但是卻付出了計數(shù)狀態(tài)下必須重新設(shè)定計數(shù)初值的麻煩,但是卻付出了減小定時時間的代價。減小定時時間的代價。圖圖4-13 定時定時/計數(shù)器計數(shù)器t0方式方式2的邏輯結(jié)構(gòu)示意圖的邏輯結(jié)構(gòu)示意圖特別適合于制作比較精特別適合于制作比較精確的脈沖信號發(fā)生器。確的脈沖信號發(fā)生器。4. 方式方式3 方式方式3只適用于定時只適用于定時/計數(shù)器計數(shù)器t0。當(dāng)。當(dāng)t1被設(shè)定為方式被設(shè)定為方式3狀態(tài)時,狀態(tài)時,將停止計數(shù)。將停止計數(shù)。 當(dāng)當(dāng)m1m0=11時,時,t0工作于方式工作于方式3。 此時此時tl0和和th0作為兩個相互獨立的作為兩個相互獨立的8位定時位定時/計數(shù)器

45、使用。計數(shù)器使用。tl0既可定時又可計數(shù),它使用既可定時又可計數(shù),它使用t0的各控制位、引腳和中斷源,的各控制位、引腳和中斷源,即即c/、gate、tr0、tf0、t0(p3.4引腳)、(引腳)、(p3.2引腳);引腳);th0此時只能用作內(nèi)部定時功能,它借用了定時此時只能用作內(nèi)部定時功能,它借用了定時/計數(shù)器計數(shù)器t1的控的控制位制位tr1和和t1的中斷標(biāo)志位的中斷標(biāo)志位tf1,其啟動和停止只受,其啟動和停止只受tr1控制??刂?。圖圖4-14 定時定時/計數(shù)器計數(shù)器t0方式方式3的邏輯結(jié)構(gòu)示意圖的邏輯結(jié)構(gòu)示意圖 定時器定時器t1t1無工作方式無工作方式3 3,當(dāng)定時器,當(dāng)定時器t0t0工作在

46、方式工作在方式3 3時,定時器時,定時器t1t1可設(shè)置為方式可設(shè)置為方式0 0、方式、方式1 1和方式和方式2 2。 4.4.1應(yīng)用指導(dǎo)應(yīng)用指導(dǎo) 1定時定時/計數(shù)器的定時計數(shù)器的定時/計數(shù)范圍計數(shù)范圍 定時定時/計數(shù)器工作于不同方式下的位數(shù)不同,它所具有計數(shù)器工作于不同方式下的位數(shù)不同,它所具有的計數(shù)范圍也不一樣:的計數(shù)范圍也不一樣:l 工作方式工作方式0:13位定時位定時/計數(shù)方式,因此,最多可以計數(shù)方式,因此,最多可以計到計到213,也就是,也就是8192次。次。l 工作方式工作方式1:16位定時位定時/計數(shù)方式,因此,最多可計數(shù)方式,因此,最多可 以計到以計到216,也就是,也就是655

47、36次。次。l 工作方式工作方式2和工作方式和工作方式3:都是都是8位定時位定時/計數(shù)方計數(shù)方 式,因此,最多可以計到式,因此,最多可以計到2 8,也就是,也就是256次。次。 如果我們需要超過計數(shù)器計數(shù)范圍的定時或計數(shù)功能,應(yīng)該怎樣做?如果我們需要超過計數(shù)器計數(shù)范圍的定時或計數(shù)功能,應(yīng)該怎樣做?4.44.4定時定時/ /計數(shù)器應(yīng)用與訓(xùn)練計數(shù)器應(yīng)用與訓(xùn)練 2時間常數(shù)初值的計算時間常數(shù)初值的計算 定時定時/計數(shù)器只要預(yù)設(shè)一個時間常數(shù)初值,就可以完成不計數(shù)器只要預(yù)設(shè)一個時間常數(shù)初值,就可以完成不超過其計數(shù)范圍的任意大小的計數(shù)。算法如下:超過其計數(shù)范圍的任意大小的計數(shù)。算法如下:u 定時時間常數(shù)初值

48、定時時間常數(shù)初值x: 方式方式0 x=8192-t(fosc/12) 方式方式1 x=65536-t(fosc/12) 方式方式2、方式、方式3 x=256-t(fosc/12) 其中其中t是需要定時的時間,單位是微秒;是需要定時的時間,單位是微秒;fosc是晶振是晶振u 計數(shù)時間常數(shù)計數(shù)時間常數(shù)x: 方式方式0 x=8192-s 方式方式1 x=65536-s 方式方式2、方式、方式3 x=256-s 說明:式中說明:式中s是需要計數(shù)的次數(shù)是需要計數(shù)的次數(shù) 假設(shè)流水線上一個包裝是假設(shè)流水線上一個包裝是12盒,要求每到盒,要求每到12盒就產(chǎn)生一盒就產(chǎn)生一個動作,用單片機(jī)的工作方式個動作,用單片

49、機(jī)的工作方式0來控制,應(yīng)當(dāng)預(yù)置的計數(shù)初來控制,應(yīng)當(dāng)預(yù)置的計數(shù)初值是多少呢?值是多少呢? 對了,就是對了,就是8192-12=8180。3定時定時/計數(shù)器的初始化計數(shù)器的初始化對對80c51單片機(jī)的定時單片機(jī)的定時/計數(shù)器編程的初始化方法:計數(shù)器編程的初始化方法: 對對tmod賦值,以確定賦值,以確定t0和和t1的工作方式;的工作方式; 計算時間常數(shù)初值,并將其寫入計算時間常數(shù)初值,并將其寫入th0、tl0或或th1、 tl1; 采用中斷定時方式時,需對采用中斷定時方式時,需對ie賦值開中斷;賦值開中斷; 置位置位tr0或或tr1,啟動定時,啟動定時/計數(shù)器。計數(shù)器。 4.4.2 4.4.2 基

50、本訓(xùn)練基本訓(xùn)練初始化訓(xùn)練初始化訓(xùn)練 例例3:某牛奶生產(chǎn)線上一個包裝是某牛奶生產(chǎn)線上一個包裝是12盒,要求盒,要求每生產(chǎn)每生產(chǎn)12盒就執(zhí)行裝箱操作,用盒就執(zhí)行裝箱操作,用80c51單片機(jī)來單片機(jī)來控制,請編寫初始化程序??刂?,請編寫初始化程序。 1思路與計算:思路與計算:要確定定時器(要確定定時器(t0 或或t1),),選擇其工作方式。我們以選擇其工作方式。我們以t0的工作方式的工作方式2為例,計為例,計算時間常數(shù)并賦值給算時間常數(shù)并賦值給th0、tl0。 x=256-s=256-12=244=0f4h 2 2初始化程序:初始化程序: mov tmodmov tmod,#06h #06h ;t0

51、t0作計數(shù)器,工作于方式作計數(shù)器,工作于方式2 2 mov th0 mov th0,#0f4h #0f4h ;裝入時間常數(shù)初值;裝入時間常數(shù)初值 mov tl0mov tl0,#0f4h #0f4h ;自動重裝時間常數(shù);自動重裝時間常數(shù) mov ie mov ie ,#00h #00h ;用查詢方式確定計滿;用查詢方式確定計滿1212盒?盒?(或(或mov ie mov ie ,#82h#82h);使用);使用t0t0中斷,計滿中斷,計滿1212盒后,盒后, ;自動申請中斷;自動申請中斷 setb tr0 setb tr0 ;啟動;啟動t0t0波特率發(fā)生器波特率發(fā)生器 3 3總結(jié):總結(jié):對計數(shù)

52、過程是否結(jié)束有查詢和中斷兩對計數(shù)過程是否結(jié)束有查詢和中斷兩種方法,要合理選擇,并在程序設(shè)計中正確體現(xiàn)。種方法,要合理選擇,并在程序設(shè)計中正確體現(xiàn)。 4.4.34.4.3應(yīng)用實例應(yīng)用實例 1 定時定時/計數(shù)器用于外部脈沖寬度的測量計數(shù)器用于外部脈沖寬度的測量 (1)測量原理)測量原理 可以利用定時計數(shù)器方式寄存器可以利用定時計數(shù)器方式寄存器tmod中的門中的門控位控位gate與與 引腳配合使用,控制定時計數(shù)器的引腳配合使用,控制定時計數(shù)器的啟動與停止:啟動與停止: 當(dāng)當(dāng)gate1時,要求時,要求tr1l,且,且 為高電平,為高電平,才能啟動定時器才能啟動定時器t1計數(shù)工作;如果計數(shù)工作;如果 出

53、現(xiàn)低電平,則出現(xiàn)低電平,則t1停止計數(shù);停止計數(shù); 當(dāng)當(dāng)gate=0時,只要時,只要tr11就可以啟動定時器,就可以啟動定時器,而與而與 的輸入狀態(tài)無關(guān)。的輸入狀態(tài)無關(guān)。 可以利用定時計數(shù)器方式寄存器可以利用定時計數(shù)器方式寄存器tmod中的門中的門控位控位gate與與 引腳配合使用,控制定時計數(shù)器的引腳配合使用,控制定時計數(shù)器的啟動與停止:啟動與停止: 當(dāng)當(dāng)gate1時時,要求,要求tr1l,且,且 為高電平,為高電平,才能啟動定時器才能啟動定時器t1計數(shù)工作;如果計數(shù)工作;如果 出現(xiàn)低電平,則出現(xiàn)低電平,則t1停止計數(shù);停止計數(shù); 當(dāng)當(dāng)gate=0時,時,只要只要tr11就可以啟動定時器,就

54、可以啟動定時器,而與而與 的輸入狀態(tài)無關(guān)。的輸入狀態(tài)無關(guān)。 利用上述特點,將被測脈利用上述特點,將被測脈沖信號從(沖信號從(p3.3)引入,在)引入,在t1的程序初始化中令的程序初始化中令gate1,同時同時“setb tr1”,這樣脈,這樣脈沖信號的上升沿就能啟動沖信號的上升沿就能啟動t1計計數(shù),脈沖信號下降沿能使數(shù),脈沖信號下降沿能使t1停停止計數(shù)。利用定時器止計數(shù)。利用定時器t1的計數(shù)的計數(shù)值值m乘以機(jī)器周期就可以得到乘以機(jī)器周期就可以得到被測脈沖信號的寬度被測脈沖信號的寬度tw。(2)硬件電路)硬件電路 硬件電路簡圖如圖硬件電路簡圖如圖4-15。 (3)程序設(shè)計)程序設(shè)計 利用利用80

55、c51的內(nèi)部的內(nèi)部ram30h、31h單元保存被測脈沖寬單元保存被測脈沖寬度對應(yīng)的計數(shù)值。度對應(yīng)的計數(shù)值。 參考程序如下:參考程序如下: org 0000h ajmp main org 0100h main:mov sp,#60h ;設(shè)堆棧指針;設(shè)堆棧指針 mov tmod,#90h;設(shè)置控制字,;設(shè)置控制字,t1工作于方式工作于方式 ; 1,gate=1 mov th1,#00h ;設(shè)定計數(shù)初值為;設(shè)定計數(shù)初值為00h mov tl1 mov tl1,#00h#00hl1l1: jb p3.3jb p3.3,l1 l1 ;等待輸入變?yōu)榈碗娖?;等待輸入變?yōu)榈碗娖?setb tr1 setb t

56、r1 ;預(yù)置;預(yù)置tr1=1tr1=1,準(zhǔn)備啟動,準(zhǔn)備啟動t1t1l2l2: jnb p3.3jnb p3.3,l2 l2 ;等待上升沿,以便開始計數(shù);等待上升沿,以便開始計數(shù)l3l3: jb p3.3jb p3.3,l3 l3 ;是高電平則計數(shù)繼續(xù);是高電平則計數(shù)繼續(xù) clr tr1 clr tr1 ;低電平則停止計數(shù);低電平則停止計數(shù) mov amov a,tl1tl1 ;讀低位計數(shù)值;讀低位計數(shù)值 mov 30hmov 30h,a a ;低位計數(shù)值存于;低位計數(shù)值存于30h30h mov a mov a,th1th1 ;讀高位計數(shù)值;讀高位計數(shù)值 mov 31hmov 31h,a a ;

57、高位計數(shù)值存于;高位計數(shù)值存于31h31h end end (4)總結(jié)與思考)總結(jié)與思考 定時定時/計數(shù)器還可用于測量脈沖信號的頻率、周期等。本計數(shù)器還可用于測量脈沖信號的頻率、周期等。本實例是利用定時實例是利用定時/計數(shù)器的門控位(計數(shù)器的門控位(gate)測量脈沖寬度。但)測量脈沖寬度。但要注意,在晶振要注意,在晶振12mhz的情況下,被測脈沖寬度范圍最大為的情況下,被測脈沖寬度范圍最大為655351s=65.536ms。 ,如果要測量脈沖信號的周期,該如何去做?,如果要測量脈沖信號的周期,該如何去做? 2計數(shù)器用于繞線機(jī)的控制計數(shù)器用于繞線機(jī)的控制 繞線機(jī)常用于對電機(jī)或變壓器的繞組進(jìn)行繞

58、制,圖繞線機(jī)常用于對電機(jī)或變壓器的繞組進(jìn)行繞制,圖4-16是是繞線機(jī)的控制電路。當(dāng)按下工作按鈕以后,機(jī)器啟動,繞線機(jī)繞線機(jī)的控制電路。當(dāng)按下工作按鈕以后,機(jī)器啟動,繞線機(jī)在直流電機(jī)和減速齒輪的帶動下開始工作。當(dāng)繞線架上的線圈在直流電機(jī)和減速齒輪的帶動下開始工作。當(dāng)繞線架上的線圈繞到規(guī)定的圈數(shù)時,繞線機(jī)會自動停止繞線。如果再次按下工繞到規(guī)定的圈數(shù)時,繞線機(jī)會自動停止繞線。如果再次按下工作按鈕,繞線機(jī)會重復(fù)以上過程。作按鈕,繞線機(jī)會重復(fù)以上過程。圖圖4-16 繞線機(jī)的控制電路繞線機(jī)的控制電路控制說明:1軟件控制p1.0=0時,繞線機(jī)開始繞線;p1.0=1時,繞線機(jī)不繞線。 2繞線機(jī)每繞一圈,繞線機(jī)

59、脈沖產(chǎn)生電路就產(chǎn)生一個脈沖信號。 (1)工作原理)工作原理 由于單片機(jī)復(fù)位后由于單片機(jī)復(fù)位后p1 口的輸出狀態(tài)全部為口的輸出狀態(tài)全部為1,所以,所以系統(tǒng)系統(tǒng)上電后上電后,p1.0輸出高電平輸出高電平“1”繞線機(jī)不工作。繞線機(jī)不工作。 當(dāng)按下工作按鈕以后,當(dāng)按下工作按鈕以后,p1.1輸入低電平輸入低電平“0”,當(dāng)程序檢,當(dāng)程序檢測到測到p1.1=0時,在程序指令的控制下從時,在程序指令的控制下從p1.0輸出低電平輸出低電平“0”。繞線機(jī)開始繞線。繞線機(jī)每繞一圈,定時繞線機(jī)開始繞線。繞線機(jī)每繞一圈,定時/計數(shù)器計數(shù)器t1的輸入引的輸入引腳上就會產(chǎn)生一個負(fù)跳變的輸入脈沖。因此,只要用定時腳上就會產(chǎn)生

60、一個負(fù)跳變的輸入脈沖。因此,只要用定時/計計數(shù)器數(shù)器t1的計數(shù)功能控制好輸入脈沖的個數(shù),就等于控制了繞的計數(shù)功能控制好輸入脈沖的個數(shù),就等于控制了繞線機(jī)的繞線圈數(shù)。線機(jī)的繞線圈數(shù)。 當(dāng)繞線機(jī)纏繞到指定的圈數(shù)時,當(dāng)繞線機(jī)纏繞到指定的圈數(shù)時,定時定時/計數(shù)器計數(shù)器t1引發(fā)計數(shù)引發(fā)計數(shù)中斷,在程序指令的控制下,中斷,在程序指令的控制下,p1.0將輸出的高電平將輸出的高電平“1”,使,使電機(jī)停轉(zhuǎn),制動器恢復(fù)制動,于是系統(tǒng)回到最初的停機(jī)狀態(tài)。電機(jī)停轉(zhuǎn),制動器恢復(fù)制動,于是系統(tǒng)回到最初的停機(jī)狀態(tài)。 我們假設(shè)繞線架的規(guī)定匝數(shù)是我們假設(shè)繞線架的規(guī)定匝數(shù)是5000圈,為控制這個圈數(shù),圈,為控制這個圈數(shù),可以設(shè)定

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論