中斷系統(tǒng)和定時(shí)計(jì)數(shù)器_第1頁
中斷系統(tǒng)和定時(shí)計(jì)數(shù)器_第2頁
中斷系統(tǒng)和定時(shí)計(jì)數(shù)器_第3頁
中斷系統(tǒng)和定時(shí)計(jì)數(shù)器_第4頁
中斷系統(tǒng)和定時(shí)計(jì)數(shù)器_第5頁
已閱讀5頁,還剩108頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、中斷系統(tǒng)和定時(shí)計(jì)數(shù)器第1頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日4.1 中斷系統(tǒng)4.1.1中斷系統(tǒng)的基本概念某人看書某人正在處理一件事A電話鈴響出現(xiàn)另一件須立即解決的事B暫停看書中止A 書中作記號(hào)記錄斷點(diǎn),便于接續(xù) 電話談話處理B繼續(xù)看書繼續(xù)A的工作保護(hù)斷點(diǎn)中斷響應(yīng)中斷請(qǐng)求中斷返回1.中斷的概念 (1)現(xiàn)實(shí)生活中的中斷:第2頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 中斷原因: 一個(gè)人不可能同時(shí)完成兩項(xiàng)任務(wù)。 單片機(jī)只有一個(gè)CPU,一旦面臨多任務(wù),它也會(huì)中斷嗎?先接電話,然后再繼續(xù)看書,這樣效率最高!4.1.1中斷系統(tǒng)的基本概念第3頁,共113頁,2022年,

2、5月20日,4點(diǎn)50分,星期日(2)單片機(jī)中的中斷CPU在處理某一事件A時(shí),發(fā)生了另一事件B請(qǐng)求CPU迅速去處理(中斷發(fā)生或中斷請(qǐng)求);CPU暫時(shí)中斷當(dāng)前的工作,轉(zhuǎn)去處理事件B(中斷響應(yīng)和中斷服務(wù));待CPU將事件B處理完畢后,再回到原來事件A被中斷的地方繼續(xù)處理事件A(中斷返回)。中斷請(qǐng)求中斷響應(yīng)中斷服務(wù)中斷返回中斷過程事件B的處理過程事件A事件B什么是中斷?第4頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日2.中斷技術(shù)的應(yīng)用并行處理 CPU可以與多臺(tái)外設(shè)并行工作,并分時(shí)與他們進(jìn)行信息交換,提高了CPU的工作效率。實(shí)時(shí)控制 單片機(jī)應(yīng)用系統(tǒng)可能隨機(jī)請(qǐng)求CPU提供服務(wù)。有了中斷系統(tǒng),

3、CPU就可以立即響應(yīng)并予以處理。故障處理 單片機(jī)系統(tǒng)在工作時(shí)可能會(huì)出現(xiàn)一些突發(fā)故障,如電源斷電,存儲(chǔ)器出錯(cuò),程序執(zhí)行錯(cuò)誤(如除數(shù)為0)等,一旦出現(xiàn)故障,CPU就可及時(shí)轉(zhuǎn)去執(zhí)行故障處理程序,而不必停機(jī)。第5頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日3.中斷系統(tǒng) 為實(shí)現(xiàn)中斷功能而配置的硬件和編寫的軟件就是中斷系統(tǒng)。中斷由誰來實(shí)施?中斷功能由中斷系統(tǒng)來執(zhí)行。第6頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日?qǐng)D4-1 中斷系統(tǒng)的結(jié)構(gòu)框圖第7頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日4.1.2 中斷源中斷的申請(qǐng)方能夠向CPU發(fā)出中斷申請(qǐng)的部件稱為中斷源。80C

4、51單片機(jī)有5個(gè)中斷源。見下表 那些部件可以向CPU申請(qǐng)中斷呢?中斷源 說明 外部中斷 從P3.2引腳引入的外部中斷申請(qǐng)定時(shí)器T0中斷 定時(shí)器T0溢出時(shí)引發(fā)中斷申請(qǐng)外部中斷從P3.3引腳引入的外部中斷申請(qǐng)定時(shí)器T1中斷定時(shí)器T1溢出時(shí)引發(fā)中斷申請(qǐng)串行口中斷一次串行發(fā)送或接收完成后,發(fā)出中斷申請(qǐng)第8頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日4.1.3 中斷控制中斷的控制“工具”中斷允許寄存器IE中斷優(yōu)先級(jí)寄存器IP定時(shí)/計(jì)數(shù)器及外部中斷控制寄存器TCON串口控制寄存器SCON 單片機(jī)通過對(duì)4個(gè)特殊功能寄存器實(shí)施中斷控制:第9頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期

5、日1中斷允許寄存器IE功能: 控制單片機(jī)是否接受中斷申請(qǐng),以及接受哪一種中斷申請(qǐng)字節(jié)地址: A8H 其格式和每位的含義如下:第10頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日?qǐng)D4-2 IE的格式第11頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日由位操作指令或數(shù)據(jù)傳送指令實(shí)現(xiàn)。例:同時(shí)打開外部中斷0和串行口中斷,可設(shè)置為:法1:MOV IE,#10010001B 法2:SETB EA SETB ES SETB EX0 想一想還可以怎樣實(shí)現(xiàn)?如何對(duì)IE進(jìn)行設(shè)置? IE的設(shè)置方法:第12頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日2中斷優(yōu)先級(jí)寄存器IP功能:

6、 對(duì)80C51單片機(jī)進(jìn)行高級(jí)別或低級(jí)別中斷的設(shè)置,IP的字節(jié)地址: B8H 格式和每位的含義如下:第13頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 圖4-3 IP的格式 第14頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日舉例 例:令串行口為高優(yōu)先級(jí)中斷,外部中斷0為低優(yōu)先級(jí)中斷。 設(shè)置方法:法1: MOV IE,#10010001B ;開中斷 MOV IP,#00010000B ;設(shè)優(yōu)先級(jí) 法2: MOV IE,#10010001B SETB PS說明:此時(shí)串口的優(yōu)先級(jí)高于外部中斷0的優(yōu)先級(jí)第15頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 答案:

7、此時(shí)CPU按自然優(yōu)先級(jí)順序確定該響應(yīng)哪個(gè)中斷請(qǐng)求。如果幾個(gè)同級(jí)別的中斷源同時(shí)申請(qǐng)中斷,CPU如何響應(yīng)?注意: 自然優(yōu)先級(jí)由硬件決定,用戶不能更改。排列見表42第16頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日表42 中斷入口地址及自然優(yōu)先級(jí) 第17頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日3定時(shí)/計(jì)數(shù)器及外部中斷控制寄存器TCON功能: 字節(jié)地址: 88H可設(shè)置外部中斷申請(qǐng)的形式:低電平觸發(fā)還是下降沿觸發(fā)控制定時(shí)/計(jì)數(shù)器的計(jì)時(shí)開始或停止是各中斷源(串口中斷除外)是否申請(qǐng)中斷的標(biāo)志位格式如下,各位含義見表43TCON D7 D6D5D4D3D2D1D0TF1 TR1

