版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、流水燈定時(shí)控制和中斷系統(tǒng)講解以定時(shí)方式控制流水燈3. 2 定時(shí)器/計(jì)數(shù)器3.1 中斷系統(tǒng) 本節(jié)主要介紹中斷的概念、一個(gè)完整的中斷過(guò)程所包含的幾個(gè)過(guò)程、MCS-51單片機(jī)是如何來(lái)實(shí)現(xiàn)中斷的?我們?cè)趺蠢肕CS-51單片機(jī)的中斷資源為我們的應(yīng)用系統(tǒng)的中斷服務(wù)3.1 中斷系統(tǒng) 中斷的概念計(jì)算機(jī)設(shè)置中斷的目的: 在CPU與外設(shè)交換信息時(shí),存在著一個(gè)快速的CPU與慢速的外設(shè)間的矛盾。為解決這個(gè)問(wèn)題,發(fā)展了中斷的概念。中斷的概念: 當(dāng)CPU正在處理某項(xiàng)事務(wù)的時(shí)候,如果外界或內(nèi)部發(fā)生了緊急事件,要求CPU暫停正在處理的工作轉(zhuǎn)而去處理這個(gè)緊急事件,待處理完以后再回到原來(lái)被中斷的地方,繼續(xù)執(zhí)行原來(lái)被中斷了的程序
2、,這樣的過(guò)程稱為中斷。1) CPU與外設(shè)并行工作。解決CPU速度快、外設(shè)速度慢的矛盾。2) 實(shí)時(shí)處理??刂葡到y(tǒng)往往有許多數(shù)據(jù)需要采集或輸出。實(shí)時(shí)控制中有的數(shù)據(jù)難以估計(jì)何時(shí)需要交換。3) 故障處理。計(jì)算機(jī)系統(tǒng)的故障往往隨機(jī)發(fā)生,如電源斷電、運(yùn)算溢出、存儲(chǔ)器出錯(cuò)等。采用中斷技術(shù),系統(tǒng)故障一旦出現(xiàn),就能及時(shí)處理。4)實(shí)現(xiàn)人機(jī)交互:人和單片機(jī)交互一般采用鍵盤和按鍵,可以采用中斷的方式實(shí)現(xiàn),中斷方式時(shí)CPU執(zhí)行效率高,而且可以保證人機(jī)交互的實(shí)時(shí)性,故中斷方式在人機(jī)交互中得到廣泛應(yīng)用。2. 中斷的作用中斷源 向CPU提出中斷請(qǐng)求的源稱為中斷源。中斷源的優(yōu)先級(jí)別 當(dāng)幾個(gè)中斷源同時(shí)向CPU發(fā)出中斷請(qǐng)求時(shí),CP
3、U應(yīng)優(yōu)先響應(yīng)最需緊急處理的中斷請(qǐng)求。為此,需要規(guī)定各個(gè)中斷源的優(yōu)先級(jí)。一個(gè)完整的中斷包括哪些過(guò)程?中斷請(qǐng)求中斷判優(yōu)中斷響應(yīng)中斷處理(服務(wù))中斷返回3.1.2 MCS-51單片機(jī)的中斷系統(tǒng) 1)中斷源 MCS一51中斷系統(tǒng)有5個(gè)中斷源如下: 來(lái)自P3.2引腳上的外部中斷請(qǐng)求(外中斷0)。 來(lái)自P3.3引腳上的外部中斷請(qǐng)求(外中斷1)。 T0 片內(nèi)定時(shí)器計(jì)數(shù)器0溢出中斷請(qǐng)求。 T1 片內(nèi)定時(shí)器計(jì)數(shù)器1溢出中斷請(qǐng)求。 串行接口片內(nèi)串行接口完成一幀發(fā)送或接收中斷請(qǐng)求源。 1、中斷源和中斷標(biāo)志 2)、中斷請(qǐng)求標(biāo)志 CPU怎么知道有中斷源提出中斷請(qǐng)求的呢?每個(gè)中斷源通過(guò)硬件設(shè)立一個(gè)中斷標(biāo)志,沒(méi)提出中斷時(shí),
4、標(biāo)志為0,有中斷申請(qǐng)時(shí)標(biāo)志為1,CPU每執(zhí)行一條指令都會(huì)去查詢這些中斷標(biāo)志,若檢測(cè)到有標(biāo)志為1,就知道有源提出中斷請(qǐng)求了。猶如看到有同學(xué)舉手提問(wèn)了。2)、中斷請(qǐng)求標(biāo)志 中斷源 中斷標(biāo)志(所在位置)3)中斷標(biāo)志的產(chǎn)生:對(duì)于定時(shí)/計(jì)數(shù)器0、1的中斷標(biāo)志TF0、TF1是在加1計(jì)數(shù)器加到全零時(shí)自動(dòng)將TF0、TF1置位(置1)對(duì)于串行口的中斷標(biāo)志RI和TI的產(chǎn)生: 當(dāng)串行口作為接收數(shù)據(jù)時(shí),當(dāng)接收允許時(shí),根據(jù)設(shè)置的方式不同,當(dāng)連續(xù)接收到8位(或9位)數(shù)據(jù)時(shí),RI置1; 當(dāng)串行口作為發(fā)送數(shù)據(jù)時(shí),當(dāng)發(fā)送完一幀數(shù)據(jù)(根據(jù)設(shè)置的方式不同,當(dāng)連續(xù)發(fā)送了8位(或9位)數(shù)據(jù)時(shí)),TI置1。對(duì)于外部中斷0、外部中斷1的中
5、斷標(biāo)志IE0、IE1是CPU在每一機(jī)器周期的S5P2時(shí)采樣 引腳,如果引腳的觸發(fā)方式符合原先設(shè)置的變化規(guī)律,則置IE0或IE1標(biāo)志。 外部中斷引腳觸發(fā)的設(shè)置: 通過(guò)TCON的ITO()和IT1()設(shè)置 ITx外部中斷x(INTX)觸發(fā)方式控制位。(X表示0或1) ITX為l,則設(shè)置外中斷X為邊沿觸發(fā)方式(CPU在每個(gè)機(jī)器周期的S5 P2采樣輸入電平,如果在一個(gè)周期中采樣到高電平,在下個(gè)周期中采樣到低電平,則硬件使IEX置1); ITX為O,則設(shè)置外中斷X為電平觸發(fā)方式。此時(shí)外部中斷是通過(guò)檢測(cè)輸入電平(低電平)來(lái)觸發(fā)的。 采用電平觸發(fā)和邊沿觸發(fā)時(shí),要注意低電平維持的時(shí)間和負(fù)脈沖的寬度。2 中斷控
6、制 當(dāng)中斷源提出了要求中斷請(qǐng)求后,也即相應(yīng)的中斷標(biāo)志置位后,CPU能否去響應(yīng)它的中斷,還要看:1.各中斷源是否分別被允許中斷 是否允許中斷3、該中斷源是否屬于高優(yōu)先級(jí)別中斷允許中斷允許中斷允許中斷允許中斷允許中斷允許2) 中斷優(yōu)先級(jí)結(jié)構(gòu) MCS一51中斷系統(tǒng)具有兩級(jí)優(yōu)先級(jí)它們遵循下列兩條基本規(guī)則: (1)低優(yōu)先級(jí)中斷源可被高優(yōu)先級(jí)中斷源所中斷,而高優(yōu)先級(jí)中斷源不能被任何中斷源所中斷。 (2)一種中斷源(不管是高優(yōu)先級(jí)或低優(yōu)先級(jí))一旦得到響應(yīng),與它同級(jí)的中斷源不能再中斷它。 (3)當(dāng)同時(shí)收到幾個(gè)同一優(yōu)先級(jí)的中斷時(shí),響應(yīng)哪一個(gè)中斷源取決于內(nèi)部查詢順序。其優(yōu)先級(jí)由高到低排列如下: 中斷源 外部中斷0
7、 ( ) 定時(shí)器計(jì)數(shù)器0溢出中斷 ( ) 外部中斷1 ( ) 定時(shí)器計(jì)數(shù)器l溢出中斷 ( ) 串行接口中斷 ( )中斷嵌套過(guò)程CPU執(zhí)行高級(jí)中斷服務(wù)高級(jí)中斷請(qǐng)求返回低級(jí)中斷程序返回主程序響應(yīng)高級(jí)中斷低級(jí)中斷請(qǐng)求CPU執(zhí)行低級(jí)中斷響應(yīng)低級(jí)中斷CPU在執(zhí)行的主程序 IE0TCONSCONINT0 IT0=0 IT0=1INT1 IT1=0 IT1=1TF0 IE1TF1T0T1TIRITXDRXDESET0EX0EX1ET1EA自然優(yōu)先級(jí)矢量地址高級(jí)中斷請(qǐng)求自然優(yōu)先級(jí)矢量地址低級(jí)中斷請(qǐng)求PX0PT0PX1PT1PSIEIP 中斷標(biāo)志位中斷源允許總允許EA中斷優(yōu)先級(jí)3.1.2 MCS-51單片機(jī)中斷
8、系統(tǒng)解:IP的首3位沒(méi)用,可任意取值,設(shè)為000,后面根據(jù)要求寫就可以了。位D7D6D5D4D3D2D1D0符號(hào)XXXPSPT1PX1PT0PX0值00000110實(shí)例3-2 設(shè)有如下要求,將T0、外中斷1設(shè)為高優(yōu)先級(jí),其它為低優(yōu)先級(jí),求IP的值。IP的值就是06H。實(shí)例3-3 在上例中,如果5個(gè)中斷請(qǐng)求同時(shí)發(fā)生,求中斷響應(yīng)的次序。解:響應(yīng)次序?yàn)槎〞r(shí)器0外中斷1外中斷0實(shí)時(shí)器1串行中斷。 位D7D6D5D4D3D2D1D0符號(hào)XXXPSPT1PX1PT0PX0值000001103 中斷響應(yīng)過(guò)程中斷響應(yīng): 從CPU檢測(cè)到中斷源的申請(qǐng)開(kāi)始,到轉(zhuǎn)到 該中斷源的中斷服務(wù)程序的入口所經(jīng)歷的過(guò)程稱中斷響應(yīng)
9、過(guò)程.CPU在每一機(jī)器周期的S5P2順序檢測(cè)被激活了的中 斷源,在除下列三種情況下,將會(huì)在下一機(jī)器周期的S1去響應(yīng)級(jí)別最高的中斷源的中斷請(qǐng)求三種情況:(1)CPU正在處理同級(jí)的或高一級(jí)的中斷。 (2)現(xiàn)行的機(jī)器周期不是當(dāng)前所執(zhí)行指令的 最后一個(gè)機(jī)器周期。 (3)當(dāng)前正在執(zhí)行的指令是返回(RETI)指令或是對(duì)IE或IP寄存器進(jìn)行讀寫的指令。響應(yīng)中斷的過(guò)程:采樣中斷請(qǐng)求標(biāo)志(在機(jī)器周期的S5P2)按優(yōu)先級(jí)查詢中斷 (在機(jī)器周期的S6P2 找到最高級(jí)別)由硬件產(chǎn)生一條轉(zhuǎn)移指令(轉(zhuǎn)移到中斷服務(wù)程序入口)中斷標(biāo)志清零(RI、TI除外) 先將斷點(diǎn)地址自動(dòng)進(jìn)棧保護(hù)相應(yīng)的入口地址送程序計(jì)數(shù)器PC置位相應(yīng)的優(yōu)先
10、級(jí)狀態(tài)觸發(fā)器,封鎖同級(jí)或低級(jí)的中斷白框內(nèi)表示CPU自主操作 5個(gè)中斷源服務(wù)程序的 入口地址分別是: 中斷源 入口地址 外部中斷0 0003H 定時(shí)器0溢出 000BH 外部中斷1 0013H 定時(shí)器1溢出 00lBH 串行接口中斷 0023H對(duì)外部中斷的響應(yīng)的時(shí)間 在無(wú)三個(gè)條件封鎖的情況下:最快要3個(gè)機(jī)器周期響應(yīng)必須的時(shí)間 IE0或IE1標(biāo)志從產(chǎn)生到被查詢占1個(gè)機(jī)器周期,(產(chǎn)生后是在下一機(jī)器周期才被查詢),硬件產(chǎn)生一條長(zhǎng)轉(zhuǎn)移指令需2個(gè)機(jī)器周期。 在由三個(gè)條件封鎖的情況下:為延長(zhǎng)執(zhí)行程序的時(shí)間與響應(yīng)必須的時(shí)間之和。 延長(zhǎng)執(zhí)行程序的時(shí)間由所執(zhí)行的指令時(shí)間所定。 若在執(zhí)行最長(zhǎng)的指令(MUL和DIV)
11、 4個(gè)機(jī)器周期,則延長(zhǎng)時(shí)間為3個(gè)機(jī)器周期。 若正在執(zhí)行的是RETI指令或者是訪問(wèn)IE或IP指令,則延長(zhǎng)時(shí)間最長(zhǎng)為5個(gè)機(jī)器周期。(執(zhí)行本指令1個(gè)機(jī)器周期再加上執(zhí)行最長(zhǎng)的指令4個(gè)機(jī)器周期(2)CPU響應(yīng)中斷的條件 沒(méi)有同級(jí)或高優(yōu)先級(jí)的中斷正在處理; 正在執(zhí)行指令必須執(zhí)行完最后一個(gè)機(jī)器周期(換言之, 正在執(zhí)行的指令完成前, 任何中斷請(qǐng)求都得不到響應(yīng)); 若正在RETI或讀寫IE或IP寄存器,則必須執(zhí)行完當(dāng)前指令的下一條其它指令之后才會(huì)響應(yīng)。 單片機(jī)一旦響應(yīng)中斷請(qǐng)求, 就由硬件完成以下功能: 自動(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)的中
12、斷服務(wù)程序的入口地址(中斷矢量)送入PC, 從而轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序。 結(jié)束中斷服務(wù)程序,恢復(fù)斷點(diǎn)和現(xiàn)場(chǎng),并返回響應(yīng)中斷之前的程序繼續(xù)執(zhí)行。(3)CPU響應(yīng)中斷的過(guò)程3.1.3 中斷服務(wù)函數(shù)C51編譯器支持在C語(yǔ)言源程序中直接編寫8051單片機(jī)的中斷服務(wù)函數(shù),從而減輕使用匯編語(yǔ)言的繁瑣程度,提高了開(kāi)發(fā)效率。1.中斷服務(wù)函數(shù)的一般形式void 函數(shù)名(void) interrupt m unsing n代表中斷號(hào),是一個(gè)常量,取值范圍是0-31。C51編譯器允許32個(gè)中斷,從8m+3處產(chǎn)生中斷向量 代表中斷函數(shù)將要選擇使用的寄存器組,也是一個(gè)常量,取值范圍是03。 程序存儲(chǔ)器ROM0000H:
13、復(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-51單片機(jī)中斷入口8字節(jié)關(guān)于USING的說(shuō)明using不僅可以用于中斷服務(wù)函數(shù)的定義中,也可以用于普通的內(nèi)部函數(shù),但不能用于外部函數(shù)。就中斷服務(wù)函數(shù)而言如果不使用using,則在進(jìn)入中斷服務(wù)函數(shù)的時(shí)候,中斷函數(shù)中所用到的全部工作寄存器都要入棧,函數(shù)返回之前所有的寄存器內(nèi)容出棧;如果使用using,則在進(jìn)入中
14、斷服務(wù)函數(shù)的時(shí)候,只將當(dāng)前工作寄存器組入棧,用using指定的工作寄存器組的內(nèi)容不變也不入棧,函數(shù)返回之前將被保護(hù)的工作寄存器組出棧。提 示(1)使用using可縮減中斷服務(wù)函數(shù)的入棧操作時(shí)間,因此可以使中斷得到更及時(shí)的處理;但同時(shí),使用using要十分小心,要保證寄存器組切換在所控制的區(qū)域內(nèi),否則會(huì)導(dǎo)致錯(cuò)誤。(2)中斷函數(shù)的編寫包括兩部分:中斷源的初始化函數(shù)和中斷服務(wù)函數(shù)。概括地說(shuō),中斷源初始化函數(shù)就是對(duì)中斷源所需要的一些變量進(jìn)行設(shè)置,其形式與其他普通函數(shù)一樣一般在主函數(shù)里實(shí)現(xiàn);而中斷服務(wù)函數(shù)就是規(guī)定系統(tǒng)在發(fā)生相應(yīng)的中斷的時(shí)候要執(zhí)行哪些操作。(3)中斷函數(shù)的調(diào)用過(guò)程與一般函數(shù)調(diào)用相似,但一般
15、函數(shù)是程序中事先安排好的;而何時(shí)調(diào)用中斷函數(shù)事先無(wú)法確定,調(diào)用中斷函數(shù)的過(guò)程是由硬件自動(dòng)完成的。中斷函數(shù)的類型及參數(shù)都為void類型中斷函數(shù)既不能進(jìn)行參數(shù)傳遞,也沒(méi)有返回值,因此,中斷函數(shù)的形式參數(shù)列表和函數(shù)類型標(biāo)識(shí)符名均為void。定時(shí)器0的定義方式:void intr_time0(void) interrupt 1 2.中斷函數(shù)的編寫(1)中斷的初始化所謂初始化,是對(duì)將要用到的MCS-51系列單片機(jī)內(nèi)部部件或擴(kuò)展芯片進(jìn)行初始工作狀態(tài)設(shè)定。針對(duì)中斷來(lái)說(shuō),就是對(duì)IE,IP進(jìn)行初始化編程,實(shí)現(xiàn)如下要求:1)CPU開(kāi)中斷與關(guān)中斷。2)某個(gè)中斷源中斷請(qǐng)求的允許和禁止(屏蔽)。3)各中斷源優(yōu)先級(jí)別的設(shè)
16、定。4)外部中斷請(qǐng)求的觸發(fā)方式。(2)中斷服務(wù)函數(shù)中斷服務(wù)函數(shù)就是規(guī)定系統(tǒng)在發(fā)生相應(yīng)的中斷的時(shí)候要執(zhí)行哪些操作。 實(shí)例【實(shí)例外接一個(gè)揚(yáng)聲器,當(dāng)與(外部中斷1輸入引腳)變?yōu)榈碗娖綍r(shí),揚(yáng)聲器發(fā)聲。 多個(gè)外部中斷源系統(tǒng)設(shè)計(jì)多中斷源系統(tǒng)的設(shè)計(jì)方法。1定時(shí)器中斷作為外部中斷使用 把外部中斷引線接到定時(shí)/計(jì)數(shù)器T0或T1的引腳上,將它設(shè)成計(jì)數(shù)方式,時(shí)間常數(shù)設(shè)為負(fù)1的補(bǔ)碼,使引腳發(fā)生負(fù)跳變(即來(lái)一個(gè)脈沖)加1后變零向CPU提出中斷請(qǐng)求。 2中斷和查詢結(jié)合的方式實(shí)例3-4#includesbit p13=P13;void main() IT0=0; EA=1;EX1=1; p13=1; while(1);vo
17、id isr_int1() interrupt 2int i; p13=p13; for(i=1000;i0;i-);實(shí)例3-5:電平觸發(fā)與跳變觸發(fā)的比較#include#includevoid 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; TH
18、1=221; TR1=1;電平觸發(fā)的輸出情況跳變觸發(fā)輸出情況main() serial_init(); IT0=1; EA=1;EX0=1; while(1);案例4:蒸汽鍋爐參數(shù)越限報(bào)警控制液位上、下限SL1、SL2開(kāi)關(guān)取自“色帶指示報(bào)警儀”,分別接,。蒸汽壓力下限SP開(kāi)關(guān)接。爐堂溫度上限ST開(kāi)關(guān)接。輸出接發(fā)光二極管,與4個(gè)參數(shù)對(duì)應(yīng),越限時(shí)則相應(yīng)的LED點(diǎn)亮。#includevoid isr_int0(void);main() IT0=0; EX0=1; EA=1; while(1) 主函數(shù)(初始化)void isr_int0(void) interrupt 0 char temp1; P1
19、 = 0 x0ff; temp1 = P1; temp1 =temp10;i-): 多個(gè)外部中斷源系統(tǒng)設(shè)計(jì)多中斷源系統(tǒng)的設(shè)計(jì)方法。1定時(shí)器中斷作為外部中斷使用 把外部中斷引線接到定時(shí)/計(jì)數(shù)器T0或T1的引腳上,將它設(shè)成計(jì)數(shù)方式,時(shí)間常數(shù)設(shè)為負(fù)1的補(bǔ)碼,使引腳發(fā)生負(fù)跳變(即來(lái)一個(gè)脈沖)加1后變零向CPU提出中斷請(qǐng)求。 2中斷和查詢結(jié)合的方式3.2 定時(shí)/計(jì)數(shù)器 本節(jié)主要介紹定時(shí)/計(jì)數(shù)器的功能、結(jié)構(gòu),工作方式,以及如何應(yīng)用定時(shí)/計(jì)數(shù)器為單片機(jī)的應(yīng)用系統(tǒng)服務(wù)。定時(shí)/計(jì)數(shù)器的功能: 作定時(shí)器用:如同鬧鐘或手機(jī)的定時(shí)功能; 作計(jì)數(shù)器用:對(duì)外來(lái)的脈沖個(gè)數(shù)進(jìn)行統(tǒng)計(jì);MCS-51的定時(shí)/計(jì)數(shù)器資源: 51有2
20、個(gè)16位的計(jì)數(shù)器T0、T1; 52有3個(gè)16位的計(jì)數(shù)器T0、T1和T2;注意: 1、要使用定時(shí)/計(jì)數(shù)器前,首先必須對(duì)它進(jìn)行初始化編程,設(shè)置它的功能、工作方式,送時(shí)間常數(shù),并設(shè)置與中斷相關(guān)的命令 2、計(jì)數(shù)器為加1計(jì)數(shù),若長(zhǎng)度為n位,則計(jì)數(shù)范圍為:12n ; 送入計(jì)數(shù)器的初值稱為時(shí)間常數(shù),它以計(jì)數(shù)次數(shù)作為負(fù)數(shù)的補(bǔ)碼設(shè)置的。定時(shí)功能 對(duì)片內(nèi)機(jī)器周期進(jìn)行計(jì)數(shù),即每個(gè)機(jī)器周期產(chǎn)生一 個(gè)計(jì)數(shù)脈沖,計(jì)數(shù)加1。實(shí)時(shí)控制、實(shí)時(shí)采樣、定時(shí)控制等。振蕩器12 加 1計(jì)數(shù)器TFx申請(qǐng)中斷TX端C/T=0C/T=1控制信號(hào)TRx定時(shí)、計(jì)數(shù)的工作原理定時(shí)、計(jì)數(shù)的工作原理計(jì)數(shù)功能 對(duì)片外從T0()、T1()引腳輸入的外部脈
21、沖信號(hào)進(jìn)行計(jì)數(shù),下降沿計(jì)數(shù)加1。計(jì)數(shù)頻率為晶振頻率的1/24。生產(chǎn)線上產(chǎn)品計(jì)數(shù)、檢測(cè)電機(jī)轉(zhuǎn)速等功能。振蕩器12 加 1計(jì)數(shù)器TFx申請(qǐng)中斷TX端C/T=0C/T=1控制信號(hào)TRx3.2.1 定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)THX高8位計(jì)數(shù)器TLX高8位計(jì)數(shù)器定時(shí)/計(jì)數(shù)器控制寄存器定時(shí)/計(jì)數(shù)器工作模式寄存器1、定時(shí)計(jì)數(shù)器的組成2、定時(shí)器工作方式寄存器 T1T0GATE 定時(shí)器計(jì)數(shù)器運(yùn)行控制位 定時(shí)器方式或計(jì)數(shù)器方式選擇位。 時(shí),為計(jì)數(shù)器方式; 時(shí),為定時(shí)器方式。M1M0工作方式 選擇MI Mo 方式 0 0 00 1 11 0 21 1 3 (字節(jié)地址89H)GATE 定時(shí)器計(jì)數(shù)器運(yùn)行控制位,用來(lái)確定對(duì)應(yīng)的外
22、部中斷請(qǐng)求引腳( )是否參與T0或T1的操作控制。當(dāng)GATE=0時(shí),外部中斷請(qǐng)求引腳( )不參與定時(shí)器控制, 當(dāng)GATE=1時(shí),外部中斷請(qǐng)求引腳( ) 參與定時(shí)器控制.011TR0TR0=1定時(shí)/計(jì)數(shù)啟動(dòng)TR0=0定時(shí)/計(jì)數(shù)停止定時(shí)/計(jì)數(shù)器運(yùn)行控制位10可見(jiàn)當(dāng)GATE=1時(shí),外部中斷請(qǐng)求引腳( ) 參與定時(shí)器控制.GATE常用于對(duì)外部中斷0或1引腳的脈沖寬度的測(cè)量 設(shè)置GATA=1,TR0=1,則由 控制定時(shí)/計(jì)數(shù)器的運(yùn)行.此時(shí)定時(shí)/計(jì)數(shù)器記錄的時(shí)間就是 引腳高電平的寬度2TCON控制寄存器 定時(shí)器/計(jì)數(shù)器T0運(yùn)行控制,TR0=0時(shí)停止,TR0=1時(shí)開(kāi)啟。定時(shí)器/計(jì)數(shù)器T1運(yùn)行控制,TR1=0
23、時(shí)停止,TR1=1時(shí)開(kāi)啟。定時(shí)器/計(jì)數(shù)器T0溢出標(biāo)志。溢出時(shí)自動(dòng)置1,中斷響應(yīng)后自動(dòng)復(fù)位,也可軟件復(fù)位定時(shí)器/計(jì)數(shù)器T1溢出標(biāo)志。溢出時(shí)自動(dòng)置1,中斷響應(yīng)后自動(dòng)復(fù)位,也可軟件復(fù)位 位: 定時(shí)器計(jì)數(shù)器作定時(shí)還是作計(jì)數(shù)功能選擇位。 作定時(shí)用(對(duì)內(nèi)部的時(shí)鐘計(jì)數(shù)); - 定時(shí)/計(jì)數(shù)器輸入頻率, - 晶振頻率 ; 作計(jì)數(shù)用(對(duì)外部脈沖計(jì)數(shù)) 3.2.2 定時(shí)/計(jì)數(shù)器的工作方式 定時(shí)器/計(jì)數(shù)器有四種工作方式 ,通過(guò)TMOD的M1M0兩位來(lái)共同設(shè)置四種不同的工作方式。四種方式主要區(qū)別在于,計(jì)數(shù)器的長(zhǎng)度不同、時(shí)間常數(shù)的置入方式不同,實(shí)際可用的計(jì)數(shù)器的數(shù)量不同。方式0 : M1M0=00 T1和T0 組成兩個(gè)獨(dú)
24、立的13位定時(shí)/計(jì)數(shù)器。 13位數(shù)的高8位存放在TH1或TH0中,低5位存放在TL1或TL0中(TL中的高3位為零) 計(jì)數(shù)范圍: 18192 時(shí)間常數(shù):方式1 : M1M0=01 T1和T0 組成兩個(gè)獨(dú)立的16位定時(shí)/計(jì)數(shù)器。 16位數(shù)的高8位存放在TH1或TH0中,低8位存放在TL1或TL0中 計(jì)數(shù)范圍: 165536 時(shí)間常數(shù): (FFFFH) (0000H)方式2 : M1M0=10 T1和T0 組成兩個(gè)獨(dú)立的8位定時(shí)/計(jì)數(shù)器(由TL1和TL0擔(dān)當(dāng)。 8位數(shù)的分別存放在THX和TLX中,當(dāng)TLX加1計(jì)數(shù)器加到零后,將 THX中的時(shí)間常數(shù)自動(dòng)的又送回TLX中,重新開(kāi)始計(jì)數(shù)。計(jì)數(shù)范圍: 12
25、56 時(shí)間常數(shù):1111111100000000方式3(只適用于T0) : M1M0=11 T0 由TH0和TL0組成兩個(gè)獨(dú)立的8位定時(shí)/計(jì)數(shù)器。TH0借用了T1的啟動(dòng)和中斷標(biāo)志。 T1只能用于不產(chǎn)生中斷的方式0-2的任何一種以及作為串口的波特率發(fā)生器。3.3.3 定時(shí)/計(jì)數(shù)器的應(yīng)用舉例1、定時(shí)/計(jì)數(shù)器的時(shí)間常數(shù)和溢出率的計(jì)算TC(時(shí)間常數(shù))送入定時(shí)/計(jì)數(shù)器THX和TLX的初始值。X(計(jì)數(shù)長(zhǎng)度) 計(jì)數(shù)器的實(shí)際計(jì)數(shù)值, t(定時(shí)時(shí)間)定時(shí)時(shí)間的倒數(shù)即為溢出率=1/t例如:設(shè)晶振為12MHz,求定時(shí)器定時(shí)時(shí)間為5ms時(shí)的時(shí)間常數(shù) (1)采用13位(n=13)計(jì)數(shù)器時(shí)TC=8192-5000=319
26、2=0C78H=01100011 11000BTH0=0 x63; TL0=0 x18;(2)采用16位(n=16)計(jì)數(shù)器時(shí)TC=65536-5000=60536=EC78H TH0=0 xec; TL0=0 x78;(3)采用8位計(jì)數(shù)器時(shí)12M時(shí)鐘時(shí)8位計(jì)數(shù)器的最大定時(shí)時(shí)間為256s,一次定時(shí)5MS不能達(dá)到要求,在中斷程序中可采用多次溢出累加法 時(shí)間常數(shù)=2n-定時(shí)時(shí)間/機(jī)器周期2 定時(shí)器/計(jì)數(shù)器的初始化編程四個(gè)步驟:(1)設(shè)置TMOD方式字,只能用字節(jié)尋址。如:TMOD=0 x11 ;兩個(gè)16位定時(shí)器 TMOD=0 x22 ;兩個(gè)8位自動(dòng)重裝初值定時(shí)器 TMOD=0 x51 ;T1為16位
27、計(jì)數(shù)器,T0為16位定時(shí)器(2)將定時(shí)時(shí)間常數(shù)和初值放入TH和TL,只能字節(jié)尋址。如: TH0=0 x07; TL0=0 xFF; TH1=0 x01; TL1=0 xF8;(3)定時(shí)器中斷的開(kāi)放一般用位尋址賦值,如: EA=1; ET0=1; ET1=1;也可以用字節(jié)尋址賦值: IE=0 x8a; 在運(yùn)行中若要停止中斷,對(duì)應(yīng)用 EA=0; ET0=0; 和 ET1=0;指令(4)啟動(dòng)定時(shí)器或計(jì)數(shù)器,一般用位尋址,如: TR0=1; TR1=1;在運(yùn)行中若要停止定時(shí)或計(jì)數(shù),對(duì)應(yīng)用 TR0=0; 和 TR1=0;3、應(yīng)用實(shí)例(1)試用定時(shí)/計(jì)數(shù)器T0編程使P1.0 產(chǎn)生周期為40ms的方波信號(hào)
28、(設(shè)晶振頻率為6MHZ )解: 時(shí)間常數(shù)的計(jì)算:定時(shí)時(shí)間為方波周期的一半即 t=20ms=20000 ;晶振頻率為6MHZ,即機(jī)器周期為2 時(shí)間常數(shù)TC=216-t/機(jī)器周期=65536-20000/2=55536 =D8F0 HA、若采用中斷方式: 要在主函數(shù)中對(duì)中斷相關(guān)初始化內(nèi)容設(shè)置好,中斷允許寄存器IE,中斷優(yōu)先級(jí)寄存器IP進(jìn)行設(shè)置。 # include # define P10 P10 主函數(shù) void main( ) TMOD =0 x01; / 設(shè)T0為方式1定時(shí) TH0=0 xD8 ; TL0=0 xF0 ; / 送時(shí)間常數(shù) ET0=1; / 允許T0中斷 EA=1 ; / CP
29、U允許中斷 TR0=1 ; / 啟動(dòng)T0定時(shí)器 P10 =1; / while(1) ; / 等待中斷中斷服務(wù)函數(shù) void T00(void) interrupt 1 TH0=0 xD8; / 重送時(shí)間常數(shù); TH0=0 xD8 ; TL0=0 xF0 ; /送時(shí)間常數(shù) P10 = !P10 / /中斷返回B、采用查詢方式# include # define P10=P10 void main( ) TMOD =0 x01 ;/ 設(shè)T0為方式1定時(shí) TH0=0 xD8 ; TL0=0 xF0 /送時(shí)間常數(shù) ET0=1; / 允許T0中斷 EA=1 ; / CPU允許中斷 TR0=1 ; /
30、啟動(dòng)T0定時(shí)器 P10 =1; / while (1) while(TF0=0) ; / 等待定時(shí)溢出發(fā)出請(qǐng)求 TF0=0; / 清中斷標(biāo)志,為下次中斷來(lái)到準(zhǔn)備 TH0=0 xD8; / 重送時(shí)間常數(shù); TH0=0 xD8 ; TL0=0 xF0 ; /送時(shí)間常數(shù) P10 = !P10 ; / 延時(shí)時(shí)間超過(guò)定時(shí)器最大能定時(shí)的時(shí)間的處理 可以外設(shè)一個(gè)計(jì)數(shù)變量,若要定時(shí)1S,可用方式1先定時(shí)20ms,外計(jì)數(shù)器值為50,在20ms定時(shí)到后,對(duì)計(jì)數(shù)器減1,不等于0,則繼續(xù)定時(shí)等待,直到50次定時(shí)到后,即總定時(shí)時(shí)間為1S,1S到后再作相應(yīng)的處理。處理完了,再重新定時(shí)1S。B、采用查詢方式# includ
31、e # define P10=P10 void main( ) TMOD =0 x01 / 設(shè)T0為方式1定時(shí) TH0=0 xD8 ; TL0=0 xF0 /送時(shí)間常數(shù) ET0=1; / 允許T0中斷 EA=1 / CPU允許中斷 TR0=1 / 啟動(dòng)T0定時(shí)器 P10 =1; / while (1) while(TF0=0) ; / 等待定時(shí)溢出發(fā)出請(qǐng)求 TF0=0; / 清中斷標(biāo)志,為下次中斷來(lái)到準(zhǔn)備 TH0=0 xD8; /重送時(shí)間常數(shù); TH0=0 xD8 ; TL0=0 xF0 ; /送時(shí)間常數(shù) P10 = !P10 ; / unsigned char count=50;/應(yīng)設(shè)置全局
32、變量if (-count=0) P10=!P10; count=50; # include # define P10 P10 void main( ) TMOD =0 x01; / 設(shè)T0為方式1定時(shí) TH0=0 xD8 ; TL0=0 xF0 ; / 送時(shí)間常數(shù) ET0=1; / 允許T0中斷 EA=1 ; / CPU允許中斷 TR0=1 ; / 啟動(dòng)T0定時(shí)器 P10 =1; / while(1) ; / 等待中斷中斷服務(wù)函數(shù) void T00(void) interrupt 1 TH0=0 xD8; / 重送時(shí)間常數(shù); TH0=0 xD8 ; TL0=0 xF0 ; /送時(shí)間常數(shù) P10 = !P10 / /中斷返回if (-count=0) P10=
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026西安市浐灞第十一小學(xué)招聘筆試備考題庫(kù)及答案解析
- 2026年跨境營(yíng)銷策劃公司業(yè)務(wù)量統(tǒng)計(jì)與分析管理制度
- 企業(yè)員工培訓(xùn)與技能發(fā)展計(jì)劃目標(biāo)制度
- 2026菏澤魯西新區(qū)事業(yè)單位公開(kāi)招聘初級(jí)綜合類崗位人員(10人)考試備考題庫(kù)及答案解析
- 2026年跨境營(yíng)銷策劃公司簡(jiǎn)歷篩選與面試考核管理制度
- 2026年跨境營(yíng)銷策劃公司海外銷售渠道建設(shè)與管理制度
- 旅游培訓(xùn)班管理制度
- 聲樂(lè)培訓(xùn)規(guī)章制度
- 期盼完善培訓(xùn)制度
- 農(nóng)村公路日常培訓(xùn)制度
- TCEC電力行業(yè)數(shù)據(jù)分類分級(jí)規(guī)范-2024
- 駱駝的養(yǎng)殖技術(shù)與常見(jiàn)病防治
- GB/T 26951-2025焊縫無(wú)損檢測(cè)磁粉檢測(cè)
- 2025及未來(lái)5-10年高壓管匯項(xiàng)目投資價(jià)值市場(chǎng)數(shù)據(jù)分析報(bào)告
- 《國(guó)家十五五規(guī)劃綱要》全文
- 腹部手術(shù)圍手術(shù)期疼痛管理指南(2025版)課件
- 2025年衛(wèi)生人才評(píng)價(jià)考試(臨床醫(yī)學(xué)工程技術(shù)中級(jí))歷年參考題庫(kù)含答案
- 呼吸康復(fù)科普脫口秀
- 2025年《思想道德與法治》期末考試題庫(kù)及答案
- 2025初一英語(yǔ)閱讀理解100篇
- 2026屆四川省成都市青羊區(qū)樹(shù)德實(shí)驗(yàn)中學(xué)物理九年級(jí)第一學(xué)期期末考試試題含解析
評(píng)論
0/150
提交評(píng)論