任務(wù)三流水燈定時(shí)控制_第1頁
任務(wù)三流水燈定時(shí)控制_第2頁
任務(wù)三流水燈定時(shí)控制_第3頁
任務(wù)三流水燈定時(shí)控制_第4頁
任務(wù)三流水燈定時(shí)控制_第5頁
已閱讀5頁,還剩79頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、教學(xué)導(dǎo)航教學(xué)導(dǎo)航任務(wù)單任務(wù)單任務(wù)準(zhǔn)備任務(wù)準(zhǔn)備案例示范案例示范知識(shí)梳理與總結(jié)知識(shí)梳理與總結(jié)任務(wù)作業(yè)任務(wù)作業(yè)教教知識(shí)重點(diǎn)(1)中斷控制用寄存器;(2)中斷服務(wù)函數(shù)的編寫;(3)定時(shí)器工作方式及控制寄存器的使用知識(shí)難點(diǎn)定時(shí)器工作方式;中斷服務(wù)函數(shù)的編寫推薦教學(xué)方式以任務(wù)入手,通過流水燈的定時(shí)控制程序的編寫逐漸認(rèn)識(shí)中斷系統(tǒng)、定時(shí)器/計(jì)數(shù)器的作用,深化對(duì)中斷系統(tǒng)與定時(shí)器的理解,掌握中斷服務(wù)函數(shù)的編寫方法及中斷響應(yīng)的機(jī)制。建議學(xué)時(shí)6學(xué)時(shí)學(xué)學(xué)推薦學(xué)習(xí)方法通過對(duì)教師提供的電路圖,編寫程序,完成仿真調(diào)試,理解相關(guān)理論知識(shí),學(xué)會(huì)應(yīng)用。必須掌握的理論知識(shí)(1)單片機(jī)中斷系統(tǒng); (2)中斷控制用寄存器;(3)中斷服務(wù)

2、函數(shù)的編寫; (4)單片機(jī)定時(shí)器結(jié)構(gòu);(5)工作方式及控制寄存器;(6)定時(shí)器的應(yīng)用必須掌握的技能中斷程序、定時(shí)器應(yīng)用程序的編寫,仿真調(diào)試技巧。教學(xué)導(dǎo)航教學(xué)導(dǎo)航任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈任務(wù)單任務(wù)單任務(wù)描述任務(wù)二是利用單片機(jī)的并行I/O口外接流水燈,采用并行輸入/輸出方式控制發(fā)光二極管實(shí)現(xiàn)流水燈,在實(shí)現(xiàn)該任務(wù)時(shí),每次點(diǎn)亮一個(gè)燈后要延時(shí),否則無法看到流水燈效果,任務(wù)二通過軟件方法實(shí)現(xiàn)延時(shí)。本任務(wù)要求利用單片機(jī)的定時(shí)器/計(jì)數(shù)器,讓流水燈指定時(shí)間循環(huán)點(diǎn)亮發(fā)光二極管。任務(wù)要求如圖3-1所示,由P0連接8只發(fā)光二極管,實(shí)現(xiàn)如下流水燈的功能:(1)要求每隔1s從左至右循環(huán)點(diǎn)亮發(fā)光

3、二極管;(2)按自定時(shí)間間隔從左至右循環(huán)點(diǎn)亮發(fā)光二極管,點(diǎn)亮最右邊的發(fā)光二極管后,再從右至左循環(huán)點(diǎn)亮。實(shí)現(xiàn)方法1利用Proteus仿真運(yùn)行,按任務(wù)要求實(shí)現(xiàn)流水燈。2在實(shí)訓(xùn)設(shè)備上按任務(wù)要求連線,運(yùn)行程序。任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈3.1 中斷系統(tǒng)3.2 定時(shí)器/計(jì)數(shù)器任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈3.1 3.1 中斷系統(tǒng)中斷系統(tǒng)3.1.1 3.1.1 中斷的概念與作用中斷的概念與作用3.1.2 MCS 3.1.2 MCS 51 51單片機(jī)中斷系統(tǒng)單片機(jī)中斷系統(tǒng)3.1.3 3.1.3 中斷服務(wù)函數(shù)中斷服務(wù)函數(shù) 任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方

4、式控制流水燈 3.1.1 3.1.1 中斷的概念與作用中斷的概念與作用外部設(shè)備是微機(jī)的重要組成部分,而微機(jī)和外部設(shè)備之間不是直接相連的,而是通過不同的接口電路來達(dá)到彼此間的信息傳送的。CPU與外部交換信息的方式:(1)程序控制傳送方式(2)中斷傳送方式(3)直接存儲(chǔ)器存?。―MA)方式任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈1.1.中斷的定義中斷的定義 你正在專心看書,突然電話鈴響,于是你記下正在看的書的頁數(shù),去接電話,接完電話后再回來接著看書。日常中斷的例子日常中斷的例子任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈什么是中斷?什么是中斷? 中斷是指計(jì)算機(jī)在執(zhí)行某段程序的過

5、程中中斷是指計(jì)算機(jī)在執(zhí)行某段程序的過程中, 由于計(jì)算機(jī)系統(tǒng)內(nèi)、外的某種原因由于計(jì)算機(jī)系統(tǒng)內(nèi)、外的某種原因, 暫時(shí)中止原暫時(shí)中止原程序的執(zhí)行程序的執(zhí)行, 轉(zhuǎn)去執(zhí)行相應(yīng)的處理程序轉(zhuǎn)去執(zhí)行相應(yīng)的處理程序, 并中斷并中斷服務(wù)程序執(zhí)行完后服務(wù)程序執(zhí)行完后, 再回來繼續(xù)執(zhí)行被中斷的原再回來繼續(xù)執(zhí)行被中斷的原程序的過程。程序的過程。 任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈1)CPU與外設(shè)并行工作。解決與外設(shè)并行工作。解決CPU速度快、外設(shè)速度速度快、外設(shè)速度慢的矛盾。慢的矛盾。2)實(shí)時(shí)處理??刂葡到y(tǒng)往往有許多數(shù)據(jù)需要采集或輸實(shí)時(shí)處理。控制系統(tǒng)往往有許多數(shù)據(jù)需要采集或輸出。實(shí)時(shí)控制中有的數(shù)據(jù)難以