8、 TF0 TR0 IE1 IT1 IE0 IT0 第18頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日形式 符號(hào) 位地址 功 能 說 明 中斷控制 IT0 88H 外部中斷0的觸發(fā)控制位IT0=0:低電平觸發(fā) IT0=1:下降沿觸發(fā)IT0的狀態(tài)由用戶通過初始化程序定義 IE0 89H 外部中斷0請(qǐng)求標(biāo)志位。CPU采樣到外部中斷0的中斷請(qǐng)求時(shí), IE0=1CPU響應(yīng)該中斷時(shí), IE00 IE0的狀態(tài)由單片機(jī)自動(dòng)設(shè)置 IT1 8AH 外部中斷1的觸發(fā)控制位IT1=0:低電平觸發(fā)IT1=1:下降沿觸發(fā) IT1的狀態(tài)由用戶通過初始化程序定義 IE1 8BH 外部中斷1的中斷請(qǐng)求標(biāo)志位CPU

9、采樣到外部中斷1的中斷請(qǐng)求時(shí), IE1=1CPU響應(yīng)該中斷時(shí), IE10 IE1的狀態(tài)由單片機(jī)自動(dòng)設(shè)置 表43 TCON的功能說明第19頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日形式 符號(hào) 位地址 功 能 說 明 定時(shí)/計(jì)數(shù)控制 TR0 8CH TR0=1:啟動(dòng)定時(shí)/計(jì)數(shù)器T0TR0=0:停止定時(shí)/計(jì)數(shù)器T0 TR0的狀態(tài)由用戶通過初始化程序定義 TF0 8DH 定時(shí)/計(jì)數(shù)器T0溢出中斷請(qǐng)求位T0定時(shí)或計(jì)數(shù)完成時(shí)TF0=1,同時(shí)申請(qǐng)中斷CPU響應(yīng)該中斷時(shí), TF00 TF0的狀態(tài)由單片機(jī)自動(dòng)設(shè)置 TR1 8EH TR1=1:啟動(dòng)定時(shí)/計(jì)數(shù)器T1TR1=0:停止定時(shí)/計(jì)數(shù)器T1

10、TR1的狀態(tài)由用戶通過初始化程序定義 TF1 8FH 定時(shí)/計(jì)數(shù)器T1溢出中斷請(qǐng)求位T1定時(shí)或計(jì)數(shù)完成時(shí)TF1=1,同時(shí)申請(qǐng)中斷CPU響應(yīng)該中斷時(shí), TF10TF1的狀態(tài)由單片機(jī)自動(dòng)設(shè)置 續(xù)表43 第20頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日例 1 編程設(shè)定TCON為低電平觸發(fā)的高優(yōu)先級(jí)中斷源。分析: 這是典型的中斷初始化問題,方法一般如下:1)對(duì)TCON的相關(guān)位賦值2)設(shè)定所用中斷源的優(yōu)先級(jí)賦值IP3)開中斷置位IE第21頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日解: 法1:CLR IT1 SETB PX1 SETB EX1 SETB EA例 1 法2:C

11、LR IT1 MOV IP,#04H MOV IE,#84H第22頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日4串口控制寄存器SCON功能: 只有D1和D0位用于中斷,作為串口中斷請(qǐng)求標(biāo)志,即串口中斷請(qǐng)求寄存器字節(jié)地址: 98H 格式如下:第23頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日RI為接收中斷請(qǐng)求標(biāo)志位。當(dāng)串口接收完一幀串行數(shù)據(jù)時(shí),RI自動(dòng)置1;CPU響應(yīng)中斷后,用軟件對(duì)RI清0。TI為串行口發(fā)送中斷請(qǐng)求標(biāo)志。當(dāng)串口發(fā)送完一幀串行數(shù)據(jù)時(shí),TI自動(dòng)置1,請(qǐng)求中斷。CPU響應(yīng)中斷后,由軟件對(duì)TI清零。其他幾位的含義及用法見第5章。第24頁,共113頁,2022

12、年,5月20日,4點(diǎn)50分,星期日4.1.4 中斷響應(yīng)無同級(jí)或高級(jí)中斷正在服務(wù)有中斷請(qǐng)求信號(hào)相應(yīng)的中斷源已打開,即EA=1,中斷源對(duì)應(yīng)中斷允許位也為1。當(dāng)前的指令周期已經(jīng)結(jié)束如果當(dāng)前指令為RETI或訪問IE和IP的指令,至少還要再執(zhí)行完一條指令。1.中斷響應(yīng)條件第25頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日2.中斷響應(yīng)過程圖44中斷響應(yīng)過程將當(dāng)前寄存器內(nèi)容壓入堆棧,如 PUSH ACC在中斷服務(wù)程序中實(shí)現(xiàn),解決單片機(jī)中斷后要干什么的問題。把保存在堆棧中的寄存器內(nèi)容取出,送回原來的位置,如POP ACC第26頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日中斷嵌套答案

13、:CPU要進(jìn)行分析判斷,決定是否響應(yīng):當(dāng)CPU正在執(zhí)行中斷服務(wù)程序時(shí),又有新的中斷源發(fā)出中斷申請(qǐng),響應(yīng)嗎?情況1: 同級(jí)或低級(jí)中斷源申請(qǐng)中斷,CPU不予理睬情況2: 高級(jí)別中斷源申請(qǐng)中斷,CPU就要響應(yīng)。 待執(zhí)行完高級(jí)別中斷服務(wù)程序后再轉(zhuǎn)回低級(jí)中斷服務(wù)程序繼續(xù)執(zhí)行,這就是中斷嵌套。第27頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日?qǐng)D45 二級(jí)中斷嵌套的執(zhí)行過程第28頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日軟件構(gòu)成:主程序+中斷服務(wù)程序程序編制的關(guān)鍵點(diǎn): 要對(duì)題目要求進(jìn)行精確分析,明確哪些環(huán)節(jié)應(yīng)該安排在主程序中,哪些環(huán)節(jié)應(yīng)該安排在中斷服務(wù)程序中,再分別編制主程序和

14、中斷服務(wù)程序。4.2 中斷的應(yīng)用4.2.1中斷應(yīng)用指導(dǎo) 1中斷系統(tǒng)的程序編制第29頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 1中斷系統(tǒng)的程序編制 (1)編制主程序第一部分:主程序初始化 功能:第二部分:須由主程序完成的其它功能。此部分必須編寫用于設(shè)置堆棧位置;定義觸發(fā)方式(低電平觸發(fā)或脈沖下降沿觸發(fā))對(duì)IE和IP賦值等;第30頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日(2)選擇中斷服務(wù)程序的入口地址。(3)編制中斷服務(wù)程序。 1中斷系統(tǒng)的程序編制即明確中斷服務(wù)程序的起始位置注意1:一般要保護(hù)斷點(diǎn), 即保護(hù)進(jìn)入中斷時(shí)累加器A、進(jìn)/借位標(biāo)志CY和SFR的狀態(tài),并在

