版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1情境三 簡(jiǎn)易秒表n子情境一子情境一 中斷系統(tǒng)中斷系統(tǒng) n子情境二子情境二 定時(shí)定時(shí)/計(jì)數(shù)器計(jì)數(shù)器 n子情境三子情境三 基于單片機(jī)控制的秒表基于單片機(jī)控制的秒表2子情境一子情境一 中斷系統(tǒng)中斷系統(tǒng)n一、任務(wù)目標(biāo) n 通過學(xué)習(xí)使讀者了解中斷的基本概念,中斷的執(zhí)行過程,中斷的控制方法和具有中斷的單片機(jī)控制程序編寫。n二、任務(wù)分析n 當(dāng)CPU正在處理某項(xiàng)事務(wù)的時(shí)候,如果系統(tǒng)出現(xiàn)了某些急需處理的異常情況或特殊的請(qǐng)求,這時(shí)要求CPU暫停正在處理的工作,而轉(zhuǎn)去處理這個(gè)隨機(jī)發(fā)生的緊急或特殊事件,待該事件處理完后,自動(dòng)回到原來被中斷的地方,繼續(xù)執(zhí)行被中斷的程序,這個(gè)過程稱做中斷。 3n 51系列單片機(jī)中斷系統(tǒng)
2、,是眾多8位單片機(jī)中功能較強(qiáng)的一種,可以提供5個(gè)中斷源,分別是外部中斷0、外部中斷1、定時(shí)/計(jì)數(shù)器T0、定時(shí)/計(jì)數(shù)器T1和串行口中斷。 n中斷處理過程由以下幾個(gè)階段完成。n(1)中斷請(qǐng)求n當(dāng)中斷源發(fā)出中斷請(qǐng)求時(shí),將相應(yīng)的中斷請(qǐng)求標(biāo)志位置“1”。子情境一子情境一 中斷系統(tǒng)中斷系統(tǒng)4n(2)中斷允許控制n 51系列單片機(jī)有專門的中斷允許寄存器IE對(duì)中斷源的開放或屏蔽進(jìn)行兩級(jí)控制。當(dāng)IE的控制位EA=“0”時(shí),屏蔽所有的中斷申請(qǐng);當(dāng)EA=“1”時(shí),CPU開放允許控制的第一級(jí),但5個(gè)中斷源是否響應(yīng)中斷請(qǐng)求,還要看IE中與這5個(gè)中斷源直接對(duì)應(yīng)的中斷允許控制位的狀態(tài),當(dāng)對(duì)應(yīng)位的狀態(tài)為“1”時(shí),則允許響應(yīng)相
3、應(yīng)的中斷請(qǐng)求,否則不響應(yīng)中斷請(qǐng)求。 子情境一子情境一 中斷系統(tǒng)中斷系統(tǒng)5n (3)中斷查詢n CPU查詢TCON和SCON中的各個(gè)中斷標(biāo)志位的狀態(tài),確定有哪個(gè)中斷源發(fā)生請(qǐng)求,查詢時(shí)根據(jù)中斷優(yōu)先級(jí)控制寄存器IP的狀態(tài),按優(yōu)先級(jí)順序進(jìn)行,如果查詢某個(gè)中斷源所對(duì)應(yīng)的中斷標(biāo)志位為“1”,表明有中斷請(qǐng)求發(fā)生,在中斷允許的情況下,緊接著從下一機(jī)器周期開始進(jìn)行中斷響應(yīng)。 子情境一子情境一 中斷系統(tǒng)中斷系統(tǒng)6n(4)中斷響應(yīng)n1)中斷響應(yīng)條件n 51系列單片機(jī)CPU響應(yīng)中斷的條件有以下3個(gè)。n 有中斷源發(fā)出中斷請(qǐng)求。n 中斷總允許控制位EA=“1”,即CPU允許所有中斷源申請(qǐng)中斷。n 申請(qǐng)中斷的中斷源其中斷允
4、許控制位為“1”,即該中斷源可以向CPU申請(qǐng)中斷。n當(dāng)以上3個(gè)條件都滿足時(shí),中斷請(qǐng)求才可能被CPU響應(yīng)。 子情境一子情境一 中斷系統(tǒng)中斷系統(tǒng)7n 2)中斷響應(yīng)過程n 當(dāng)中斷源發(fā)出中斷請(qǐng)求后,滿足中斷響應(yīng)條件,且不存在受阻情況時(shí),CPU將立即響應(yīng)該中斷請(qǐng)求,如有多個(gè)中斷源同時(shí)提出中斷請(qǐng)求時(shí),將按中斷源的優(yōu)先級(jí)別做出響應(yīng),先響應(yīng)高優(yōu)先級(jí)的中斷源,后響應(yīng)低優(yōu)先級(jí)的中斷源。在響應(yīng)中斷請(qǐng)求后,先將斷點(diǎn)地址壓入堆棧保存,以備中斷結(jié)束后返回原程序;接著將相應(yīng)中斷處理程序的入口地址送入程序計(jì)數(shù)器PC,使程序轉(zhuǎn)向該中斷入口地址,并執(zhí)行中斷服務(wù)程序。子情境一子情境一 中斷系統(tǒng)中斷系統(tǒng)8n(5)中斷處理n 中斷處理
5、分保護(hù)現(xiàn)場(chǎng)、中斷服務(wù)、恢復(fù)現(xiàn)場(chǎng)和中斷返回4個(gè)步驟。保護(hù)現(xiàn)場(chǎng)是指中斷響應(yīng)后,在中斷服務(wù)程序的開頭采用PUSH指令將服務(wù)程序中要使用的累加器、通用寄存器中的數(shù)據(jù)壓入堆棧。在現(xiàn)場(chǎng)保護(hù)時(shí)應(yīng)關(guān)閉中斷,預(yù)防正在保護(hù)數(shù)據(jù)時(shí)又響應(yīng)中斷級(jí)別更高(中斷嵌套)的中斷請(qǐng)求,而丟失數(shù)據(jù);然后緊接著根據(jù)中斷事件的要求編寫中斷服務(wù)程序;在中斷服務(wù)結(jié)束后,立即關(guān)閉中斷,然后通過POP指令恢復(fù)現(xiàn)場(chǎng);最后用中斷返回指令RETI,硬件自動(dòng)將存放在堆棧中的斷點(diǎn)地址彈出至PC,使CPU繼續(xù)執(zhí)行原來的程序。子情境一子情境一 中斷系統(tǒng)中斷系統(tǒng)9n三、相關(guān)知識(shí) n 下面對(duì)中斷控制中用到的4個(gè)專用寄存器的相關(guān)知識(shí)進(jìn)行講解。n 51系列單片機(jī)為
6、用戶提供了4個(gè)專用寄存器:定時(shí)/計(jì)數(shù)器控制寄存器TCON、串行口控制寄存器SCON、中斷允許控制寄存器(IE)、中斷優(yōu)先級(jí)控制寄存器IP,來控制單片機(jī)的中斷系統(tǒng)。子情境一子情境一 中斷系統(tǒng)中斷系統(tǒng)10n1定時(shí)/計(jì)數(shù)器控制寄存器n 該寄存器用于鎖存外部中斷請(qǐng)求標(biāo)志以及定時(shí)/計(jì)數(shù)器的溢出中斷請(qǐng)求標(biāo)志等。進(jìn)行字節(jié)操作時(shí),寄存器地址為88H;按位操作時(shí),各位的地址為88H8FH。寄存器各位的含義及位地址如表4-2所示。 位地址8FH8EH8DH8CH8BH8AH 89H88H位符號(hào)TF1TR1TF0TR0IE1IT1IE0IT0子情境一子情境一 中斷系統(tǒng)中斷系統(tǒng)表4-2定時(shí)/計(jì)數(shù)器控制寄存器11n 其
7、中與中斷有關(guān)的控制位共4位。n(1)IT0 和IT1外部中斷T0和T1的中斷請(qǐng)求觸發(fā)方式控制位nIT0(IT1)=1:脈沖觸發(fā)方式,下降沿有效(下降沿時(shí)產(chǎn)生中斷請(qǐng)求)。nIT0(IT1)=0:電平觸發(fā)方式,低電平有效(低電平時(shí)產(chǎn)生中斷請(qǐng)求)。n(2)IE0和IE1外中斷請(qǐng)求標(biāo)志位n當(dāng)CPU采樣到(或)端出現(xiàn)有效中斷請(qǐng)求信號(hào)時(shí),IE0(IE1)位由硬件置1,當(dāng)中斷響應(yīng)完成轉(zhuǎn)向中斷服務(wù)程序時(shí),由硬件把IE0(或IE1)清0。n 高4位的功能在本章第二節(jié)中講解。子情境一子情境一 中斷系統(tǒng)中斷系統(tǒng)12n2串行口控制寄存器n 進(jìn)行字節(jié)操作時(shí),寄存器地址為98H;按位操作時(shí),各位的地址為98H9FH。寄存
8、器的各位含義及位地址如表4-3所示。 位地址 9FH 9EH9DH9CH9BH9AH99H98H位符號(hào) SM0SM1SM2RENTB8RB8TIRI表4-3 串行口控制寄存器子情境一子情境一 中斷系統(tǒng)中斷系統(tǒng)13n 其中與中斷有關(guān)的控制位共兩位。n(1)TI串行口發(fā)送中斷請(qǐng)求標(biāo)志位n 當(dāng)發(fā)送完一幀串行數(shù)據(jù)后,由硬件置1;在轉(zhuǎn)向中斷服務(wù)程序后,用軟件清0。n(2)RI串行口接收中斷請(qǐng)求標(biāo)志位n 當(dāng)接收完一幀串行數(shù)據(jù)后,由硬件置1;在轉(zhuǎn)向中斷服務(wù)程序后,用軟件清0。串行中斷請(qǐng)求由TI和RI的邏輯或得到,即無(wú)論是發(fā)送標(biāo)志還是接收標(biāo)志,都會(huì)產(chǎn)生串行中斷請(qǐng)求。子情境一子情境一 中斷系統(tǒng)中斷系統(tǒng)14n3中
9、斷允許控制寄存器n 進(jìn)行字節(jié)操作時(shí),寄存器地址為0A8H;按位操作時(shí),各位的地址為0A8H0AFH。寄存器的各位含義及位地址如表4-4所示。 表4-4 中斷允許控制寄存器位地址AFHAEHADHACHABHAAHA9HA8H位符號(hào)EA / /ESET1EX1ET0EX0子情境一子情境一 中斷系統(tǒng)中斷系統(tǒng)15n n 其中與中斷有關(guān)的控制位共6位。n(1)EA中斷允許總控制位n EA=0:中斷總禁止,禁止所有中斷。n EA=1:中斷總允許,總允許后中斷的禁止或允許由各中斷源中斷允許控制位進(jìn)行設(shè)置。n(2)EX0和EX1外部中斷0和外部中斷1的中斷允許控制位。n EX0(EX1)=0:禁止外部中斷。
10、n EX0(EX1)=0:允許外部中斷。子情境一子情境一 中斷系統(tǒng)中斷系統(tǒng)16n(3)ET0和ET1定時(shí)/計(jì)數(shù)器中斷允許控制位n ET0(ET1)=“0”:禁止定時(shí)/計(jì)數(shù)器中斷。n ET0(ET1)=“1”:允許定時(shí)/計(jì)數(shù)器中斷。n(4)ES串行中斷允許控制位n ES=“0”:禁止串行中斷。n ES=“1”:允許串行中斷。子情境一子情境一 中斷系統(tǒng)中斷系統(tǒng)17n4中斷優(yōu)先級(jí)控制寄存器n 51系列單片機(jī)的中斷優(yōu)先級(jí)控制比較簡(jiǎn)單,因?yàn)橄到y(tǒng)只定義了高、低兩個(gè)優(yōu)先級(jí)。高優(yōu)先級(jí)用“1”表示,低優(yōu)先級(jí)用“0”表示。各中斷源的優(yōu)先級(jí)由中斷優(yōu)先級(jí)寄存器進(jìn)行設(shè)定。IP寄存器地址為0B8H,位地址為0BFH0B8
11、H。該寄存器的位含義及位地址如表4-5所示。位地址BFHBEHBDHBCHBBHBAHB9HB8H位符號(hào)/PSPT1PX1FT0PX0表4-5 中斷優(yōu)先級(jí)控制寄存器子情境一子情境一 中斷系統(tǒng)中斷系統(tǒng)18n(1)PX0外部中斷0的中斷優(yōu)先級(jí)設(shè)定位;n(2)PT0定時(shí)/計(jì)數(shù)器0的中斷優(yōu)先級(jí)設(shè)定位;n(3)PX1外部中斷1的中斷優(yōu)先級(jí)設(shè)定位;n(4)PT1定時(shí)/計(jì)數(shù)器1的中斷優(yōu)先級(jí)設(shè)定位;n(5)PS串行口中斷優(yōu)先級(jí)設(shè)定位。n 以上各位設(shè)置為0時(shí),則相應(yīng)的中斷源為低優(yōu)先級(jí);設(shè)置為1時(shí),則相應(yīng)的中斷源為高優(yōu)先級(jí)。子情境一子情境一 中斷系統(tǒng)中斷系統(tǒng)19n優(yōu)先級(jí)的控制原則是:n 當(dāng)兩個(gè)不同優(yōu)先級(jí)的中斷源同
12、時(shí)提出中斷請(qǐng)求,低優(yōu)先級(jí)中斷請(qǐng)求不能打斷高優(yōu)先級(jí)的中斷服務(wù);但高優(yōu)先級(jí)中斷請(qǐng)求可以打斷低優(yōu)先級(jí)的中斷服務(wù),從而實(shí)現(xiàn)中斷嵌套,51系列單片機(jī)最多只有兩級(jí)中斷嵌套。n 如果同級(jí)的多個(gè)中斷同時(shí)出現(xiàn),則按CPU查詢次序確定哪個(gè)中斷請(qǐng)求被響應(yīng)。其查詢次序?yàn)閚 外部中斷0定時(shí)/計(jì)數(shù)器0溢出中斷外部中斷1定時(shí)/計(jì)數(shù)器1中斷串行中斷。子情境一子情境一 中斷系統(tǒng)中斷系統(tǒng)20n1簡(jiǎn)述中斷處理過程。n2簡(jiǎn)述中斷編程結(jié)構(gòu)。n3單片機(jī)如何確定5個(gè)中斷源的中斷優(yōu)先級(jí)別?分別寫出中斷優(yōu)先級(jí)控制寄存器IP=05H和IP=00H時(shí)5個(gè)中斷源的中斷優(yōu)先級(jí)順序。n4用偉福6000軟件或Keil uVision2軟件輸入本節(jié)任務(wù)二的
13、源程序并編譯調(diào)試。n5用Proteus軟件繪制出本節(jié)任務(wù)二仿真電路圖并仿真運(yùn)行。n6根據(jù)本節(jié)任務(wù)二的電路原理圖連接成電路板,用編程器將仿真通過的程序燒錄到單片機(jī)中,脫機(jī)運(yùn)行并觀察電路運(yùn)行情況。 子情境一子情境一 中斷系統(tǒng)中斷系統(tǒng)思考與練習(xí)21n一、任務(wù)目標(biāo)n 本任務(wù)讓讀者掌握定時(shí)/計(jì)數(shù)器的工作原理,掌握定時(shí)/計(jì)數(shù)器的工作方式及定時(shí)/計(jì)數(shù)初值的計(jì)算,熟悉定時(shí)/計(jì)數(shù)器的編程結(jié)構(gòu),了解定時(shí)/計(jì)數(shù)器的應(yīng)用領(lǐng)域。n二、任務(wù)分析n 51系列單片機(jī)有兩個(gè)16位可編程的定時(shí)/計(jì)數(shù)器,分別稱為定時(shí)/計(jì)數(shù)器T0和T1。其實(shí)就是由兩個(gè)獨(dú)立的8位專用寄存器TH0,TL0和TH1,TL1組成16位加法計(jì)數(shù)器。它們各自都
14、兼有定時(shí)和計(jì)數(shù)的功能。分別由工作方式寄存器TMOD和控制寄存器TCON對(duì)定時(shí)/計(jì)數(shù)器的工作方式、啟停及溢出中斷請(qǐng)求進(jìn)行控制。 子情境二子情境二 定時(shí)定時(shí)/計(jì)數(shù)器計(jì)數(shù)器 22n1定時(shí)/計(jì)數(shù)器工作在定時(shí)方式時(shí)n 當(dāng)定時(shí)/計(jì)數(shù)器工作方式寄存器TMOD中的功能選擇位為“0”時(shí),定時(shí)/計(jì)數(shù)器工作于定時(shí)方式。此時(shí)定時(shí)器T0或T1對(duì)機(jī)器周期進(jìn)行計(jì)數(shù),當(dāng)啟動(dòng)控制位TR0和TR1為1時(shí),定時(shí)器就從某一初始值開始計(jì)數(shù),每一機(jī)器周期定時(shí)器加1,當(dāng)計(jì)數(shù)值達(dá)到最大值時(shí)計(jì)數(shù)溢出,將定時(shí)器的溢出標(biāo)志位TF0或TF1置1,并提出一次中斷請(qǐng)求,如允許定時(shí)器中斷的話,將產(chǎn)生一次定時(shí)器中斷,進(jìn)行定時(shí)器溢出中斷服務(wù)處理;如采用查詢方
15、式進(jìn)行定時(shí)器溢出處理的話,則程序查詢到TF0或TF1位為1時(shí),就進(jìn)行相應(yīng)的定時(shí)器溢出處理操作。子情境二子情境二 定時(shí)定時(shí)/計(jì)數(shù)器計(jì)數(shù)器23n 2定時(shí)/計(jì)數(shù)器工作在計(jì)數(shù)方式時(shí)n 當(dāng)定時(shí)/計(jì)數(shù)器工作方式寄存器TMOD中的功能選擇位為“1”時(shí),定時(shí)/計(jì)數(shù)器工作于計(jì)數(shù)方式。此時(shí)計(jì)數(shù)器T0或T1對(duì)外部計(jì)數(shù)脈沖(外部引腳T0(P3.4)或T1(P3.5)輸入的計(jì)數(shù)脈沖信號(hào))進(jìn)行計(jì)數(shù),每來一個(gè)外部輸入脈沖信號(hào)計(jì)數(shù)器加1。在計(jì)數(shù)工作方式時(shí),單片機(jī)每個(gè)機(jī)器周期對(duì)外部引腳T0(P3.4)或T1(P3.5)電平進(jìn)行一次采樣,當(dāng)在某一機(jī)器周期采樣到高電平,跟接著在下一機(jī)器周期采樣到低電平時(shí),則在再下一機(jī)器周期計(jì)數(shù)器加
16、1;所以計(jì)數(shù)工作方式時(shí)是對(duì)外部輸入的負(fù)脈沖進(jìn)行計(jì)數(shù),計(jì)數(shù)器每次加1需用兩個(gè)機(jī)器周期,則計(jì)數(shù)脈沖信號(hào)的最高頻率為機(jī)器周期頻率的二分之一。 子情境二子情境二 定時(shí)定時(shí)/計(jì)數(shù)器計(jì)數(shù)器24n 當(dāng)啟功控制位TR0和TR1位為1時(shí),計(jì)數(shù)器從某一初始值開始計(jì)數(shù),每來一個(gè)外部計(jì)數(shù)脈沖計(jì)數(shù)器加1,當(dāng)計(jì)數(shù)值達(dá)到最大值時(shí),計(jì)數(shù)器溢出,將計(jì)數(shù)器的溢出標(biāo)志位TF0或TF1置“1”,并提出一次中斷請(qǐng)求,如允許計(jì)數(shù)器中斷的話,將產(chǎn)生一次中斷請(qǐng)求,進(jìn)行計(jì)數(shù)器溢出中斷服務(wù)處理;如果采用查詢方式進(jìn)行計(jì)數(shù)器溢出處理的話,則程序查詢到TF0或TF1位為“1”時(shí),就進(jìn)行相應(yīng)的計(jì)數(shù)器溢出處理操作。 子情境二子情境二 定時(shí)定時(shí)/計(jì)數(shù)器計(jì)數(shù)
17、器25n三、相關(guān)知識(shí)n 下面講解對(duì)定時(shí)/計(jì)數(shù)器進(jìn)行控制的兩個(gè)特殊功能寄存器及工作方式。n1定時(shí)/計(jì)數(shù)器控制寄存器n(1)定時(shí)/計(jì)數(shù)器工作方式寄存器(TMOD)n TMOD的作用是對(duì)T0和T1的功能、工作方式及啟動(dòng)方式進(jìn)行控制,地址為89H,其各位的含義如表4-6所示,高4位對(duì)T1進(jìn)行控制,低4位對(duì)T0進(jìn)行控制,高4位與低4位的作用相同。 子情境二子情境二 定時(shí)定時(shí)/計(jì)數(shù)器計(jì)數(shù)器26n 表4-6 定時(shí)/計(jì)數(shù)器工作方式寄存器n1)GATE門控位n GATE=“0”:定時(shí)/計(jì)數(shù)器僅受TR(TCON中的TR0或TR1)控制,當(dāng)TR為“1”時(shí),定時(shí)器開始工作,此時(shí)稱軟啟動(dòng)方式。 子情境二子情境二 定時(shí)定
18、時(shí)/計(jì)數(shù)器計(jì)數(shù)器27n GATE=“1”:只有(外部引腳(P3.2)和(P3.3))為高電平,且TR為“1”時(shí),定時(shí)/計(jì)數(shù)器才工作,如兩個(gè)信號(hào)中任意一個(gè)為低電平,則定時(shí)器不工作,此時(shí)稱為硬啟動(dòng)。n2)C/T功能選擇位n C/T=“0”:定時(shí)功能。n C/ T=“1”:計(jì)數(shù)功能。 子情境二子情境二 定時(shí)定時(shí)/計(jì)數(shù)器計(jì)數(shù)器28 n3)M0 M1工作方式選擇位n M0和M1組合可以定義4種工作方式,如表4-7所示。M0 M1工 作 方 式功 能 描 述0 00 11 01 1方式0方式1方式2方式313位計(jì)數(shù)器16位計(jì)數(shù)器自動(dòng)重裝初值8位計(jì)數(shù)器T0:分成兩個(gè)獨(dú)立的8位計(jì)數(shù)器T1:停止計(jì)數(shù)表4-7 定
19、時(shí)/計(jì)數(shù)器工作方式選擇 子情境二子情境二 定時(shí)定時(shí)/計(jì)數(shù)器計(jì)數(shù)器29 n(2)定時(shí)/計(jì)數(shù)器控制寄存器(TCON)n TCON作用是對(duì)定時(shí)/計(jì)數(shù)器的啟動(dòng)、停止、溢出中斷請(qǐng)求及外部中斷請(qǐng)求和觸發(fā)方式控制,地址為88H,可以進(jìn)行位尋址。其中高4位是對(duì)定時(shí)/計(jì)數(shù)器進(jìn)行控制,低4位是對(duì)外部中斷進(jìn)行控制,低4位在本章的第一節(jié)中已經(jīng)介紹過,其各位的含義及位地址如表4-8所示。 位地址8FH8EH8DH8CH8BH8AH89H88H位符號(hào)TF1TR1TF0TR0IE1IT1IE0IT0表4-8 定時(shí)/計(jì)數(shù)器控制寄存器 子情境二子情境二 定時(shí)定時(shí)/計(jì)數(shù)器計(jì)數(shù)器30n1)TF0,TF1T0和T1溢出標(biāo)志位n 當(dāng)計(jì)
20、數(shù)滿溢出時(shí),由硬件將TF0或TF1置“1”。n2)TR0,TR1T0和T1啟動(dòng)控制位n TR0 (TR1)=“1”:T0或T1開始計(jì)數(shù)。n TR0 (TR1)=“0”:T0或T1停止計(jì)數(shù)。n 其余4位對(duì)外部中斷進(jìn)行控制,在前面已詳細(xì)介紹過,在此不再贅述。 子情境二子情境二 定時(shí)定時(shí)/計(jì)數(shù)器計(jì)數(shù)器31n 2定時(shí)/計(jì)數(shù)器工作方式n 51系列單片機(jī)定時(shí)器/計(jì)數(shù)器共有4種工作方式。工作在方式0、方式1和方式2時(shí),定時(shí)器/計(jì)數(shù)器0和定時(shí)器/計(jì)數(shù)器1的工作原理完全一樣,現(xiàn)以定時(shí)/計(jì)數(shù)器0為例介紹4種工作方式。n(1)方式0n 方式0是13位計(jì)數(shù)結(jié)構(gòu)的工作方式,其計(jì)數(shù)器由TH0全部8位和TL0的低5位構(gòu)成,
21、TL0高三位未用。定時(shí)器/計(jì)數(shù)器0工作在方式0的邏輯結(jié)構(gòu)如圖4-5所示。 子情境二子情境二 定時(shí)定時(shí)/計(jì)數(shù)器計(jì)數(shù)器32圖4-5 T0(T1)方式0結(jié)構(gòu)33n 當(dāng) C/T=“0”時(shí),多路轉(zhuǎn)換開關(guān)接通振蕩器的12分頻輸出,13位計(jì)數(shù)器對(duì)此脈沖信號(hào)(即機(jī)器周期)進(jìn)行計(jì)數(shù)。計(jì)數(shù)器從某一計(jì)數(shù)初值開始每個(gè)機(jī)器周期加1,當(dāng)加了N個(gè)1時(shí)計(jì)數(shù)器從初值計(jì)數(shù)到最大值,則所用時(shí)間為N個(gè)機(jī)器周期。從而改變不同的計(jì)數(shù)值N(因最大值是固定,通過改變計(jì)數(shù)初值來實(shí)現(xiàn)),可以實(shí)現(xiàn)不同的定時(shí)時(shí)間,這就是定時(shí)/計(jì)數(shù)器的定時(shí)工作原理。定時(shí)時(shí)間為: 子情境二子情境二 定時(shí)定時(shí)/計(jì)數(shù)器計(jì)數(shù)器34n(2)方式1n 方式1是16位計(jì)數(shù)結(jié)構(gòu)的工
22、作方式,其計(jì)數(shù)器由TH0全部8位和TL0的全部8位構(gòu)成。其邏輯電路和工作情況與方式0完全相同,所不同的只是計(jì)數(shù)器的位數(shù)。定時(shí)時(shí)間為: 子情境二子情境二 定時(shí)定時(shí)/計(jì)數(shù)器計(jì)數(shù)器35 圖4-6 T0(T1)方式2結(jié)構(gòu)36n(4)方式3n1)T0工作于方式3n T0工作于方式3時(shí)的結(jié)構(gòu)圖如圖4-7(a)、(b)所示。在方式3下,定時(shí)/計(jì)數(shù)器0被拆為兩個(gè)獨(dú)立的8位計(jì)數(shù)器TL0和TH0。其中TL0既可以作為計(jì)數(shù)功能使用,又可以作為定時(shí)功能使用,占用了原T0的控制位、引腳和中斷源,即,GATE,TR0,TF0,T0(P3.4), (P3.2)引腳均用于TL0的控制。對(duì)于TH0只能作為定時(shí)器使用,由于定時(shí)/
23、 計(jì)數(shù)器0的運(yùn)行控制位TR0和溢出標(biāo)志位TF0已被TL0占用,因此TH0占用了定時(shí)/計(jì)數(shù)器1的運(yùn)行控制位TR1和溢出標(biāo)志位TF1,并占用了T1的中斷源,即TH0定時(shí)器的啟動(dòng)和停止受TR1的狀態(tài)控制,而計(jì)數(shù)溢出時(shí)則置位TF1。 子情境二子情境二 定時(shí)定時(shí)/計(jì)數(shù)器計(jì)數(shù)器INT037 圖4-7 T0方式3結(jié)構(gòu)38n2)T0工作于方式3時(shí)T1的工作情況n 當(dāng)定時(shí)器/計(jì)數(shù)器T0工作在方式3時(shí),定時(shí)器/計(jì)數(shù)器T1可工作在方式0、方式1和方式2,此時(shí)T1的結(jié)構(gòu)如圖4-8(a)、(b)所示。由于TR1,TF1和T1中斷源均被定時(shí)/計(jì)數(shù)器0占用,此時(shí)僅有控制位切換其定時(shí)或計(jì)數(shù)工作方式,計(jì)數(shù)溢出時(shí),只能將輸出送入
24、串行口。在這種情況下定時(shí)器/計(jì)數(shù)器1只能作為波特率發(fā)生器使用,以確定串行通信的速率。只要設(shè)置好工作方式,便可自動(dòng)運(yùn)行。如果要停止工作,只需要把定時(shí)/計(jì)數(shù)器1設(shè)置在工作方式3即可。通常把定時(shí)/計(jì)數(shù)器T1設(shè)置為方式2作為波特率發(fā)生器比較方便。 子情境二子情境二 定時(shí)定時(shí)/計(jì)數(shù)器計(jì)數(shù)器39圖4-8 T0方式3時(shí)的T1結(jié)構(gòu)40n一、任務(wù)目標(biāo)n 利用單片機(jī)作為主控制器實(shí)現(xiàn)電子秒表,用4位LED數(shù)碼管顯示時(shí)間。設(shè)置外部按鍵SB,當(dāng)按鍵SB第一次按下時(shí)啟動(dòng)秒表開始計(jì)時(shí);當(dāng)?shù)诙伟聪掳存IS1時(shí)秒表停止計(jì)時(shí),當(dāng)?shù)谌伟聪掳存IS1時(shí)秒表回零;即用一個(gè)按鍵S1來控制秒表的啟動(dòng)、停止和回零功能。n 通過本次任務(wù)的學(xué)習(xí)
25、,使讀者了解秒表的電路設(shè)計(jì)及程序設(shè)計(jì),熟悉定時(shí)器的應(yīng)用及其編程方法。 子情境三子情境三 單片機(jī)控制的秒表單片機(jī)控制的秒表41n二、任務(wù)分析n1秒表硬件電路設(shè)計(jì)n 采用ATMEL公司生產(chǎn)的AT89C51單片機(jī)控制器,用4位共陰LED數(shù)碼管顯示時(shí)間,為了節(jié)省單片機(jī)的I/O資源,LED數(shù)碼管采用動(dòng)態(tài)顯示方式,由P2口的低4位輸出位選信號(hào),P1口輸出LED數(shù)碼管的顯示段碼。用非門來提高P2口的驅(qū)動(dòng)能力,使LED管達(dá)到合適的亮度。完成設(shè)計(jì)的仿真電路如圖4-9所示。子情境三子情境三 單片機(jī)控制的秒表單片機(jī)控制的秒表42n 圖4-9 基于單片機(jī)控制的秒表仿真電路圖43n 2程序設(shè)計(jì)n 采用主程序調(diào)用子程序的
26、設(shè)計(jì)方法,主程序首先對(duì)定時(shí)器和有關(guān)寄存器及存儲(chǔ)單元進(jìn)行初始化,調(diào)用按鍵掃描子程序和顯示子程序,判斷計(jì)時(shí)時(shí)間是否到9分59秒。主程序設(shè)計(jì)流程圖如圖4-10所示。 子情境三子情境三 單片機(jī)控制的秒表單片機(jī)控制的秒表44 圖4-10 主程序設(shè)計(jì)流程圖45(1)定時(shí)初值的計(jì)算n 按12MHz的時(shí)鐘頻率計(jì)算,其機(jī)器周期為1s,選用定時(shí)/計(jì)數(shù)器工作方式1,定時(shí)時(shí)間50ms。計(jì)算初值如下:n 計(jì)數(shù)值N = 定時(shí)/計(jì)數(shù)器最大值M 定時(shí)/計(jì)數(shù)器初值Xn 則 初值X=MNn 機(jī)器周期為TM=121/osc=121/12106=1sn 采用定時(shí)器工作方式1,所以初值為n X=21650ms/1us=15536=3C
27、B0Hn 所以TH0=3CH,TL0=B0H 子情境三子情境三 單片機(jī)控制的秒表單片機(jī)控制的秒表46n(2)初始化n 通過初始化設(shè)定定時(shí)器0工作方式為方式1,開放定時(shí)器0的中斷及總中斷,分別給存放毫秒、秒、分的計(jì)數(shù)單元3FH,40H,41H,42H清零。關(guān)閉定時(shí)/計(jì)數(shù)器T0。給存儲(chǔ)按鍵次數(shù)的寄存器R1清零。 子情境三子情境三 單片機(jī)控制的秒表單片機(jī)控制的秒表47n(3)判斷有無(wú)鍵按下,并進(jìn)行按鍵處理n 因?yàn)橹挥幸粋€(gè)與P3.0相連的接獨(dú)立式按鍵,所以用JB P3.0,KEYEND指令來讀按鍵的狀態(tài)。當(dāng)P3.0=0時(shí)則有鍵按下,然后進(jìn)行10ms的延時(shí)消抖,延時(shí)消抖后將存放按鍵次數(shù)的寄存器R7加1,
28、接著判斷R1中的值是多少?如果是1(表示第一次按鍵)則用SETB TR0指令啟動(dòng)定時(shí)器T0;如果是2則用CLR TR0指令關(guān)閉定時(shí)器T0;如果是3則將存放時(shí)間的3FH,40H,41H,42H單元及存放按鍵次數(shù)的R1清零。程序設(shè)計(jì)流程圖如圖4-11所示。子情境三子情境三 單片機(jī)控制的秒表單片機(jī)控制的秒表48圖4-11 按鍵確認(rèn)程序設(shè)計(jì)流程圖49n(4)顯示子程序設(shè)計(jì)n 顯示子程序的主要作用是根據(jù)存放在3FH,40H,41H,42H單元的計(jì)數(shù)值查表找到跟計(jì)數(shù)值對(duì)應(yīng)的段碼,然后送到對(duì)應(yīng)的LED數(shù)碼管進(jìn)行顯示。程序設(shè)計(jì)流程圖如圖4-12所示。子情境三子情境三 單片機(jī)控制的秒表單片機(jī)控制的秒表50圖4-
29、12 顯示子程序流程圖51n(5)中斷子程序設(shè)計(jì)n 本任務(wù)中定時(shí)器T0定時(shí)50ms,每到50ms,T0產(chǎn)生一次中斷,進(jìn)入中斷服務(wù)程序。在中斷服務(wù)程序中,首先將累加器A中內(nèi)容壓入堆棧,保護(hù)好現(xiàn)場(chǎng),接著給T0重裝初值。然后50ms計(jì)數(shù)單元加1,再判斷計(jì)數(shù)單元是否加到2(即0.1s),若沒有則中斷返回;若加到了,則首先50ms計(jì)數(shù)單元清零,接著將毫秒的計(jì)數(shù)單元加1。子情境三子情境三 單片機(jī)控制的秒表單片機(jī)控制的秒表52n 再判斷毫秒計(jì)數(shù)單元是否到10(即1s),若沒有則中斷返回;若到了10,則將毫秒計(jì)數(shù)單元清零。然后將秒的個(gè)位計(jì)數(shù)單元加1,秒的個(gè)位計(jì)數(shù)單元加1后判斷是否加到10,若不是則中斷返回;若
30、是則將秒的個(gè)位計(jì)數(shù)單元清零,然后秒的10位計(jì)數(shù)單元加1,再判斷秒的10位計(jì)數(shù)單元是否到6,若不是則中斷返回;若是則將秒的十位清零,分計(jì)數(shù)單元加1。程序設(shè)計(jì)流程圖如圖4-13所示。子情境三子情境三 單片機(jī)控制的秒表單片機(jī)控制的秒表53圖4-13 中斷服務(wù)程序設(shè)計(jì)流程圖54n AJMP TIMER n ORG 0030Hn MAIN: MOV DPTR, #TABLE n MOV SP, #50H n MOV TMOD, #01H ;定時(shí)器T0的工作方式為方式1n MOV IE, #82H n CLR TR0 n CALL CLEAR ;對(duì)計(jì)分、秒、毫秒計(jì)數(shù)單元清零n LOOP: CALL SCA
31、NKEY ;調(diào)用按鍵掃描子程序 子情境三子情境三 單片機(jī)控制的秒表單片機(jī)控制的秒表55n CALL DISP ;調(diào)用顯示子程序n MOV A, 42H ;判斷定時(shí)時(shí)間是否到9分59秒n CJNE A, #09, E3n MOV A, 41Hn CJNE A, #05, E3n MOV A, 40Hn CJNE A , #09, E3n MOV A, 3FHn CJNE A, #09, E3n CLR TR0 n CALL CLEAR ;時(shí)間到了9分59秒 關(guān)閉定時(shí)器并自動(dòng)回零子情境三子情境三 單片機(jī)控制的秒表單片機(jī)控制的秒表56n E3: AJMP LOOPn CLEAR: MOV A, #0
32、0H ;對(duì)分、秒、毫秒計(jì)數(shù)單元清0n MOV R1, #3FHn E2: MOV R1, An INC R1n CJNE R1, #43H, E2n MOV R7, #00Hn RETnSCANKEY: PUSH An JB P3.0, KEYEND ;判斷按鍵SB是否按下? 子情境三子情境三 單片機(jī)控制的秒表單片機(jī)控制的秒表57n CALL DELAY_10MS ;延時(shí)消抖 n INC R7 ;按鍵次數(shù)寄存器加1n MOV A, R7n CJNE A, #01, STOP ;是第1次按下嗎?n SETB TR0 ;啟動(dòng)秒表計(jì)時(shí)n AJMP KEYENDn STOP: CJNE A, #02,
33、 RESET ;是第2次按下嗎;n CLR TR0 ;秒表停止計(jì)時(shí)n AJMP KEYENDn RESET: CJNE A, #03, KEYEND;是第3次按下嗎?n CALL CLEAR ;秒表復(fù)位nKEYEND: POP An RET子情境三子情境三 單片機(jī)控制的秒表單片機(jī)控制的秒表58n 顯示子程序:nDISP: CLR A n MOV R0, #3FH n MOV R2, #08Hn MOV R3, #04n E1:MOV A, R0 ;讀取分、秒、毫秒計(jì)數(shù)單元的值n MOVC A, A+DPTR ;查表找跟計(jì)數(shù)值相對(duì)應(yīng)的顯示段碼n MOV P2, #00H ;消隱n MOV P1, A n MOV A, R2子情境三子情境三 單片機(jī)控制的秒表單片機(jī)控制的秒表59n MOV P2, An MOV R6, #255 ;顯示時(shí)間n DJNZ R6, $n INC R0n RR An MOV R2, An DJNZ R3, E1n RET 子情境三子情境三 單片機(jī)控制的秒表單片機(jī)控制的秒表60n 中斷子程序:nTIMER: PUSH A n MOV TH0, #3CH ;送定時(shí)50ms的初值n MOV TL0, #0B0Hn INC 43H ;中斷次數(shù)單元加1n MOV A, 43Hn CJNE A, #02,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025民間的借款合同范本2
- 2025搬家貨運(yùn)合同模板
- 2025年度年度水利工程設(shè)施維修管理協(xié)議3篇
- 二零二五年度2025年農(nóng)業(yè)合作社合伙人合同協(xié)議3篇
- 2025年度農(nóng)村房屋買賣合同(含房屋附屬設(shè)施及土地開發(fā))
- 二零二五年度農(nóng)村住房建設(shè)智能化系統(tǒng)安裝合同
- 2025年度大學(xué)畢業(yè)生就業(yè)意向與培養(yǎng)協(xié)議3篇
- 2025年度出差環(huán)境保護(hù)與可持續(xù)發(fā)展協(xié)議3篇
- 二零二五年度新型農(nóng)村機(jī)井承包管理協(xié)議
- 2025年度體育用品商鋪?zhàn)赓U合同范本(含賽事贊助合作)3篇
- ANSYS有限元技術(shù)分析優(yōu)化
- 模具專業(yè)英語(yǔ)完整版電子課件
- 小學(xué)數(shù)學(xué)北師大四年級(jí)上冊(cè)四運(yùn)算律運(yùn)算定律復(fù)習(xí)課PPT
- 個(gè)人社保代繳協(xié)議合同模板
- C4支持學(xué)生創(chuàng)造性學(xué)習(xí)與表達(dá)作業(yè)1-設(shè)計(jì)方案
- 給水排水管道工程外觀質(zhì)量檢查記錄
- 2022年國(guó)家電力公司火力發(fā)電廠勞動(dòng)定員標(biāo)準(zhǔn)
- 危險(xiǎn)化學(xué)品水路運(yùn)輸安全管理規(guī)定
- 教育中的心理效應(yīng)
- 考古繪圖(課堂PPT)
- PE管熱熔對(duì)接施工方案完整
評(píng)論
0/150
提交評(píng)論