6、估計(jì)何時(shí)需要交換。出。實(shí)時(shí)控制中有的數(shù)據(jù)難以估計(jì)何時(shí)需要交換。3)故障處理。計(jì)算機(jī)系統(tǒng)的故障往往隨機(jī)發(fā)生,如電故障處理。計(jì)算機(jī)系統(tǒng)的故障往往隨機(jī)發(fā)生,如電源斷電、運(yùn)算溢出、存儲(chǔ)器出錯(cuò)等。采用中斷技術(shù),系統(tǒng)源斷電、運(yùn)算溢出、存儲(chǔ)器出錯(cuò)等。采用中斷技術(shù),系統(tǒng)故障一旦出現(xiàn),就能及時(shí)處理。故障一旦出現(xiàn),就能及時(shí)處理。4)實(shí)現(xiàn)人機(jī)交互:人和單片機(jī)交互一般采用鍵盤和)實(shí)現(xiàn)人機(jī)交互:人和單片機(jī)交互一般采用鍵盤和按鍵,可以采用中斷的方式實(shí)現(xiàn),中斷方式時(shí)按鍵,可以采用中斷的方式實(shí)現(xiàn),中斷方式時(shí)CPU執(zhí)行效執(zhí)行效率高,而且可以保證人機(jī)交互的實(shí)時(shí)性,故中斷方式在人率高,而且可以保證人機(jī)交互的實(shí)時(shí)性,故中斷方式在人機(jī)

7、交互中得到廣泛應(yīng)用。機(jī)交互中得到廣泛應(yīng)用。任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈3.1.2 MCS-513.1.2 MCS-51中斷系統(tǒng)中斷系統(tǒng)中斷系統(tǒng)是指能實(shí)現(xiàn)中斷功能的那部分硬件電路中斷系統(tǒng)是指能實(shí)現(xiàn)中斷功能的那部分硬件電路和軟件程序。和軟件程序。對(duì)于對(duì)于MCS-51單片機(jī),大部分中斷電路都是集成單片機(jī),大部分中斷電路都是集成在芯片內(nèi)部的,只有和中斷輸入線上的中斷請(qǐng)求在芯片內(nèi)部的,只有和中斷輸入線上的中斷請(qǐng)求信號(hào)產(chǎn)生電路才分散在各中斷源電路或接口芯片信號(hào)產(chǎn)生電路才分散在各中斷源電路或接口芯片電路里。電路里。 任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈 IE0TCON

8、SCONINT0 IT0=0 IT0=1INT1 IT1=0 IT1=1TF0 IE1TF1T0T1TIRITXDRXDESET0EX0EX1ET1EA自然優(yōu)先級(jí)自然優(yōu)先級(jí)矢量地址高級(jí)中斷請(qǐng)求高級(jí)中斷請(qǐng)求自然優(yōu)先級(jí)自然優(yōu)先級(jí)矢量地址低級(jí)中斷請(qǐng)求低級(jí)中斷請(qǐng)求PX0PT0PX1PT1PSIEIP 中斷標(biāo)志位中斷源允許總允許EA中斷優(yōu)先級(jí)任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈1. MCS-511. MCS-51的中斷源和中斷標(biāo)志的中斷源和中斷標(biāo)志 中斷源是指中斷源是指引起中斷的事件。引起中斷的事件。 在單片機(jī)中,中斷源是指引起中斷原因的設(shè)備或在單片機(jī)中,中斷源是指引起中斷原因的設(shè)備或事

9、件,或發(fā)出中斷請(qǐng)求信號(hào)的源泉。事件,或發(fā)出中斷請(qǐng)求信號(hào)的源泉。通常有通常有I/O設(shè)備、實(shí)時(shí)控制系統(tǒng)中的隨機(jī)參數(shù)和信息故障源設(shè)備、實(shí)時(shí)控制系統(tǒng)中的隨機(jī)參數(shù)和信息故障源等。等。任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈1)外部中斷源:MCS-51系列單片機(jī)有2個(gè)外中斷源,稱為外中斷0和1,經(jīng)由單片機(jī)上的P3.2、P3.3這兩個(gè)外部引腳引入,為 、 。 2)內(nèi)部中斷源 定時(shí)器溢出中斷源。定時(shí)器溢出中斷源由內(nèi)部定時(shí)器/計(jì)數(shù)器產(chǎn)生,屬于內(nèi)部中斷。 串行口中斷源。串行口中斷是由內(nèi)部串行口中斷源產(chǎn)生。 INT1INT0(1) (1) 中斷源中斷源任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈

10、1)TCON中的中斷標(biāo)志位中的中斷標(biāo)志位 D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0(2)(2)中斷請(qǐng)求標(biāo)志中斷請(qǐng)求標(biāo)志(MSB)8FH 8EH 8DH 8CH 8BH 8AH 89H 88H(LSB) 外部中斷外部中斷INT0中斷標(biāo)志中斷標(biāo)志位位(TCON.1) : IE01,外部中斷1向CPU申請(qǐng)中斷 外部中斷外部中斷INT0觸發(fā)方式觸發(fā)方式控制位控制位(TCON.0): IT0=0,電平觸發(fā)方式 IT0=1, 下降沿觸發(fā)方式注意:該寄存器可以位尋址。任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈: 在電平觸發(fā)方式下,在電平觸發(fā)方式下,CPUCP

11、U響應(yīng)中斷時(shí),不能自動(dòng)清除響應(yīng)中斷時(shí),不能自動(dòng)清除IE0IE0標(biāo)標(biāo)志。也就是說,志。也就是說,IE0IE0狀態(tài)完全由狀態(tài)完全由 狀態(tài)決定,所以在中斷狀態(tài)決定,所以在中斷返回前必須撤除返回前必須撤除 的低電平的低電平, ,否則會(huì)引起重復(fù)中斷;否則會(huì)引起重復(fù)中斷; 而在負(fù)跳變觸發(fā)方式下,當(dāng)而在負(fù)跳變觸發(fā)方式下,當(dāng)CPUCPU響應(yīng)中斷時(shí),硬件會(huì)自動(dòng)使響應(yīng)中斷時(shí),硬件會(huì)自動(dòng)使IE0IE0清清0 0。 在負(fù)跳變觸發(fā)方式下,為保證在負(fù)跳變觸發(fā)方式下,為保證CPUCPU能檢測(cè)到負(fù)跳變,的高、能檢測(cè)到負(fù)跳變,的高、低電平時(shí)間至少應(yīng)保持低電平時(shí)間至少應(yīng)保持1 1個(gè)機(jī)器周期。個(gè)機(jī)器周期。INT0INT0采樣INT