15、退出中斷之前將其恢復(fù);注意2:必須在中斷服務(wù)程序中設(shè)定是否允許再次中斷(即中斷嵌套),由用戶對(duì)EX0(或EX1)位置位或清0決定。說明:一般在中斷服務(wù)程序中涉及到關(guān)鍵數(shù)據(jù)的設(shè)置時(shí)應(yīng)關(guān) 中斷,即禁止嵌套。第31頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日2中斷應(yīng)用舉例三相交流電的故障檢測電路 例2 圖4-6是三相交流電的故障檢測電路。當(dāng)A相缺電時(shí),發(fā)光二極管LEDA 亮;當(dāng)B相缺電時(shí),發(fā)光二極管LEDB亮;當(dāng)C相缺電時(shí),發(fā)光二極管LEDC亮。硬件特點(diǎn): 外部中斷 由3個(gè)交流繼電器的觸點(diǎn)和一個(gè)或非門擴(kuò)展而成; 3個(gè)220V的交流繼電器的線圈ZA、ZB、ZC分別接在A、B、C各相和交流

16、地之間。圖4-6 三相交流電的故障檢測電路第32頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日(1)檢測原理三相電正常情況下3個(gè)線圈同時(shí)得電3個(gè)常開觸點(diǎn)全都閉合0001不申請(qǐng)外部中斷第33頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日故障情況下(假設(shè)A相掉電)(1)檢測原理線圈ZA失電常開觸點(diǎn)ZA斷開0申請(qǐng)外部中斷,在外部中斷服務(wù)程序中讀取P1.0引腳狀態(tài)0011產(chǎn)生A相掉電狀態(tài)信號(hào)送入P1.01在中斷服務(wù)程序中對(duì)該引腳輸出1A相故障指示燈亮線圈ZB、ZC有電常開觸點(diǎn)ZB、ZC閉合B、C相故障指示燈不亮第34頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日(2

17、)軟件設(shè)計(jì) ORG 0000HLJMP MAIN;跳至主程序ORG 0013H;的中斷入口地址LJMP TEST;轉(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ā)SETB EA;CPU開中斷SJMP $;等待中斷TEST:JNB P1.0,LB;A相正常,轉(zhuǎn)測B相SETB P1.1;A相掉電,點(diǎn)亮LEDALB:JNB P1.2,LC;B相正常,轉(zhuǎn)測C相SETB P1.3;B相掉電,點(diǎn)亮LEDBLC:JNB P1.4,LL;C相正常,返回SETB P1

18、.5;C相掉電,點(diǎn)亮LEDCLL: RETI END第35頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日4.2.2 課題與實(shí)訓(xùn)7 中斷控制流水燈一.實(shí)訓(xùn)目的 學(xué)習(xí)外部中斷的基本用法 掌握中斷處理程序的編程方法二.課題要求 在程序正常運(yùn)行時(shí)P1口的8個(gè)LED燈作單燈左移8次而后單燈右移7次,如此循環(huán);中斷時(shí)(即按鍵按下)則P1口的8個(gè)LED閃爍3次(即全亮全滅3次)。三.背景知識(shí) 1中斷程序的設(shè)計(jì)主要涉及開中斷、設(shè)定優(yōu)先級(jí),外中斷還 涉及觸發(fā)方式的設(shè)定。 2在軟件設(shè)計(jì)中,首先要對(duì)主程序和中斷服務(wù)程序所完成的 任務(wù)進(jìn)行劃分。根據(jù)該課題提出的要求,在主程序中應(yīng)該 完成的任務(wù)是8個(gè)LED循

19、環(huán)左移右移;在中斷服務(wù)程序中 應(yīng)該完成的功能是8個(gè)LED閃爍3次。第36頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日四.硬件電路 硬件結(jié)構(gòu)如圖,12引腳的按鍵點(diǎn)動(dòng)表示有中斷請(qǐng)求發(fā)出。 圖4-7 實(shí)訓(xùn)7電路 第37頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日五.參考程序 ORG 0000H LJMP START ORG 0003H LJMP INT0 ORG 0100H START:MOV SP,#60H MOV IE,#81H ;開INT0中斷 SETB IT0 ;INT0下降沿觸發(fā) L1: MOV A,#0FFH ;設(shè)初值 MOV R0,#8 ;設(shè)定左移八次 CL

20、R C ;將CY清0 L2: RLC A ;帶進(jìn)位位循環(huán)左移一位 MOV P1,A ;送P1口,P1.0燈亮 第38頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 ACALL DELAY ;延時(shí)0.2秒 DJNZ R0,L2 ;判斷是否左移8次 MOV R0,#7 ;移動(dòng)7次L3: RRC A ;帶進(jìn)位位循環(huán)右移 MOV P1,A ;送P1口 ACALL DELAY DJNZ R0,L3 ;是否右移7次? AJMP L1 ;重新開始DELAY:MOV R5,#4 ;延時(shí)0.2秒 D1: MOV R6,#200 D2: MOV R7,#123 NOP DJNZ R7,$ 第39頁,共

21、113頁,2022年,5月20日,4點(diǎn)50分,星期日 DJNZ R6,D2 DJNZ R5,D1 RETINT0: PUSH PSW ;保護(hù)PSW,ACC值 PUSH ACC MOV A,#00H ;使8個(gè)LED全亮 MOV R2,#6 ;閃爍3次(全亮全滅各3次) L4:MOV P1,A ;A值送出 LCALL DELAY ;延時(shí)0.2秒 CPL A ;A值取反 DJNZ R2,L4 ;閃爍3次? POP ACC ;恢復(fù)保護(hù)的A值 POP PSW ;恢復(fù)保護(hù)的PSW值 RETI ;返回主程序 END 第40頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日六.總結(jié)與提高 1. 總結(jié):

22、中斷服務(wù)程序與子程序?qū)Ρ裙餐c(diǎn):格式相近,執(zhí)行過程大體相同子程序 執(zhí)行時(shí)刻是確定的,CPU只要執(zhí)行LCALL、ACALL等調(diào)用指令就會(huì)轉(zhuǎn)去執(zhí)行子程序中斷服務(wù)程序 中斷申請(qǐng)往往是隨機(jī)發(fā)生的。中斷服務(wù)程序的發(fā)生可能是在開中斷后的任意時(shí)刻,也可能不發(fā)生,第41頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日2提高 編寫一個(gè)由兩個(gè)中斷(外部中斷0、外部中斷1)控制的流水燈程序。要求: 主程序不變,中斷0可使P1.0P1.3的LED閃爍5次,中斷1可使P1.4P1.7的LED閃爍5次,設(shè)定中斷1的優(yōu)先級(jí)比中斷0高。第42頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日.3定時(shí)計(jì)數(shù)器

23、1. 日常生活中定時(shí)、計(jì)數(shù)的例子: 如鬧鐘、畫“正”統(tǒng)計(jì)選票、家用水表對(duì)水量的計(jì)數(shù)。 2 . 單片機(jī)應(yīng)用系統(tǒng)中定時(shí)計(jì)數(shù)的需求: 如用單片機(jī)控制的打鈴器、空調(diào)的定時(shí)開關(guān)、啤酒自動(dòng)生產(chǎn)線上對(duì)酒瓶的計(jì)數(shù)裝置等。 3 . 80C51單片機(jī)片內(nèi)的定時(shí)/計(jì)數(shù)器: 兩個(gè)位可編程的定時(shí)計(jì)數(shù)器:T0和T1,都能定時(shí)和對(duì)外部事件進(jìn)行計(jì)數(shù)。 此外,T1還可以作為串行接口的波特率發(fā)生器。 第43頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日.3.1定時(shí)計(jì)數(shù)器的結(jié)構(gòu).定時(shí)和計(jì)數(shù)的原理(1)計(jì)數(shù) 定時(shí)計(jì)數(shù)器的實(shí)質(zhì)是加計(jì)數(shù)器(位),其原理類似于古代用來計(jì)時(shí)的水鐘:假設(shè)計(jì)滿一小時(shí)需要100,000,000滴,這稱

24、為水鐘的計(jì)數(shù)容量16位定時(shí)/計(jì)數(shù)器的計(jì)數(shù)容量是65536單片機(jī)是對(duì)脈沖個(gè)數(shù)計(jì)數(shù),計(jì)數(shù)器每接收到一個(gè)脈沖,計(jì)數(shù)值加1,當(dāng)接收滿65535個(gè)脈沖后,再來一個(gè)脈沖,計(jì)數(shù)值清0表明這一輪計(jì)數(shù)結(jié)束,同時(shí)將標(biāo)志位TF0或TF1置1。第44頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 (2)定時(shí) 單片機(jī)內(nèi)部的計(jì)數(shù)器用作定時(shí)器時(shí),是對(duì)標(biāo)準(zhǔn)的時(shí)鐘進(jìn)行了計(jì)數(shù),每來一個(gè)時(shí)鐘脈沖,計(jì)數(shù)器加1,只要保證計(jì)數(shù)脈沖的間隔相等,則計(jì)數(shù)值就代表了時(shí)間的流逝。計(jì)數(shù)器如何能作為定時(shí)器使用呢?單片機(jī)中的定時(shí)器和計(jì)數(shù)器其實(shí)是一個(gè)器件:計(jì)數(shù)器:是對(duì)外部發(fā)生的事件進(jìn)行計(jì)數(shù),定時(shí)器:是對(duì)單片機(jī)內(nèi)部的標(biāo)準(zhǔn)時(shí)鐘脈沖進(jìn)行計(jì)數(shù)。第45

25、頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日單片機(jī)內(nèi)部的標(biāo)準(zhǔn)時(shí)鐘脈沖是如何獲得的呢? 見圖4-9 ,它是由單片機(jī)的晶振經(jīng)過12分頻后得到。由于晶振的頻率很準(zhǔn),所以這個(gè)時(shí)鐘脈沖的時(shí)間間隔也很準(zhǔn)。不難算出,當(dāng)單片機(jī)采用12的晶振時(shí),它提供給計(jì)數(shù)器的脈沖頻率是,脈沖周期就是微秒。圖4-9 定時(shí)/計(jì)數(shù)器T0的結(jié)構(gòu)示意圖第46頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 單片機(jī)內(nèi)部的16位定時(shí)計(jì)數(shù)器由高8位和低8位兩個(gè)寄存器組成: T0由TH0和TL0組成, T1由TH1和TL1組成, 定時(shí)計(jì)數(shù)器的計(jì)數(shù)值就存放在這里面。定時(shí)/計(jì)數(shù)器T1的結(jié)構(gòu)與T0相同。圖4-9 定時(shí)/計(jì)數(shù)器

26、T0的結(jié)構(gòu)示意圖 2定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)第47頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 再以水鐘為例,當(dāng)水不斷落下,下面容器中的水不斷變多,最終總有一滴水使得容器完全充滿。這時(shí)如果再有一滴水落下,就會(huì)發(fā)生“溢出”。與此類似,16位定時(shí)計(jì)數(shù)器計(jì)滿65536個(gè)脈沖時(shí),也會(huì)發(fā)生溢出。 定時(shí)計(jì)數(shù)器溢出后標(biāo)志位TF0(或TF1)由0變1,由此能夠引發(fā)定時(shí)中斷(在中斷定時(shí)方式下),這就像定時(shí)的時(shí)間一到,鬧鐘就會(huì)響一樣。 如果采用12的晶振,對(duì)應(yīng)的脈沖周期是微秒,計(jì)滿65536個(gè)脈沖所對(duì)應(yīng)的時(shí)間就是65.536ms。 3定時(shí)/計(jì)數(shù)值的設(shè)置第48頁,共113頁,2022年,5月20日,4點(diǎn)50

27、分,星期日現(xiàn)實(shí)生活中,如何滿足計(jì)數(shù)值少于65536的需要?如牛奶包裝線上24盒裝箱一次。再回到水鐘的例子上去: 剛才假設(shè)下面容器滴入100,000,000滴水才會(huì)滿,現(xiàn)在我們?cè)陂_始滴水之前先放入一勺水,這樣問題就解決了。 計(jì)數(shù)器的道理是一樣的,只要用預(yù)置數(shù)的方法先在計(jì)數(shù)容器內(nèi)存入一個(gè)初值 (通常稱為時(shí)間常數(shù)),如我們要計(jì)100,那就存入65436,只要再來100個(gè)脈沖,就剛好會(huì)溢出,引發(fā)中斷。計(jì)數(shù)器初值的設(shè)置第49頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 在主頻為12MHz的情況下,每個(gè)時(shí)鐘脈沖是1微秒,則計(jì)滿65536個(gè)脈沖需65.536毫秒,如要定時(shí)10毫秒則存入初值55

28、536,(10毫秒是10000微秒,需計(jì)數(shù)10000個(gè)脈沖)??梢?, 定時(shí)器的定時(shí)時(shí)間長短與系統(tǒng)時(shí)鐘和定時(shí)器初值有關(guān)。 說明 1. 當(dāng)定時(shí)計(jì)數(shù)器用作計(jì)數(shù)器時(shí),通過引腳P3.4(P3.5)對(duì)外部輸入脈沖計(jì)數(shù)。 2 . 定時(shí)計(jì)數(shù)器T0(T1)啟動(dòng)運(yùn)行后,會(huì)按設(shè)定的工作方式獨(dú)立進(jìn)行計(jì)數(shù),不再占用CPU時(shí)間。當(dāng)計(jì)數(shù)器T0(T1)計(jì)滿溢出時(shí),TF0(TF1)置1,向CPU發(fā)出中斷請(qǐng)求信號(hào)。定時(shí)器初值的設(shè)置第50頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日4-10 定時(shí)/計(jì)數(shù)器的控制關(guān)系第51頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 4.3.2定時(shí)計(jì)數(shù)器的控制 在單片機(jī)中有

29、兩個(gè)特殊功能寄存器與定時(shí)/計(jì)數(shù)有關(guān),它們就是TMOD和TCON,定時(shí)計(jì)數(shù)器T0、T1就由它們來控制: TMOD用于設(shè)置工作方式; TCON用于控制其啟動(dòng)、停止和中斷申請(qǐng)。 1.定時(shí)器工作方式寄存器TMOD TMOD用于設(shè)置T0和T1的工作方式,字節(jié)地址為89H,不能按位尋址。其格式和各位的含義如下:第52頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日第53頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日第54頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 2定時(shí)/計(jì)數(shù)器控制寄存器TCON TCON的低4位用于控制外部中斷,高4位用于控制定時(shí)/計(jì)數(shù)器的啟動(dòng)和中斷