12、0采樣INT0采樣INT0任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈1)TCON的中斷標(biāo)志位的中斷標(biāo)志位 TCON8FH 8EH 8DH 8CH 8BH 8AH 89H 88HD7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0T0溢出中斷標(biāo)志溢出中斷標(biāo)志(TCON.5): T0啟動(dòng)計(jì)數(shù)后,計(jì)滿溢出由硬件置位TF0=1,向CPU請(qǐng)求中斷,此標(biāo)志一直保持到CPU響應(yīng)中斷后,才由硬件自動(dòng)清0。也可用軟件查詢?cè)摌?biāo)志,并由軟件清0。任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈 D7D6D5D4D3D2D1D0SM0 SM1 SM2 RENTB8RB8TIR

13、I2) SCON的中斷標(biāo)志位的中斷標(biāo)志位(MSB)9FH 9EH 9DH 9CH 9BH 9AH 99H 98H(LSB) 注意:該寄存器可以位尋址!RI (SCON.0)串行接收中斷標(biāo)志。TI (SCON.1)串行發(fā)送中斷標(biāo)志。任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈(1)中斷允許控制)中斷允許控制中斷允許寄存器IE 2. 中斷控制中斷控制D7D6D5D4D3D2D1D0EAESET1EX1ET0EX0(MSB)AFH AEH ADH ACH ABH AAH A9H A8H(LSB)中斷允許寄存器IE對(duì)中斷的開放和關(guān)閉實(shí)行兩級(jí)控制。所謂兩級(jí)控制,就是有一個(gè)總開、關(guān)中斷控制位EA,

14、當(dāng)EA0時(shí),則屏蔽所有的中斷申請(qǐng),即任何中斷申請(qǐng)都不接受;當(dāng)EA1時(shí),CPU開放中斷,但五個(gè)中斷源還要由IE的低5位的各對(duì)應(yīng)控制位的狀態(tài)進(jìn)行中斷允許控制。任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈實(shí)例3-1如果我們要設(shè)置外中斷1、定時(shí)器1中斷允許,其它不允許,請(qǐng)?jiān)O(shè)置IE的相應(yīng)值。位D7D6D5D4D3D2D1D0符號(hào)EAESET1EX1ET0EX0值10001100(MSB)AFH AEH ADH ACH ABH AAH A9H A8H(LSB)(a)SFR賦值IE=0 x8c(b)用位賦值EA1;CPU開中斷ET11;定時(shí)/計(jì)數(shù)器1允許中斷EX11;外中斷T1允許中斷任務(wù)任務(wù)3 以

15、定時(shí)方式控制流水燈以定時(shí)方式控制流水燈(2 2)中斷優(yōu)先級(jí)控制)中斷優(yōu)先級(jí)控制 MCS-51單片機(jī)有兩個(gè)中斷優(yōu)先級(jí):?jiǎn)纹瑱C(jī)有兩個(gè)中斷優(yōu)先級(jí):高級(jí)中斷和和低級(jí)中斷。 每一個(gè)中斷源都可以通過編程確定為高優(yōu)先級(jí)中斷或低優(yōu)先每一個(gè)中斷源都可以通過編程確定為高優(yōu)先級(jí)中斷或低優(yōu)先級(jí)中斷。級(jí)中斷。 若若CPU當(dāng)前正在為低優(yōu)先級(jí)中斷服務(wù),在開中斷的條件下,當(dāng)前正在為低優(yōu)先級(jí)中斷服務(wù),在開中斷的條件下,它能被另一個(gè)高優(yōu)先級(jí)中斷請(qǐng)求所中斷,轉(zhuǎn)去為高級(jí)中斷服它能被另一個(gè)高優(yōu)先級(jí)中斷請(qǐng)求所中斷,轉(zhuǎn)去為高級(jí)中斷服務(wù),再返回到被中斷了的低級(jí)中斷的服務(wù)程序,這即為務(wù),再返回到被中斷了的低級(jí)中斷的服務(wù)程序,這即為中斷嵌套。

16、任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈中斷嵌套過程中斷嵌套過程CPU執(zhí)行執(zhí)行高級(jí)中斷高級(jí)中斷服務(wù)服務(wù)高級(jí)中斷請(qǐng)求高級(jí)中斷請(qǐng)求返回低級(jí)中斷程序返回低級(jí)中斷程序返回主程序返回主程序響應(yīng)高級(jí)中斷響應(yīng)高級(jí)中斷低級(jí)中斷請(qǐng)求低級(jí)中斷請(qǐng)求CPU執(zhí)行執(zhí)行低級(jí)中斷低級(jí)中斷響應(yīng)低級(jí)中斷響應(yīng)低級(jí)中斷CPU在執(zhí)行在執(zhí)行的主程序的主程序任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈中斷優(yōu)先級(jí)寄存器中斷優(yōu)先級(jí)寄存器IPIPD7D6D5D4D3D2D1D0PSPT1PX1PT0PX0(MSB)BFH BEH BDH BCH BBH BAH B9H B8H(LSB) 專用寄存器專用寄存器IP為中斷優(yōu)先級(jí)寄

17、存器為中斷優(yōu)先級(jí)寄存器用戶可用軟件設(shè)定相應(yīng)位為用戶可用軟件設(shè)定相應(yīng)位為1,對(duì)應(yīng)的中斷源被設(shè)置為,對(duì)應(yīng)的中斷源被設(shè)置為高優(yōu)高優(yōu)先級(jí)先級(jí),相應(yīng)位為,相應(yīng)位為0,對(duì)應(yīng)的中斷源被設(shè)置為低優(yōu)先級(jí),對(duì)應(yīng)的中斷源被設(shè)置為低優(yōu)先級(jí) 系統(tǒng)復(fù)位時(shí),均為低優(yōu)先級(jí)系統(tǒng)復(fù)位時(shí),均為低優(yōu)先級(jí) 該寄存器可以位尋址該寄存器可以位尋址任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈自然優(yōu)先權(quán)順序自然優(yōu)先權(quán)順序 中中 斷斷 源源同級(jí)內(nèi)優(yōu)先權(quán)排列同級(jí)內(nèi)優(yōu)先權(quán)排列外部中斷0中斷(IE0)定時(shí)器/計(jì)數(shù)器0中斷(TF0)外部中斷1中斷(IE1)定時(shí)器/計(jì)數(shù)器1中斷(TF1)串行接口中斷(TI/RI) 最 高 最 低任務(wù)任務(wù)3 以定時(shí)

18、方式控制流水燈以定時(shí)方式控制流水燈MCS-51系列單片機(jī)中斷響應(yīng)原則:系列單片機(jī)中斷響應(yīng)原則:1)高級(jí)中斷請(qǐng)求可以中斷正在執(zhí)行的低級(jí)中斷。高級(jí)中斷請(qǐng)求可以中斷正在執(zhí)行的低級(jí)中斷。2)同級(jí)或低級(jí)中斷請(qǐng)求不能中斷正在執(zhí)行的中斷。同級(jí)或低級(jí)中斷請(qǐng)求不能中斷正在執(zhí)行的中斷。3)多個(gè)中斷源同時(shí)向多個(gè)中斷源同時(shí)向CPU申請(qǐng)中斷,首先響應(yīng)優(yōu)先級(jí)別最高申請(qǐng)中斷,首先響應(yīng)優(yōu)先級(jí)別最高的中斷請(qǐng)求;多個(gè)同級(jí)中斷源同時(shí)向的中斷請(qǐng)求;多個(gè)同級(jí)中斷源同時(shí)向CPU申請(qǐng)中斷,申請(qǐng)中斷,CPU通過通過內(nèi)部硬件查詢,按自然優(yōu)先級(jí)確定優(yōu)先響應(yīng)哪一個(gè)中斷請(qǐng)求。內(nèi)部硬件查詢,按自然優(yōu)先級(jí)確定優(yōu)先響應(yīng)哪一個(gè)中斷請(qǐng)求。任務(wù)任務(wù)3 以定時(shí)方

19、式控制流水燈以定時(shí)方式控制流水燈解:IP的首3位沒用,可任意取值,設(shè)為000,后面根據(jù)要求寫就可以了。位位D7D6D5D4D3D2D1D0符號(hào)符號(hào)XXXPSPT1PX1PT0PX0值值00000110實(shí)例實(shí)例3-2 3-2 設(shè)有如下要求,將設(shè)有如下要求,將T0T0、外中斷、外中斷1 1設(shè)為高優(yōu)先級(jí)設(shè)為高優(yōu)先級(jí),其它為低優(yōu)先級(jí),求,其它為低優(yōu)先級(jí),求IPIP的值。的值。IP的值就是的值就是06H。任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈實(shí)例實(shí)例3-3 3-3 在上例中,如果在上例中,如果5 5個(gè)中斷請(qǐng)求同時(shí)發(fā)生個(gè)中斷請(qǐng)求同時(shí)發(fā)生,求中斷響應(yīng),求中斷響應(yīng)的次序。的次序。解:響應(yīng)次序?yàn)榻?/p>

20、:響應(yīng)次序?yàn)槎〞r(shí)器定時(shí)器0外中斷外中斷1外中斷外中斷0實(shí)時(shí)器實(shí)時(shí)器1串行串行中斷。中斷。 位位D7D6D5D4D3D2D1D0符號(hào)符號(hào)XXXPSPT1PX1PT0PX0值值00000110任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈(1)中斷響應(yīng)的時(shí)序)中斷響應(yīng)的時(shí)序任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈 沒有同級(jí)或高優(yōu)先級(jí)的中斷正在處理; 正在執(zhí)行指令必須執(zhí)行完最后一個(gè)機(jī)器周期(換言之, 正在執(zhí)行的指令完成前, 任何中斷請(qǐng)求都得不到響應(yīng)); 若正在RETI或讀寫IE或IP寄存器,則必須執(zhí)行完當(dāng)前指令的下一條其它指令之后才會(huì)響應(yīng)。 任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方

21、式控制流水燈單片機(jī)一旦響應(yīng)中斷請(qǐng)求單片機(jī)一旦響應(yīng)中斷請(qǐng)求, 就由硬件完成以下功能就由硬件完成以下功能: 自動(dòng)清除相應(yīng)的中斷請(qǐng)求標(biāo)志位(串行口中斷請(qǐng)求標(biāo)自動(dòng)清除相應(yīng)的中斷請(qǐng)求標(biāo)志位(串行口中斷請(qǐng)求標(biāo)志志RI和和TI除外)除外); 保護(hù)斷點(diǎn)和現(xiàn)場(chǎng),把被響應(yīng)的中斷源所對(duì)應(yīng)的中斷服保護(hù)斷點(diǎn)和現(xiàn)場(chǎng),把被響應(yīng)的中斷源所對(duì)應(yīng)的中斷服務(wù)程序的入口地址(中斷矢量)送入務(wù)程序的入口地址(中斷矢量)送入PC, 從而轉(zhuǎn)入相應(yīng)的中從而轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序。斷服務(wù)程序。 結(jié)束中斷服務(wù)程序,恢復(fù)斷點(diǎn)和現(xiàn)場(chǎng),并返回響應(yīng)中斷結(jié)束中斷服務(wù)程序,恢復(fù)斷點(diǎn)和現(xiàn)場(chǎng),并返回響應(yīng)中斷之前的程序繼續(xù)執(zhí)行。之前的程序繼續(xù)執(zhí)行。任務(wù)任務(wù)3 以

22、定時(shí)方式控制流水燈以定時(shí)方式控制流水燈3.1.3 3.1.3 中斷服務(wù)函數(shù)中斷服務(wù)函數(shù)C51編譯器支持在編譯器支持在C語言源程序中直接編寫語言源程序中直接編寫8051單片機(jī)的中斷服務(wù)函數(shù),從而減輕使用匯編語言單片機(jī)的中斷服務(wù)函數(shù),從而減輕使用匯編語言的繁瑣程度,提高了開發(fā)效率。的繁瑣程度,提高了開發(fā)效率。任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈1.1.中斷服務(wù)函數(shù)的一般形式中斷服務(wù)函數(shù)的一般形式void 函數(shù)名(void) interrupt m unsing n代表中斷號(hào),是一個(gè)常量,取值范圍是0-31。C51編譯器允許32個(gè)中斷,從8m+3處產(chǎn)生中斷向量 代表中斷函數(shù)將要選擇使

23、用的寄存器組,也是一個(gè)常量,取值范圍是03。 任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈程序存儲(chǔ)器程序存儲(chǔ)器ROM0000H:復(fù)位后,程序的入口地址(PC=0000H)0023H:串行口中斷入口(中斷號(hào)m=4)0003H:外部中斷0入口(中斷號(hào)m=0)000BH:定時(shí)器/計(jì)數(shù)器0中斷入口(中斷號(hào)m=1)0013H:外部中斷1入口(中斷號(hào)m=2)001BH:定時(shí)器1 /計(jì)數(shù)器中斷入口(中斷號(hào)m=3)002BHMCS-51MCS-51單片機(jī)中斷入口單片機(jī)中斷入口8字節(jié)任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈關(guān)于關(guān)于USING的說明的說明 using不僅可以用于中斷服務(wù)函數(shù)的定