30、申請(qǐng)。 TF0(或TF1) 當(dāng)計(jì)數(shù)溢出時(shí),TF0(或TF1)會(huì)自動(dòng)由0變1,告訴我們計(jì)數(shù)已滿,我們可以通過查詢TF0(或TF1)位的狀態(tài)來判斷計(jì)時(shí)時(shí)間是否已到; 如果采用定時(shí)中斷方式,則 TF0(或TF1)由0變1時(shí),能自動(dòng)引發(fā)中斷。第55頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 TR0(或TR1) 由圖4-11 可知,只有當(dāng)TR0(或TR1)為1時(shí),開關(guān)1才能閉合,計(jì)數(shù)脈沖才能進(jìn)入計(jì)數(shù)器,故TR0(或TR1)稱為運(yùn)行控制位,可用指令“SETB TR0(或TR1)”來置位以啟動(dòng)定時(shí)/計(jì)數(shù)器運(yùn)行;或用指令“CLR TR0(或TR1)”來關(guān)閉定時(shí)/計(jì)數(shù)器的工作,一切全靠編程人員控

31、制。圖4-11 定時(shí)/計(jì)數(shù)器T0方式0的邏輯結(jié)構(gòu)示意圖 第56頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日4.3.3 定時(shí)/計(jì)數(shù)器的工作方式 80C51單片機(jī)定時(shí)/計(jì)數(shù)器T0有4種工作方式(方式0、1、2、3),T1有3種工作方式(方式0、1、2)。 1. 方式0 當(dāng)TMOD的M1M0=00時(shí),定時(shí)/計(jì)數(shù)器工作于方式0。方式0為13位定時(shí)/計(jì)數(shù)器,由TL0的低5位和TH0(8位)共同完成計(jì)數(shù)功能(TL0的高3位可忽略)。 當(dāng)TL0的低5位溢出時(shí),向TH0產(chǎn)生進(jìn)位;TH0溢出時(shí),將定時(shí)器中斷請(qǐng)求標(biāo)志位TF0置1,可申請(qǐng)中斷,也可對(duì)TF0進(jìn)行查詢。 第57頁,共113頁,2022年,

32、5月20日,4點(diǎn)50分,星期日?qǐng)D4-11 定時(shí)/計(jì)數(shù)器T0方式0的邏輯結(jié)構(gòu)示意圖 第58頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日2. 方式1 當(dāng)M1M0=01時(shí),定時(shí)/計(jì)數(shù)器工作于方式1。方式1的計(jì)數(shù)位數(shù)是16位,由TL0作為低8位,TH0作為高8位共同構(gòu)成。其余操作同方式0。圖4-12 定時(shí)/計(jì)數(shù)器T0方式1的邏輯結(jié)構(gòu)示意圖第59頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日3. 方式2 當(dāng)M1M0=10時(shí),定時(shí)/計(jì)數(shù)器工作于方式2。這是自動(dòng)重裝初值的8位計(jì)數(shù)方式,它省去了方式0和方式1在多次重復(fù)計(jì)數(shù)狀態(tài)下必須重新設(shè)定計(jì)數(shù)初值的麻煩,但是卻付出了減小定時(shí)時(shí)間的代

33、價(jià)。圖4-13 定時(shí)/計(jì)數(shù)器T0方式2的邏輯結(jié)構(gòu)示意圖特別適合于制作比較精確的脈沖信號(hào)發(fā)生器。第60頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日4. 方式3 方式3只適用于定時(shí)/計(jì)數(shù)器T0。當(dāng)T1被設(shè)定為方式3狀態(tài)時(shí),將停止計(jì)數(shù)。 當(dāng)M1M0=11時(shí),T0工作于方式3。 此時(shí)TL0和TH0作為兩個(gè)相互獨(dú)立的8位定時(shí)/計(jì)數(shù)器使用。TL0既可定時(shí)又可計(jì)數(shù),它使用T0的各控制位、引腳和中斷源,即C/、GATE、TR0、TF0、T0(P3.4引腳)、(P3.2引腳);TH0此時(shí)只能用作內(nèi)部定時(shí)功能,它借用了定時(shí)/計(jì)數(shù)器T1的控制位TR1和T1的中斷標(biāo)志位TF1,其啟動(dòng)和停止只受TR1控制

34、。第61頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日?qǐng)D4-14 定時(shí)/計(jì)數(shù)器T0方式3的邏輯結(jié)構(gòu)示意圖 定時(shí)器T1無工作方式3,當(dāng)定時(shí)器T0工作在方式3時(shí),定時(shí)器T1可設(shè)置為方式0、方式1和方式2。 第62頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 4.4.1應(yīng)用指導(dǎo) 1定時(shí)/計(jì)數(shù)器的定時(shí)/計(jì)數(shù)范圍 定時(shí)/計(jì)數(shù)器工作于不同方式下的位數(shù)不同,它所具有的計(jì)數(shù)范圍也不一樣: 工作方式0:13位定時(shí)/計(jì)數(shù)方式,因此,最多可以計(jì)到213,也就是8192次。 工作方式1:16位定時(shí)/計(jì)數(shù)方式,因此,最多可 以計(jì)到216,也就是65536次。 工作方式2和工作方式3:都是8位定

35、時(shí)/計(jì)數(shù)方 式,因此,最多可以計(jì)到2 8,也就是256次。 如果我們需要超過計(jì)數(shù)器計(jì)數(shù)范圍的定時(shí)或計(jì)數(shù)功能,應(yīng)該怎樣做?4.4定時(shí)/計(jì)數(shù)器應(yīng)用與訓(xùn)練第63頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 2時(shí)間常數(shù)初值的計(jì)算 定時(shí)/計(jì)數(shù)器只要預(yù)設(shè)一個(gè)時(shí)間常數(shù)初值,就可以完成不超過其計(jì)數(shù)范圍的任意大小的計(jì)數(shù)。算法如下: 定時(shí)時(shí)間常數(shù)初值X: 方式0 X=8192-t(fosc/12) 方式1 X=65536-t(fosc/12) 方式2、方式3 X=256-t(fosc/12) 其中t是需要定時(shí)的時(shí)間,單位是微秒;fosc是晶振 計(jì)數(shù)時(shí)間常數(shù)X: 方式0 X=8192-S 方式1 X=

36、65536-S 方式2、方式3 X=256-S 說明:式中S是需要計(jì)數(shù)的次數(shù) 第64頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 假設(shè)流水線上一個(gè)包裝是12盒,要求每到12盒就產(chǎn)生一個(gè)動(dòng)作,用單片機(jī)的工作方式0來控制,應(yīng)當(dāng)預(yù)置的計(jì)數(shù)初值是多少呢? 對(duì)了,就是8192-12=8180。3定時(shí)/計(jì)數(shù)器的初始化對(duì)80C51單片機(jī)的定時(shí)/計(jì)數(shù)器編程的初始化方法: 對(duì)TMOD賦值,以確定T0和T1的工作方式; 計(jì)算時(shí)間常數(shù)初值,并將其寫入TH0、TL0或TH1、 TL1; 采用中斷定時(shí)方式時(shí),需對(duì)IE賦值開中斷; 置位TR0或TR1,啟動(dòng)定時(shí)/計(jì)數(shù)器。 第65頁,共113頁,2022年,5