24、義中,也可以用于普不僅可以用于中斷服務(wù)函數(shù)的定義中,也可以用于普通的內(nèi)部函數(shù),但不能用于外部函數(shù)。通的內(nèi)部函數(shù),但不能用于外部函數(shù)。 就中斷服務(wù)函數(shù)而言就中斷服務(wù)函數(shù)而言 如果不使用如果不使用using,則在進(jìn)入中斷服務(wù)函數(shù)的時(shí)候,中斷,則在進(jìn)入中斷服務(wù)函數(shù)的時(shí)候,中斷函數(shù)中所用到的全部工作寄存器都要入棧,函數(shù)返回之前函數(shù)中所用到的全部工作寄存器都要入棧,函數(shù)返回之前所有的寄存器內(nèi)容出棧;所有的寄存器內(nèi)容出棧; 如果使用如果使用using,則在進(jìn)入中斷服務(wù)函數(shù)的時(shí)候,只將當(dāng),則在進(jìn)入中斷服務(wù)函數(shù)的時(shí)候,只將當(dāng)前工作寄存器組入棧,用前工作寄存器組入棧,用using指定的工作寄存器組的內(nèi)指定的工作

25、寄存器組的內(nèi)容不變也不入棧,函數(shù)返回之前將被保護(hù)的工作寄存器組容不變也不入棧,函數(shù)返回之前將被保護(hù)的工作寄存器組出棧。出棧。任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈 (1)使用using可縮減中斷服務(wù)函數(shù)的入棧操作時(shí)間,因此可以使中斷得到更及時(shí)的處理;但同時(shí),使用using要十分小心,要保證寄存器組切換在所控制的區(qū)域內(nèi),否則會(huì)導(dǎo)致錯(cuò)誤。 (2)中斷函數(shù)的編寫包括兩部分:中斷源的初始化函數(shù)和中斷服務(wù)函數(shù)。概括地說,中斷源初始化函數(shù)就是對(duì)中斷源所需要的一些變量進(jìn)行設(shè)置,其形式與其他普通函數(shù)一樣一般在主函數(shù)里實(shí)現(xiàn);而中斷服務(wù)函數(shù)就是規(guī)定系統(tǒng)在發(fā)生相應(yīng)的中斷的時(shí)候要執(zhí)行哪些操作。 (3)中

26、斷函數(shù)的調(diào)用過程與一般函數(shù)調(diào)用相似,但一般函數(shù)是程序中事先安排好的;而何時(shí)調(diào)用中斷函數(shù)事先無法確定,調(diào)用中斷函數(shù)的過程是由硬件自動(dòng)完成的。任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈中斷函數(shù)既不能進(jìn)行參數(shù)傳遞,也沒有返回值,因中斷函數(shù)既不能進(jìn)行參數(shù)傳遞,也沒有返回值,因此,中斷函數(shù)的形式參數(shù)列表和函數(shù)類型標(biāo)識(shí)符名此,中斷函數(shù)的形式參數(shù)列表和函數(shù)類型標(biāo)識(shí)符名均為均為void。定時(shí)器定時(shí)器0的定義方式:的定義方式:void intr_time0(void) interrupt 1 任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈2.2.中斷函數(shù)的編寫中斷函數(shù)的編寫(1)中斷的初始化 所

27、謂初始化,是對(duì)將要用到的MCS-51系列單片機(jī)內(nèi)部部件或擴(kuò)展芯片進(jìn)行初始工作狀態(tài)設(shè)定。針對(duì)中斷來說,就是對(duì)IE,IP進(jìn)行初始化編程,實(shí)現(xiàn)如下要求:1)CPU開中斷與關(guān)中斷。2)某個(gè)中斷源中斷請(qǐng)求的允許和禁止(屏蔽)。3)各中斷源優(yōu)先級(jí)別的設(shè)定。4)外部中斷請(qǐng)求的觸發(fā)方式。任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈(2)(2)中斷服務(wù)函數(shù)中斷服務(wù)函數(shù)中斷服務(wù)函數(shù)就是規(guī)定系統(tǒng)在發(fā)生相應(yīng)的中斷的中斷服務(wù)函數(shù)就是規(guī)定系統(tǒng)在發(fā)生相應(yīng)的中斷的時(shí)候要執(zhí)行哪些操作。時(shí)候要執(zhí)行哪些操作。 任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈實(shí)例實(shí)例【實(shí)例實(shí)例3-4】P1.3外接一個(gè)揚(yáng)聲器,當(dāng)與外接一個(gè)

28、揚(yáng)聲器,當(dāng)與P3.3(外(外部中斷部中斷1輸入引腳)變?yōu)榈碗娖綍r(shí),揚(yáng)聲器發(fā)聲。輸入引腳)變?yōu)榈碗娖綍r(shí),揚(yáng)聲器發(fā)聲。任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈實(shí)例實(shí)例3-43-4#includesbit p13=P13;void main() IT0=0; EA=1;EX1=1; p13=1; while(1);void isr_int1() interrupt 2int i; p13=p13; for(i=1000;i0;i-);任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈實(shí)例實(shí)例3-5:3-5:電平觸發(fā)與跳變觸發(fā)的比較電平觸發(fā)與跳變觸發(fā)的比較#include#include

29、void serial_init();void isr_int0();main() serial_init(); IT0=0;EA=1;EX0=1; while(1);void isr_int0() interrupt 0 printf(External interrupt 0 respondedn); void serial_init() SCON=0X52; MOD=(TMOD&0X0F)|0X20; TH1=221; TR1=1;任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈電平觸發(fā)的輸出情況電平觸發(fā)的輸出情況任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈跳變觸發(fā)輸出

30、情況跳變觸發(fā)輸出情況main() serial_init(); IT0=1; EA=1;EX0=1; while(1);任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈案例案例4 4:蒸汽鍋爐參數(shù)越限報(bào)警控制:蒸汽鍋爐參數(shù)越限報(bào)警控制液位上、下限SL1、SL2開關(guān)取自“色帶指示報(bào)警儀”,分別接P1.3,P1.2。蒸汽壓力下限SP開關(guān)接P1.1。爐堂溫度上限ST開關(guān)接P1.0。P1.7P1.4輸出接發(fā)光二極管,與4個(gè)參數(shù)對(duì)應(yīng),越限時(shí)則相應(yīng)的LED點(diǎn)亮。任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈#includevoid isr_int0(void);main() IT0=0; EX0

31、=1; EA=1; while(1) 主函數(shù)(初始化)主函數(shù)(初始化)void isr_int0(void) interrupt 0 char temp1; P1 = 0 x0ff; temp1 = P1; temp1 =temp10;i-):任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈3.2.1 3.2.1 定時(shí)器定時(shí)器/ /計(jì)數(shù)器的結(jié)構(gòu)計(jì)數(shù)器的結(jié)構(gòu)3.2.23.2.2 定時(shí)器定時(shí)器/ /計(jì)數(shù)器的計(jì)數(shù)器的工作工作方式方式任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈3.2.1 3.2.1 定時(shí)器定時(shí)器/ /計(jì)數(shù)器的結(jié)構(gòu)計(jì)數(shù)器的結(jié)構(gòu)可編程定時(shí),通過對(duì)系統(tǒng)時(shí)鐘脈沖計(jì)數(shù)而獲得延可編程

32、定時(shí),通過對(duì)系統(tǒng)時(shí)鐘脈沖計(jì)數(shù)而獲得延時(shí),時(shí),MCS51定時(shí)定時(shí)/計(jì)數(shù)器的優(yōu)點(diǎn):計(jì)數(shù)器的優(yōu)點(diǎn):可實(shí)現(xiàn)定時(shí)、計(jì)數(shù)功能,有利用實(shí)時(shí)控制不占用CPU時(shí)間定時(shí)精度高,修改方便任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈1. 1. 定時(shí)定時(shí)/ /計(jì)數(shù)器的組成計(jì)數(shù)器的組成定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)框圖 微微處處理理器器TH1TL1TH0TL0TCONTMOD工作工作方式方式工作工作方式方式T1T0P3.5(T1)P3.4(T0)任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈 (1) (1)結(jié)構(gòu)組成部分結(jié)構(gòu)組成部分 兩個(gè)16位的二進(jìn)制定時(shí)/計(jì)數(shù)器T0、T1T0/T1分別由兩個(gè)8位的計(jì)數(shù)器組成,均屬SFR

33、寄存器T0由TH0、TL0構(gòu)成,字節(jié)地址為8CH、8AHT1由TH1、TL1構(gòu)成,字節(jié)地址為8DH、8BH;相關(guān)的控制寄存器方式寄存器TMOD控制寄存器TCON任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈定時(shí)功能定時(shí)功能 對(duì)片內(nèi)機(jī)器周期進(jìn)行計(jì)數(shù),即每個(gè)機(jī)器周期對(duì)片內(nèi)機(jī)器周期進(jìn)行計(jì)數(shù),即每個(gè)機(jī)器周期產(chǎn)生一產(chǎn)生一 個(gè)計(jì)數(shù)脈沖,計(jì)數(shù)加個(gè)計(jì)數(shù)脈沖,計(jì)數(shù)加1。實(shí)時(shí)控制、實(shí)時(shí)采樣、定時(shí)控制等。實(shí)時(shí)控制、實(shí)時(shí)采樣、定時(shí)控制等。振蕩器振蕩器12 加加 1計(jì)數(shù)器計(jì)數(shù)器TFx申請(qǐng)申請(qǐng)中斷中斷TX端端C/T=0C/T=1控制信號(hào)控制信號(hào)TRx(2 2)工作原理)工作原理任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)

34、方式控制流水燈(2 2)工作原理)工作原理計(jì)數(shù)功能計(jì)數(shù)功能 對(duì)片外從對(duì)片外從T0(P3.4)、)、T1(P3.5)引腳輸入的外)引腳輸入的外部脈沖信號(hào)進(jìn)行計(jì)數(shù),下降沿計(jì)數(shù)加部脈沖信號(hào)進(jìn)行計(jì)數(shù),下降沿計(jì)數(shù)加1。計(jì)數(shù)頻率為。計(jì)數(shù)頻率為晶振頻率的晶振頻率的1/24。生產(chǎn)線上產(chǎn)品計(jì)數(shù)、檢測(cè)電機(jī)轉(zhuǎn)速等功能。生產(chǎn)線上產(chǎn)品計(jì)數(shù)、檢測(cè)電機(jī)轉(zhuǎn)速等功能。振蕩器振蕩器12 加加 1計(jì)數(shù)器計(jì)數(shù)器TFx申請(qǐng)申請(qǐng)中斷中斷TX端端C/T=0C/T=1控制信號(hào)控制信號(hào)TRx任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈定時(shí)定時(shí)/ /計(jì)數(shù)器初值預(yù)置計(jì)數(shù)器初值預(yù)置初值X的計(jì)數(shù)方法(設(shè)最大值為(設(shè)最大值為 M, 計(jì)數(shù)值為計(jì)數(shù)

35、值為 N, 初值為初值為X, Tcy=12晶振頻率)晶振頻率)定時(shí)狀態(tài): XM定時(shí)時(shí)間/Tcy計(jì)數(shù)狀態(tài) : XMN要求檢測(cè)到100個(gè)脈沖,發(fā)中斷請(qǐng)求,通知CPU,選計(jì)數(shù)功能,計(jì)數(shù)初值為156設(shè)定時(shí)/計(jì)數(shù)器為8位加1計(jì)數(shù)器,要求定時(shí)每隔100s時(shí)間,發(fā)一次中斷請(qǐng)求(設(shè)機(jī)器周期1s),選定時(shí)功能,計(jì)數(shù)初值為156任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈2. 2. 方式控制寄存器方式控制寄存器TMODTMODSFR寄存器,地址89H控制T0、T1的工作方式僅可字節(jié)尋址僅可字節(jié)尋址T/CGATEM1 M0GATEM1M0T/C T1方式控制 T0方式控制任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定