37、月20日,4點(diǎn)50分,星期日4.4.2 基本訓(xùn)練初始化訓(xùn)練 例3:某牛奶生產(chǎn)線上一個(gè)包裝是12盒,要求每生產(chǎn)12盒就執(zhí)行裝箱操作,用80C51單片機(jī)來控制,請(qǐng)編寫初始化程序。 1思路與計(jì)算:要確定定時(shí)器(T0 或T1),選擇其工作方式。我們以T0的工作方式2為例,計(jì)算時(shí)間常數(shù)并賦值給TH0、TL0。 X=256-S=256-12=244=0F4H第66頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 2初始化程序: MOV TMOD,#06H ;T0作計(jì)數(shù)器,工作于方式2 MOV TH0,#0F4H ;裝入時(shí)間常數(shù)初值 MOV TL0,#0F4H ;自動(dòng)重裝時(shí)間常數(shù) MOV IE ,

38、#00H ;用查詢方式確定計(jì)滿12盒?(或MOV IE ,#82H);使用T0中斷,計(jì)滿12盒后, ;自動(dòng)申請(qǐng)中斷 SETB TR0 ;啟動(dòng)T0波特率發(fā)生器 3總結(jié):對(duì)計(jì)數(shù)過程是否結(jié)束有查詢和中斷兩種方法,要合理選擇,并在程序設(shè)計(jì)中正確體現(xiàn)。 第67頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 4.4.3應(yīng)用實(shí)例 1 定時(shí)/計(jì)數(shù)器用于外部脈沖寬度的測量 (1)測量原理 可以利用定時(shí)計(jì)數(shù)器方式寄存器TMOD中的門控位GATE與 引腳配合使用,控制定時(shí)計(jì)數(shù)器的啟動(dòng)與停止: 當(dāng)GATE1時(shí),要求TR1l,且 為高電平,才能啟動(dòng)定時(shí)器T1計(jì)數(shù)工作;如果 出現(xiàn)低電平,則T1停止計(jì)數(shù); 當(dāng)G

39、ATE=0時(shí),只要TR11就可以啟動(dòng)定時(shí)器,而與 的輸入狀態(tài)無關(guān)。 可以利用定時(shí)計(jì)數(shù)器方式寄存器TMOD中的門控位GATE與 引腳配合使用,控制定時(shí)計(jì)數(shù)器的啟動(dòng)與停止: 當(dāng)GATE1時(shí),要求TR1l,且 為高電平,才能啟動(dòng)定時(shí)器T1計(jì)數(shù)工作;如果 出現(xiàn)低電平,則T1停止計(jì)數(shù); 當(dāng)GATE=0時(shí),只要TR11就可以啟動(dòng)定時(shí)器,而與 的輸入狀態(tài)無關(guān)。第68頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 利用上述特點(diǎn),將被測脈沖信號(hào)從(P3.3)引入,在T1的程序初始化中令GATE1,同時(shí)“SETB TR1”,這樣脈沖信號(hào)的上升沿就能啟動(dòng)T1計(jì)數(shù),脈沖信號(hào)下降沿能使T1停止計(jì)數(shù)。利用定時(shí)

40、器T1的計(jì)數(shù)值m乘以機(jī)器周期就可以得到被測脈沖信號(hào)的寬度TW。(2)硬件電路 硬件電路簡圖如圖4-15。 第69頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日(3)程序設(shè)計(jì) 利用80C51的內(nèi)部RAM30H、31H單元保存被測脈沖寬度對(duì)應(yīng)的計(jì)數(shù)值。 參考程序如下: ORG 0000H AJMP MAIN ORG 0100H MAIN:MOV SP,#60H ;設(shè)堆棧指針 MOV TMOD,#90H;設(shè)置控制字,T1工作于方式 ; 1,GATE=1 MOV TH1,#00H ;設(shè)定計(jì)數(shù)初值為00H 第70頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 MOV TL1,#0

41、0HL1: JB P3.3,L1 ;等待輸入變?yōu)榈碗娖?SETB TR1 ;預(yù)置TR1=1,準(zhǔn)備啟動(dòng)T1L2: JNB P3.3,L2 ;等待上升沿,以便開始計(jì)數(shù)L3: JB P3.3,L3 ;是高電平則計(jì)數(shù)繼續(xù) CLR TR1 ;低電平則停止計(jì)數(shù) MOV A,TL1 ;讀低位計(jì)數(shù)值 MOV 30H,A ;低位計(jì)數(shù)值存于30H MOV A,TH1 ;讀高位計(jì)數(shù)值 MOV 31H,A ;高位計(jì)數(shù)值存于31H END第71頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 (4)總結(jié)與思考 定時(shí)/計(jì)數(shù)器還可用于測量脈沖信號(hào)的頻率、周期等。本實(shí)例是利用定時(shí)/計(jì)數(shù)器的門控位(GATE)測量脈沖

42、寬度。但要注意,在晶振12MHz的情況下,被測脈沖寬度范圍最大為655351s=65.536ms。 ,如果要測量脈沖信號(hào)的周期,該如何去做? 2計(jì)數(shù)器用于繞線機(jī)的控制 繞線機(jī)常用于對(duì)電機(jī)或變壓器的繞組進(jìn)行繞制,圖4-16是繞線機(jī)的控制電路。當(dāng)按下工作按鈕以后,機(jī)器啟動(dòng),繞線機(jī)在直流電機(jī)和減速齒輪的帶動(dòng)下開始工作。當(dāng)繞線架上的線圈繞到規(guī)定的圈數(shù)時(shí),繞線機(jī)會(huì)自動(dòng)停止繞線。如果再次按下工作按鈕,繞線機(jī)會(huì)重復(fù)以上過程。第72頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日?qǐng)D4-16 繞線機(jī)的控制電路控制說明:1軟件控制P1.0=0時(shí),繞線機(jī)開始繞線;P1.0=1時(shí),繞線機(jī)不繞線。 2繞線機(jī)每

43、繞一圈,繞線機(jī)脈沖產(chǎn)生電路就產(chǎn)生一個(gè)脈沖信號(hào)。第73頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 (1)工作原理 由于單片機(jī)復(fù)位后P1 口的輸出狀態(tài)全部為1,所以系統(tǒng)上電后,P1.0輸出高電平“1”繞線機(jī)不工作。 當(dāng)按下工作按鈕以后,P1.1輸入低電平“0”,當(dāng)程序檢測到P1.1=0時(shí),在程序指令的控制下從P1.0輸出低電平“0”。繞線機(jī)開始繞線。繞線機(jī)每繞一圈,定時(shí)/計(jì)數(shù)器T1的輸入引腳上就會(huì)產(chǎn)生一個(gè)負(fù)跳變的輸入脈沖。因此,只要用定時(shí)/計(jì)數(shù)器T1的計(jì)數(shù)功能控制好輸入脈沖的個(gè)數(shù),就等于控制了繞線機(jī)的繞線圈數(shù)。 當(dāng)繞線機(jī)纏繞到指定的圈數(shù)時(shí),定時(shí)/計(jì)數(shù)器T1引發(fā)計(jì)數(shù)中斷,在程序指令的