36、時(shí)方式控制流水燈M1和和M0:工作方式選擇位:工作方式選擇位 M1 M0方式方式說明說明0 0013位計(jì)數(shù)器(位計(jì)數(shù)器(THTH的高的高8 8位和位和TLTL的低的低5 5位位)0 1116位計(jì)數(shù)器位計(jì)數(shù)器1 02自動(dòng)重裝入初值的自動(dòng)重裝入初值的8 8位計(jì)數(shù)器位計(jì)數(shù)器1 13定時(shí)器定時(shí)器0 0:分成兩個(gè)獨(dú)立的:分成兩個(gè)獨(dú)立的8 8位計(jì)數(shù)器位計(jì)數(shù)器定時(shí)器定時(shí)器1 1: 停止計(jì)數(shù)停止計(jì)數(shù)任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈C/ 定時(shí)/計(jì)數(shù)功能選擇位。 為“0”,定時(shí)模式 為“1”,計(jì)數(shù)模式GATE:門控位,定義T1/T0的啟動(dòng)方式,GATE=0,非門控方式(內(nèi)部啟動(dòng)): TR0/1

37、=1,啟動(dòng)定時(shí)器工作; TR0/1 =0,停止定時(shí)器工作。GATE=1,門控方式(外部啟動(dòng)) TR0/1=1且引腳INT0/1 =1才啟動(dòng)。T任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈SFR寄存器,地址寄存器,地址88H即參與定時(shí)控制又參與中斷控制即參與定時(shí)控制又參與中斷控制與定時(shí)控制相關(guān)的有與定時(shí)控制相關(guān)的有4位位TF1/TF0:當(dāng):當(dāng)T1/T0的計(jì)數(shù)器計(jì)數(shù)溢出時(shí),該位置的計(jì)數(shù)器計(jì)數(shù)溢出時(shí),該位置“1”;TR1/TR0:T1/T0運(yùn)行控制位。軟件將其置運(yùn)行控制位。軟件將其置“1”時(shí),啟動(dòng)時(shí),啟動(dòng)T1/T0工作工作TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 8FH

38、 8EH 8DH 8CH 8BH 8AH 89H 88H 任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈M1M0=00 ;作定時(shí)器:TMOD=00000000=00H作計(jì)數(shù)器:TMOD=00000100=04H13位計(jì)數(shù)器;位計(jì)數(shù)器; TH:8位 TL:低5位,高3位不用。 1. 工作方式工作方式0任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈計(jì)數(shù)初值最大計(jì)數(shù)值為213=8192定時(shí)時(shí)間:T =(213-T0的初值)Tcy 計(jì)數(shù)個(gè)數(shù):S=213 - T0的初值 任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈(1)向TMOD寄

39、存器中寫入工作方式控制字(2)向定時(shí)/計(jì)數(shù)器TH0、TL0(或TH1、 TL1)裝入初值(3)啟動(dòng)定時(shí)/計(jì)數(shù)器(置位TR0/TR1)(4)如采用中斷方式,置位ET0(ET1)、 EA、IP等中斷寄存器任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈實(shí)例實(shí)例3-63-6:已知單片機(jī)晶振頻率:已知單片機(jī)晶振頻率6MHz6MHz,利用,利用T0T0的方的方式式0 0在在P1.0P1.0引腳輸出周期為引腳輸出周期為500500usus的方波的方波解:解:1)方波波形如圖所示)方波波形如圖所示 2)TMOD初始化初始化 00H 3)計(jì)數(shù)初值:)計(jì)數(shù)初值: 計(jì)數(shù)初值計(jì)數(shù)初值=213 -欲計(jì)數(shù)脈沖數(shù)欲計(jì)

40、數(shù)脈沖數(shù)=213 -T/ Tcy =213-250/2=1F83H =00011111100 00011B TH1=0 xFC,TL1=0 x03 4)TCON初始化,初始化,TR01任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈 #includesbit p10=P10;main() TMOD=0; TH0=0XFC; TL0=0X03; TR0=1; while(1) while(TF0=0); p10=p10; TH0=0XFC; TL0=0X03; TF0=0; 任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈 #includesbit p10=P10;void isr_t0

41、();main()TMOD=0; TH0=0XFC; TL0=0X03; TR0=1; EA=1;ET0=1; while(1);void isr_t0( ) interrupt 1 p10=p10; TH0=0XFC; TL0=0X03;任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈實(shí)例3-7 單片機(jī)晶振頻率12MHz,利用T0的方式0實(shí)現(xiàn)1s延時(shí),每隔1s鐘使P1.0引腳翻轉(zhuǎn)一次。 1)TMOD初始化初始化 00H 2)計(jì)數(shù)初值:)計(jì)數(shù)初值: 定時(shí)時(shí)間:定時(shí)時(shí)間:tmax=81921us=8.192ms ;?。蝗?ms 1秒延時(shí)實(shí)現(xiàn):秒延時(shí)實(shí)現(xiàn):5ms延時(shí)延時(shí)200次次 T0 的的

42、初值:初值: =213-5000s/1s =3192 =0C78H=000 01100011 11000B TH0=63H,TL0=18H任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈源程序清單:源程序清單:#includevoid isr_time0(void);sbit P10=P10;unsigned int counter=200;void main()TMOD = 0X00; TH0=0X63;TL0=0X18; TR0=1; EA=1;ET0=1; while(1);void isr_time0() interrupt 1 counter-; if(!counter) cou

43、nter=200; P10 =P10; TH0=0X63; TL0=0X18; 任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈M1M0=01作定時(shí)器:TMOD=00000000=01H作計(jì)數(shù)器:TMOD=00000100=05H16位計(jì)數(shù)器,邏輯結(jié)構(gòu)框圖如下:位計(jì)數(shù)器,邏輯結(jié)構(gòu)框圖如下:振蕩器振蕩器12TF0中斷中斷T0C/T=0C/T=1GATEINT0端端TR0 TH0(8位位) TL0(8位位)控制控制l&lEAET0&任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈實(shí)例實(shí)例3-8 3-8 利用利用T0T0的方式的方式1 1完成例完成例3-63-6的功能(即在的

44、功能(即在P1.0P1.0引腳輸出周期為引腳輸出周期為500us500us的方波)。的方波)。1)TMOD初始化初始化 01H 2)計(jì)數(shù)初值:)計(jì)數(shù)初值: 計(jì)數(shù)初值計(jì)數(shù)初值=216 -欲計(jì)數(shù)脈沖數(shù)欲計(jì)數(shù)脈沖數(shù)=216 -T/ Tcy =216-250/2 =65411=FF83H 因此因此TH1=0 xFF,TL1=0 x833)TCON初始化,初始化,TR014)開中斷:)開中斷:EA=1;ET0=1任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈源程序清單源程序清單/主函數(shù)主函數(shù)#includevoid isr_time0(void);sbit P10=P10;void main()T

45、MOD = 0X01; TH0=-1258; TL0=-125; TR0=1;EA=1;ET0=1; while(1);小技巧:小技巧:實(shí)際應(yīng)用中,在利用C51編程時(shí),計(jì)數(shù)初值可以直接用如下方法表示:TH0=-1258; /取計(jì)數(shù)初值的高8位(0FFH)TL0=-125; /自動(dòng)取計(jì)數(shù)初值的低8位(83H)不需要計(jì)算出具體的計(jì)數(shù)初值。但讀者要清楚計(jì)算計(jì)數(shù)初值的原理。/中斷服務(wù)函數(shù)中斷服務(wù)函數(shù)void isr_time0(void) interrupt 1 P10 = P10; TH0=-1258; TL0=-125;任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈M1M0=10 作定時(shí)器:

46、TMOD=02H 作計(jì)數(shù)器:TMOD=06H自動(dòng)重置初值的自動(dòng)重置初值的8位計(jì)數(shù)器,邏輯結(jié)構(gòu)如圖:位計(jì)數(shù)器,邏輯結(jié)構(gòu)如圖:振蕩器振蕩器12TF0中斷中斷T0GATEINT0TR0 TL0(8位位) TH0(8位位)控制控制重 新重 新裝入裝入ll&C/T=0C/T=1&EAET0任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈案例案例5 5 啤酒生產(chǎn)線自動(dòng)裝箱控制啤酒生產(chǎn)線自動(dòng)裝箱控制某啤酒自動(dòng)生產(chǎn)線,每生產(chǎn)某啤酒自動(dòng)生產(chǎn)線,每生產(chǎn)12瓶執(zhí)行裝箱操作,將生瓶執(zhí)行裝箱操作,將生產(chǎn)出的啤酒自動(dòng)裝箱,用單片機(jī)實(shí)現(xiàn)該控制要求。產(chǎn)出的啤酒自動(dòng)裝箱,用單片機(jī)實(shí)現(xiàn)該控制要求。任務(wù)任務(wù)3

47、以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈解:如果啤酒生產(chǎn)線上裝有傳感裝置,每檢測(cè)解:如果啤酒生產(chǎn)線上裝有傳感裝置,每檢測(cè)一瓶啤酒就向單片機(jī)發(fā)送一個(gè)脈沖信號(hào),使用一瓶啤酒就向單片機(jī)發(fā)送一個(gè)脈沖信號(hào),使用計(jì)數(shù)功能就可實(shí)現(xiàn)該控制要求。計(jì)數(shù)功能就可實(shí)現(xiàn)該控制要求。1)TMOD初始化初始化 06H2)計(jì)數(shù)初值:)計(jì)數(shù)初值: TH0TL0 28120F4H任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈程序清單程序清單#includevoid isr_time0(void);void main() TMOD=0 x06; TL0=0Xf4; TH0=0Xf4; TR0=1; ET0=1;EA=1; w

48、hile(1);void isr_time() interrupt 1 int i,time=600; P37=0; /驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng)驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng) while(time -)/假設(shè)裝箱時(shí)間固定假設(shè)裝箱時(shí)間固定 for(i=500;i0;i-); P37=1; /裝箱結(jié)束電機(jī)停止轉(zhuǎn)動(dòng)裝箱結(jié)束電機(jī)停止轉(zhuǎn)動(dòng)任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈4.4.工作方式工作方式3 3振蕩器振蕩器12TF1T1中斷中斷 TH0(8位位)TR1控制控制T0端端C/T=0C/T=1GATEINT0端端TR0振蕩器振蕩器12TF0T0中斷中斷 TL0(8位位)控制控制ll&EAET0僅作定時(shí)僅作定

49、時(shí)器用器用! !任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈M1M0=11T0、T1的設(shè)置和使用不同的設(shè)置和使用不同T0兩個(gè)兩個(gè)8位的計(jì)數(shù)器位的計(jì)數(shù)器TL0:使用T0原有控制資源,功能與方式0、1相同。TH0:借用T1的TR1、TF1,只能對(duì)片內(nèi)機(jī)器周期脈沖計(jì)數(shù), 作8位定時(shí)器。T0初值計(jì)算完全同方式初值計(jì)算完全同方式 2。任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈 T1仍然可工作于方式仍然可工作于方式02,C/ 控制位仍可使控制位仍可使T1工作在定時(shí)工作在定時(shí)器或計(jì)數(shù)器方式,由于其器或計(jì)數(shù)器方式,由于其TR1、TF1被被T0的的TH0占用,因而占用,因而計(jì)數(shù)溢出時(shí)只能將輸出

50、結(jié)果送至串行口,計(jì)數(shù)溢出時(shí)只能將輸出結(jié)果送至串行口,即用作串行口波特即用作串行口波特率發(fā)生器。率發(fā)生器。 T1工作于方式工作于方式2,因定時(shí)初值能自動(dòng)恢復(fù),用作波特率發(fā)生,因定時(shí)初值能自動(dòng)恢復(fù),用作波特率發(fā)生器。器。 因定時(shí)器因定時(shí)器1 1的的TR1被被占用,其啟動(dòng)和關(guān)閉比較特殊占用,其啟動(dòng)和關(guān)閉比較特殊: : 當(dāng)設(shè)置好工作方式時(shí),T1自動(dòng)開始運(yùn)行。 送入一個(gè)設(shè)置定時(shí)器1為方式3的方式字即可停止T1 。T任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈實(shí)例實(shí)例3-9 3-9 已知系統(tǒng)晶振已知系統(tǒng)晶振12MHz12MHz,試用定時(shí)器,試用定時(shí)器0 0的方式的方式3 3實(shí)現(xiàn)實(shí)現(xiàn)1s1s的延時(shí)(

51、設(shè)每秒讓的延時(shí)(設(shè)每秒讓P0.0P0.0所接的發(fā)光二極管閃爍一次)所接的發(fā)光二極管閃爍一次) 。TMOD初始化初始化 07H TH0作為定時(shí)器,定時(shí)時(shí)間作為定時(shí)器,定時(shí)時(shí)間250us;初值;初值28250=06HT L 0 作 為 計(jì) 數(shù) 器 , 計(jì) 數(shù)作 為 計(jì) 數(shù) 器 , 計(jì) 數(shù) 2 0 0 次 ; 初 值次 ; 初 值 28200=38H因因250s*200=50ms,則需引進(jìn)一個(gè)變量,則需引進(jìn)一個(gè)變量,TL0計(jì)數(shù)滿后該變量加計(jì)數(shù)滿后該變量加1,直至,直至20則為則為1s任務(wù)任務(wù)3 以定時(shí)方式控制流水燈以定時(shí)方式控制流水燈主函數(shù)主函數(shù)#includesbit P00=P00;sbit P34=P34;unsigned char count;void delay();main() TMOD=7; TH0=0 x06; TL0=0 x38; TR0=1;TR1=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論