44、控制下,P1.0將輸出的高電平“1”,使電機(jī)停轉(zhuǎn),制動(dòng)器恢復(fù)制動(dòng),于是系統(tǒng)回到最初的停機(jī)狀態(tài)。 第74頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 我們假設(shè)繞線架的規(guī)定匝數(shù)是5000圈,為控制這個(gè)圈數(shù),可以設(shè)定定時(shí)/計(jì)數(shù)器T1用作計(jì)數(shù)器且工作在方式1,于是確定其計(jì)數(shù)初值為: 初值=65536-5000=60536=0EC78H 所以(TH1)=0ECH,(TL1)=78H(2)控制程序 參考程序如下: ORG 0000H AJMP MAIN ORG 001BH AJMP COUNT ORG 0100H第75頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 MAIN: M

45、OV TMOD,#50H ;設(shè)置T1為計(jì)數(shù)器,工作于方式1 MOV TH1,#0ECH ;設(shè)定計(jì)數(shù)初值 MOV TL1,#78H MOV SP,#60H ;設(shè)堆棧指針 SETB ET1 ;開T1中斷 SETB EA ;CPU開中斷 CLR F0 ;用戶標(biāo)志F0清0WAIT: MOV C,P1.1;等待啟動(dòng) JC WAIT;P1.1=1,等待 CLR P1.0;啟動(dòng)設(shè)備 SETB TR0;T1開始計(jì)數(shù)第76頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日LOOP: JNB F0,$ ;等待計(jì)數(shù)5000中斷 SETB P1.0;繞線機(jī)停止工作 CLR TR0 ;T1停止計(jì)數(shù) CLR F0

46、 ;清0 SJMP WAIT;等待重新啟動(dòng) ORG 0200H;T1中斷服務(wù)程序起始地址COUNT:MOV TH1,#0ECH;重新設(shè)定計(jì)數(shù)初值 MOV TL1,#78H SETB F0;用戶標(biāo)志置1 RETI ;中斷返回 END第77頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日.4.4課題與實(shí)訓(xùn)8 簡易方波發(fā)生器一.實(shí)訓(xùn)目的 掌握定時(shí)器初值的計(jì)算方法 學(xué)習(xí)定時(shí)器的使用及定時(shí)中斷程序的設(shè)計(jì)方法 掌握方波信號(hào)發(fā)生器的設(shè)計(jì)方法二.課題要求 1基本要求: 利用定時(shí)/計(jì)數(shù)器T1,工作于方式0,采用查詢方式,在P1.0引腳輸出頻率為500Hz的方波,并用示波器進(jìn)行觀察(晶振采用12MHz)

47、。 2較高要求: 利用定時(shí)/計(jì)數(shù)器T1,工作于方式0,采用中斷方式,在P1.0引腳輸出頻率為500Hz的方波,并用示波器進(jìn)行觀察(晶振采用12MHz)。第78頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日三.背景知識(shí) 1方波產(chǎn)生原理 使P1.0引腳的輸出狀態(tài)定時(shí)翻轉(zhuǎn),則該端口能輸出一定頻率的方波。 2方式0的時(shí)間常數(shù)初值 定時(shí)/計(jì)數(shù)器工作于方式0狀態(tài)下,定時(shí)/計(jì)數(shù)的長度是13位。應(yīng)用前面給出的時(shí)間常數(shù)初值的計(jì)算公式 X=8192-t(fosc/12) 我們可以很方便地計(jì)算出時(shí)間常數(shù)初值,但在將其裝入定時(shí)/計(jì)數(shù)器的TH、TL寄存器時(shí),必須要注意:將計(jì)算結(jié)果的高8位裝入TH1(或TH0

48、)、低5位裝入TL1(或TL0),這一環(huán)節(jié)是非常容易出錯(cuò)的。 第79頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 以該實(shí)訓(xùn)T1方式0產(chǎn)生500Hz的方波(周期是2ms)為例,需要進(jìn)行1ms的定時(shí),時(shí)間常數(shù)初值 X=8192-110-3(12106/12)=8192- 1000=7192=1C18H=000 以13位二進(jìn)制數(shù)表示,是11100000 11000B, 則(TL1)=00011000B=18H,(TH1)=11100000B=0E0H 定義TMOD=00000000B第80頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日四.硬件電路該實(shí)訓(xùn)硬件電路十分簡單,見圖

49、4-17。圖4-17 簡易方波發(fā)生器的硬件電路第81頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日五.參考程序(1) P1.0輸出500Hz方波查詢方式 ORG 0000H LJMP MAIN ;跳至主程序 ORG 0100H MAIN:MOV TMOD,#00H;置T1工作于方式0 MOV TH1,#0E0H;裝入時(shí)間常數(shù)初值 MOV TL1,#18H SETB TR1 ;啟動(dòng)T1LOOP:JNB TF1,LOOP ;查詢等待 CLR TF1 ;清TF1 CPL P1.0 ;P1.0取反第82頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 MOV TH1,#0E0H;

50、重新裝入時(shí)間常數(shù)初值 MOV TL1,#18H AJMP LOOP ;繼續(xù)生成波形 END第83頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 (2) P1.0輸出500Hz方波中斷方式 ORG 0000H LJMP MAIN ;跳至主程序 ORG 001BH ;T1的中斷入口地址 LJMP FANGBO;轉(zhuǎn)至中斷服務(wù)程序 ORG 0100H MAIN:MOV TMOD,#00H;置T1工作于方式0 MOV TH1,#0E0H;裝入時(shí)間常數(shù)初值 MOV TL1,#18H SETB ET1 ;允許T1中斷 SETB EA ;CPU開中斷 SETB TR1 ;啟動(dòng)T1第84頁,共113

51、頁,2022年,5月20日,4點(diǎn)50分,星期日 SJMP $ ;等待中斷FANGBO:CPL P1.0 ;P1.0取反 MOV TH1,#0E0H;重新裝入時(shí)間常數(shù)初值 MOV TL1,#18H RETI ;中斷返回 END六.總結(jié)與提高 1總結(jié) 本實(shí)訓(xùn)利用定時(shí)器T1的定時(shí)功能,以兩種形式輸出頻率為500Hz方波。在實(shí)際應(yīng)用中,方波的頻率可能要根據(jù)現(xiàn)場測量參數(shù)、給定參數(shù)或按照某種函數(shù)關(guān)系而變化。因此輸出波形的頻率在編程時(shí)還是未知的。第85頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日2提高 定時(shí)/計(jì)數(shù)器的計(jì)時(shí)范圍有限,當(dāng)晶振采用12MHz時(shí),方式1的計(jì)時(shí)時(shí)間最長,也只有65.536

52、ms。當(dāng)需要定時(shí)的時(shí)間超出了定時(shí)/計(jì)數(shù)器的計(jì)數(shù)范圍,如需定時(shí)2秒,這時(shí)可以采用以下兩種方法來處理: 定時(shí)器+軟件計(jì)數(shù)的方法 思路是:利用定時(shí)/計(jì)數(shù)器T1,工作于方式1,實(shí)現(xiàn)50 ms/次的定時(shí),只要定時(shí)40次即可實(shí)現(xiàn)2s定時(shí)。可以算出定時(shí)/計(jì)數(shù)器T1工作于方式1時(shí),時(shí)間常數(shù)初值為 X=65536-t(fosc/12)=65536-5010-3(12106/12) =15536=3CB0H 于是(TH1)=3CH ,(TL1)=0B0H。第86頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 定義TMOD=00010000B,此處只給出延時(shí)2s的查詢方式子程序。DELAY:MOV R3

53、,#40 ;設(shè)置定時(shí)器溢出次數(shù) SETB TR1 ;啟動(dòng)T1開始計(jì)時(shí) D1: MOV TH1,#3CH ;裝入時(shí)間常數(shù)初值 MOV TL1,#0B0HD2:JBC TF1,D3;TF1為1否?是則跳至D3,并清TF1, AJMP D2 ;否,則跳至D2 D3:DJNZ R3,D1;R3=0?不是,跳到D1 CLR TR1 ;是,則停止計(jì)數(shù) RET第87頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日采用兩個(gè)定時(shí)器串聯(lián)的方法 思路是: 將兩個(gè)定時(shí)器中的一個(gè)(如T0)設(shè)置為定時(shí)方式,另一個(gè)(T1)設(shè)置成計(jì)數(shù)方式;將定時(shí)器T0計(jì)滿產(chǎn)生的輸出,通過一根I/O口線(如P1.0)連接到計(jì)數(shù)器T1

54、的計(jì)數(shù)脈沖輸入端P3.5,從而實(shí)現(xiàn)更長時(shí)間的定時(shí)。第88頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日.5中斷與定時(shí)計(jì)數(shù)器綜合應(yīng)用舉例 4.5.1 概述 定時(shí)/計(jì)數(shù)功能與中斷一樣,都是單片機(jī)的常用功能。兩者常常同時(shí)使用。如實(shí)訓(xùn)7就是簡單的中斷、定時(shí)綜合應(yīng)用實(shí)例。在這類程序的編制過程中,要注意這樣幾個(gè)問題: 選擇合適的中斷和定時(shí)/計(jì)數(shù)方式。 如外部中斷是采用電平觸發(fā)還是脈沖下降沿觸發(fā);定時(shí)/計(jì)數(shù)是用自動(dòng)重裝方式還是每次定時(shí)結(jié)束后用軟件重裝。第89頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 確定定時(shí)結(jié)束的判別方法,用中斷還是查詢。 如采用中斷,與其它中斷的優(yōu)先級(jí)如何確定

55、,是否會(huì)影響系統(tǒng)功能。 正確初始化。 合理分配控制功能。 .5.2課題與實(shí)訓(xùn)9 音樂門鈴一.實(shí)訓(xùn)目的 1. 掌握中斷與定時(shí)/計(jì)數(shù)綜合程序的設(shè)計(jì)方法 2.學(xué)習(xí)音樂門鈴的設(shè)計(jì)過程二.課題要求 在單片機(jī)P1.0引腳外接揚(yáng)聲器,唱出祝你生日快樂歌。第90頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日三.背景知識(shí) 1.音頻脈沖的產(chǎn)生 聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單片機(jī)某個(gè)口線的“高”電平或“低”電平,則在該口線上就能產(chǎn)生一定頻率的方波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時(shí)程序控制“高”“低”電平的持續(xù)時(shí)間,就能改變輸出頻率,從而改變音調(diào)。 例如,要產(chǎn)生中音1。

56、從表4-5可知,中音1的頻率為523Hz,周期T=1/523=1912s,其半周期為1912/2=956s,因此只要在P1.0引腳產(chǎn)生半周期為956s的方波,即可聽到持續(xù)的1音。C調(diào)各音符頻率與計(jì)數(shù)初值的對(duì)應(yīng)表如下:第91頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日注:不發(fā)音的簡譜碼用“0”表示第92頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 2音樂節(jié)拍的生成 要唱出一首歌,只產(chǎn)生出音頻脈沖還不夠,還要考慮節(jié)拍。 定義:每個(gè)音符占用一個(gè)字節(jié),字節(jié)的高4位代表音符的高低,低4位表示該音符的節(jié)拍,如果一拍為0.4秒,則1/4拍是0.1秒,只要設(shè)定延遲時(shí)間就可獲得節(jié)拍的

57、時(shí)間。我們也可以設(shè)1/4拍為1個(gè)DELAY,則1拍應(yīng)該是4個(gè)DELAY,只要求得1/4拍的DELAY時(shí)間,其余的節(jié)拍就是它的倍數(shù)。見表 表4-6 節(jié)拍與節(jié)拍碼對(duì)照表第93頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 3.建立音樂的步驟: 先把譜的音符找出,然后由上表建立時(shí)間常數(shù)初值T的順序表,標(biāo)號(hào)為TABLE1。 建立音符和節(jié)拍表,標(biāo)號(hào)為TABLE,將構(gòu)成發(fā)音符的計(jì)數(shù)值放在其中。 TABLE表的結(jié)構(gòu)為:簡譜碼(代表音符)為高4位,節(jié)拍碼(表示節(jié)拍數(shù))為低4位,在唱歌程序中對(duì)每一個(gè)有節(jié)拍的音符能通過設(shè)計(jì)共同生成音符節(jié)拍碼,本程序的音符節(jié)拍碼表見表4-5。第94頁,共113頁,202

58、2年,5月20日,4點(diǎn)50分,星期日(1)1/4拍的延遲時(shí)間=187毫秒DELAY:MOV R5,#02 D1:MOV R4,#187 D2:MOV R3,#248 DJNZ R3,$ DJNZ R4,D2 DJNZ R5,D1 DJNZ R6,DELAY RET (2)歌譜 生日快樂歌 C3/45 . 5 6 5 7 -5 . 5 6 5 -祝 你生日 快 樂 祝 你 生 日 快 樂5 . 5 7 6-我 們高聲 歌 唱 祝 你生日 快 樂 第95頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日四.硬件電路圖4-18 音樂的應(yīng)用 電路 第96頁,共113頁,2022年,5月20日,

59、4點(diǎn)50分,星期日五.參考程序 ORG 0000H LJMP MAIN ;跳至主程序 ORG 001BH ;T1的中斷入口地址 LJMP TIM1 ;轉(zhuǎn)至中斷服務(wù)程序 ORG 0100H MAIN:MOV TMOD,#10H ;置T1工作于方式1 SETB ET1 ;開T1中斷 SETB EA ;CPU開中斷 MAIN1: MOV 60H,#00H ;取簡譜碼指針 NEXT: MOV A,60H ;簡譜碼指針裝入A MOV DPTR,#TABLE ;指向簡譜碼TABLE表地址 MOVC A,A+DPTR ;簡譜碼存入A MOV R1,A ;簡譜碼暫存R1 JZ STOP ;是否取到結(jié)束碼00?

60、 第97頁,共113頁,2022年,5月20日,4點(diǎn)50分,星期日 ANL A,#0FH ;沒有,則取低4位的節(jié)拍碼 MOV R6,A ;取到的節(jié)拍碼存入R6 MOV A, R1 ;將取到的簡譜碼再裝入A SWAP A ;高低4位交換 ANL A,#0FH ;取低4位的音符碼 JNZ SING ;取到的音符碼是否為0? CLR TR1 ;是,則不發(fā)音 AJMP DT ;轉(zhuǎn)至DTSING: DEC A ;對(duì)取到的非0音符碼減1 MOV 22H,A ;音符碼暫存22H RL A;乘2 MOV DPTR,#TABLE1 ;至TABLE1取與高字節(jié)相 ;對(duì)應(yīng)的頻率初值 第98頁,共113頁,2022年

溫馨提示

  • 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)論