《高級(jí)電工-單片機(jī)》07-10.ppt_第1頁
《高級(jí)電工-單片機(jī)》07-10.ppt_第2頁
《高級(jí)電工-單片機(jī)》07-10.ppt_第3頁
《高級(jí)電工-單片機(jī)》07-10.ppt_第4頁
《高級(jí)電工-單片機(jī)》07-10.ppt_第5頁
已閱讀5頁,還剩59頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、單片機(jī) 原理與實(shí)用技術(shù),主講教師:,黃 鵬,為高級(jí)電工班的學(xué)員提供優(yōu)秀的教學(xué)資源!,為高級(jí)電工班的學(xué)員提供優(yōu)秀的教學(xué)資源!,7.1 定時(shí)計(jì)數(shù)器結(jié)構(gòu)與控制,可以利用延時(shí)程序來實(shí)現(xiàn),稱軟件定時(shí)。,但延時(shí)程序運(yùn)行時(shí)占用了CPU,使該時(shí)間內(nèi)單片機(jī)系統(tǒng)無法進(jìn)行其他工作,這樣不但大大降低了工作效率,并且有時(shí)也是難以進(jìn)行的。,定時(shí)與延時(shí),7.1 定時(shí)計(jì)數(shù)器結(jié)構(gòu)與控制,定時(shí)計(jì)數(shù)器進(jìn)行定時(shí)計(jì)數(shù)工作時(shí)無須CPU的參與而獨(dú)立進(jìn)行,這樣就解放了CPU,提高了工作效率和系統(tǒng)功能,也簡(jiǎn)化了系統(tǒng)的設(shè)計(jì)。,定時(shí)與計(jì)數(shù),7.1 定時(shí)計(jì)數(shù)器結(jié)構(gòu)與控制,圖7-1 定時(shí)器計(jì)數(shù)器硬件結(jié)構(gòu)框圖,7.1 定時(shí)計(jì)數(shù)器結(jié)構(gòu)與控制 7.1.1

2、結(jié)構(gòu)及工作原理,1.計(jì)數(shù)功能,當(dāng)CT=1時(shí),計(jì)數(shù)器功能; 計(jì)數(shù)器與單片機(jī)外輸入信號(hào)引腳T0或T1(即P3.4、P3.5)接通,此時(shí),計(jì)數(shù)器對(duì)由T0或T1引腳輸入的外部脈沖信號(hào)進(jìn)行計(jì)數(shù)(下降沿觸發(fā)),定時(shí)計(jì)數(shù)器以計(jì)數(shù)方式工作。,7.1 定時(shí)計(jì)數(shù)器結(jié)構(gòu)與控制 7.1.1 結(jié)構(gòu)及工作原理,定時(shí)功能和計(jì)數(shù)功能的機(jī)理是一樣的,都是計(jì)數(shù)操作。對(duì)于定時(shí)功能,計(jì)數(shù)信號(hào)來自單片機(jī)內(nèi)部,其周期是定值并且是預(yù)先知道的,所以根據(jù)計(jì)數(shù)器累計(jì)的脈沖個(gè)數(shù),即可計(jì)算出時(shí)間。,2.定時(shí)功能,7.1 定時(shí)計(jì)數(shù)器結(jié)構(gòu)與控制 7.1.1 結(jié)構(gòu)及工作原理,某單片機(jī)采用12 MHz晶振器,則計(jì)數(shù)頻率為1 MHz,即計(jì)數(shù)器每加1,為1微秒

3、。若計(jì)數(shù)器的內(nèi)容增加1000,延時(shí)時(shí)間則為1毫秒。,2.定時(shí)功能,舉例,7.1 定時(shí)計(jì)數(shù)器結(jié)構(gòu)與控制 7.1.2 控制寄存器,每個(gè)定時(shí)計(jì)數(shù)器各有一個(gè)16位計(jì)數(shù)器T0、T1。 T0由TL0(低8位)和TH0(高8位)組成,地址分別為8AH、8CH, T1由TL1和TH1組成,地址為8BH、8DH。,1.定時(shí)/計(jì)數(shù)器T0、T1,7.1 定時(shí)計(jì)數(shù)器結(jié)構(gòu)與控制 7.1.2 控制寄存器,在定時(shí)計(jì)數(shù)工作之前用戶預(yù)置一個(gè)初值,工作時(shí)在脈沖觸發(fā)下進(jìn)行加1計(jì)數(shù),當(dāng)計(jì)數(shù)器達(dá)到最大值即“滿”時(shí),溢出,突變?yōu)镺,并同時(shí)向CPU發(fā)出中斷申請(qǐng)。預(yù)置的初值不同,定時(shí)的時(shí)間長(zhǎng)度便不同。,定時(shí)/計(jì)數(shù)器如何發(fā)出中斷請(qǐng)求?,1.定

4、時(shí)/計(jì)數(shù)器T0、T1,7.1 定時(shí)計(jì)數(shù)器結(jié)構(gòu)與控制 7.1.2 控制寄存器,計(jì)數(shù)器如何發(fā)出中斷請(qǐng)求?,2.定時(shí)器的控制寄存器(TCOM),工作方式控制字(TCOM),7.1 定時(shí)計(jì)數(shù)器結(jié)構(gòu)與控制 7.1.2 控制寄存器,當(dāng)計(jì)數(shù)器計(jì)滿溢出(計(jì)數(shù)器內(nèi)容躍變?yōu)?0H)時(shí),該位由硬件自動(dòng)置1。,2.定時(shí)器的控制寄存器(TCOM),7.1 定時(shí)計(jì)數(shù)器結(jié)構(gòu)與控制 7.1.2 控制寄存器,若此時(shí)對(duì)應(yīng)的定時(shí)計(jì)數(shù)器中斷開放(EA=1,ET=1),則定時(shí)計(jì)數(shù)器工作在中斷方式下,TF位作為中斷標(biāo)志發(fā)出中斷請(qǐng)求, 條件滿足時(shí)引發(fā)中斷,CPU轉(zhuǎn)向000BH(T0)或001BH(T1)的定時(shí)中斷入口地址執(zhí)行定時(shí)中斷處理程

5、序,同時(shí)自動(dòng)將TF清零。,TF0、TF1為計(jì)數(shù)溢出標(biāo)志位,TF0、TF1為計(jì)數(shù)溢出標(biāo)志位,2.定時(shí)器的控制寄存器(TCOM),7.1 定時(shí)計(jì)數(shù)器結(jié)構(gòu)與控制 7.1.2 控制寄存器,若此時(shí)相應(yīng)的定時(shí)中斷未開放,工作在查詢方式下,此位作為狀態(tài)位供查詢。應(yīng)注意查詢有效(為1)后,應(yīng)用軟件方法及時(shí)將該位清零。,7.1 定時(shí)計(jì)數(shù)器結(jié)構(gòu)與控制 7.1.2 控制寄存器,計(jì)數(shù)器如何發(fā)出中斷請(qǐng)求?,TF0、TF1為計(jì)數(shù)溢出標(biāo)志位,TR0、TR1為定時(shí)/計(jì)數(shù)運(yùn)行標(biāo)志位,2.定時(shí)器的控制寄存器(TCOM),當(dāng)工作方式控制寄存器TMOD中 GATE=0時(shí): TR0(TR1)=0,定時(shí)計(jì)數(shù)器0(1)停止工作; TR0(

6、TR1)=1,定時(shí)計(jì)數(shù)器0(1)開始工作。,7.1 定時(shí)計(jì)數(shù)器結(jié)構(gòu)與控制 7.1.2 控制寄存器,TF0、TF1為計(jì)數(shù)溢出標(biāo)志位,TR0、TR1為定時(shí)/計(jì)數(shù)運(yùn)行標(biāo)志位,2.定時(shí)器的控制寄存器(TCOM),7.1 定時(shí)計(jì)數(shù)器結(jié)構(gòu)與控制,GATE為門控制信號(hào)位。,3.工作方式控制寄存器(TMOD),7.1 定時(shí)計(jì)數(shù)器結(jié)構(gòu)與控制,GATE為門控制信號(hào)位。,3.工作方式控制寄存器(TMOD),M1M0為工作方式選擇位。 當(dāng) M1M0=00 時(shí),工作方式0; 當(dāng) M1M0=01 時(shí),工作方式1; 當(dāng) M1M0=10 時(shí),工作方式2; 當(dāng) M1M0=11 時(shí),工作方式3。,圖72 13位計(jì)數(shù)器,7.1 定

7、時(shí)計(jì)數(shù)器結(jié)構(gòu)與控制,當(dāng)GATE=0時(shí),定時(shí)器由TCON中的TR位啟動(dòng)或停止定時(shí)計(jì)數(shù); 當(dāng)GATE=1時(shí),定時(shí)器由TR和外中斷請(qǐng)求信號(hào)共同控制啟動(dòng)或停止。,3.工作方式控制寄存器(TMOD),GATE為門控制信號(hào)位,7.2定時(shí)/計(jì)數(shù)器4種工作方式,M1M0為工作方式選擇位。 當(dāng) M1M0=00時(shí),工作方式0; 當(dāng) M1M0=01時(shí),工作方式1; 當(dāng) M1M0=10時(shí),工作方式2; 當(dāng) M1M0=11時(shí),工作方式3。,T0共有4種工作方式,T1只有前3種工作方式,M1M0為工作方式選擇位。 當(dāng) M1M0=00時(shí),工作方式0; 當(dāng) M1M0=01時(shí),工作方式1; 當(dāng) M1M0=10時(shí),工作方式2;

8、當(dāng) M1M0=11時(shí),工作方式3。,7.2定時(shí)/計(jì)數(shù)器4種工作方式,圖7-2 13位計(jì)數(shù)器,7.2.1 工作方式O(13位計(jì)數(shù)定時(shí)),若為計(jì)數(shù)工作,則計(jì)數(shù)值的范圍為:18192(213)。 若為定時(shí)工作,定時(shí)時(shí)間計(jì)算公式為: (213-T0初值)晶振周期12=(213-T0初值)12/fosc=(213-T0初值)機(jī)器周期 fosc為晶振頻率。設(shè)fosc=12 MHz, 則延時(shí)范圍為:18192s。,當(dāng)M1M0=00時(shí),工作方式0,工作過程為:,7.2定時(shí)/計(jì)數(shù)器4種工作方式,圖7-3 16位計(jì)數(shù)器,7.2.2 工作方式1(16位計(jì)數(shù)定時(shí)),工作過程與方式0完全一樣。MCS-51單片機(jī)之所以重

9、復(fù)設(shè)置幾乎完全一樣的方式0和方式1,是出于與MCS-48單片機(jī)兼容的考慮,因?yàn)镸CS-48的定時(shí)/計(jì)數(shù)器就是13位計(jì)數(shù)結(jié)構(gòu)。,當(dāng)M1M0=01時(shí),工作方式1,工作過程為:,7.2定時(shí)/計(jì)數(shù)器4種工作方式,圖7-3 16位計(jì)數(shù)器,7.2.2 工作方式1(16位計(jì)數(shù)定時(shí)),若為計(jì)數(shù)工作時(shí),計(jì)數(shù)范圍為:165536(216)。 若為定時(shí)工作時(shí),定時(shí)時(shí)間計(jì)算公式為: (216-T0初值)晶振周期12=(216-T0初值)12fosc =(216-T0初值)機(jī)器周期 若fosc=12 MHz,延時(shí)范圍為:165536(216)s。,當(dāng)M1M0=01時(shí),工作方式1,工作過程為:,7.2定時(shí)/計(jì)數(shù)器4種工作

10、方式,7.2.2 工作方式1(16位計(jì)數(shù)定時(shí)),例71某單片機(jī)晶振頻率fosc=12 MHz,使用定時(shí)器產(chǎn)生周期為 1ms 的等寬方波,由P1.0端輸出。 使用定時(shí)器1,以工作方式0,采用查詢方式; 使用定時(shí)器0,以工作方式1,采用中斷方式。 解 (1)使用定時(shí)器1,工作方式0,查詢方式 計(jì)算計(jì)數(shù)初值TH1、TL1 要產(chǎn)生1 ms的等寬方波,只要使用P1.0端交替輸出寬度各為500s的高、低電平即可。定時(shí)時(shí)間為500s,設(shè)計(jì)數(shù)初值為X,由式(71)可得(8192-500=7692) 解得X=7692,轉(zhuǎn)化為二進(jìn)制為:1111000001100取高8位放入TH1,低5位放人TL1,則TH1=0F

11、OH,TL1=0CH。,當(dāng)M1M0=01時(shí),工作方式1,7.2定時(shí)/計(jì)數(shù)器4種工作方式,7.2.2 工作方式1(16位計(jì)數(shù)定時(shí)),工作方式控制寄存器初始化 定時(shí)器1定時(shí)功能,C/T=0;無INT0控制,GATE=0;工作方式為0,M1M0=00, 定時(shí)器0不用,有關(guān)位均設(shè)為0。因此,工作方式控制寄存器的內(nèi)容為00H。 TR及IE的使用 因?yàn)椴樵兎绞?,要關(guān)閉中斷,IE為0。 啟動(dòng)計(jì)數(shù)時(shí),TR1要置1。,當(dāng)M1M0=01時(shí),工作方式1,例71,7.2定時(shí)/計(jì)數(shù)器4種工作方式,7.2.2 工作方式1(16位計(jì)數(shù)定時(shí)),程序設(shè)計(jì)(查詢方式) MOV T0MD,#00H ;設(shè)置T1為工作方式0 MOV

12、TH1,#0FOH ;設(shè)置計(jì)數(shù)初值 MOV TL1, #0CH MOV IE,#00H ;禁止中斷 SETB TR1 ;啟動(dòng)定時(shí) LOOP: JNB TF1,LOOP ;查詢計(jì)數(shù)溢出 CPL P1.0 ;輸出取反 MOV TH1,#0FOH ;重新設(shè)置計(jì)數(shù)初值 MOV TL1,#0CH CLR TF1 ;清除計(jì)數(shù)溢出標(biāo)志位 AJMP LOOP,當(dāng)M1M0=01時(shí),工作方式1,例71,7.2定時(shí)/計(jì)數(shù)器4種工作方式,7.2.2 工作方式1(16位計(jì)數(shù)定時(shí)),(2)使用定時(shí)器0,工作方式1,中斷方式: 計(jì)算計(jì)數(shù)初值,由式(72)得: 所以TH0=0FEH,TL0=0CH。 TMOD寄存器初始化:

13、(TMOD)=01H IE及IR的使用:采用中斷方式,要使EA=1及ET0=1開放中斷。由TR0=1啟動(dòng)定時(shí)。,當(dāng)M1M0=01時(shí),工作方式1,例71,7.2定時(shí)/計(jì)數(shù)器4種工作方式,7.2.2 工作方式1(16位計(jì)數(shù)定時(shí)),主程序: MOV TMOD,#01H ;定時(shí)器0工作方式1 MOV TH0,#0FEH ;設(shè)置計(jì)數(shù)初值 MOV TL0, #0CH SETB EA ;開放中斷 SETB ET0 ;開放定時(shí)0中斷 SETB TR0 ;定時(shí)開始 SJMP $ ;等待中斷 中斷服務(wù)程序: ORG 000BH ;T0中斷源入口地址 CPL P1.0 ;輸出取反 MOV TH0,#0FEH ;重新

14、設(shè)置計(jì)數(shù)初值 MOV TL0,#0CH RETI,當(dāng)M1M0=01時(shí),工作方式1,例71,程序設(shè)計(jì)如下:,7.2定時(shí)/計(jì)數(shù)器4種工作方式,7.2.2 工作方式1(16位計(jì)數(shù)定時(shí)),當(dāng)M1M0=01時(shí),工作方式1,例71,中斷入口地址說明,7.2定時(shí)/計(jì)數(shù)器4種工作方式,7.2.2 工作方式1(16位計(jì)數(shù)定時(shí)),使用定時(shí)計(jì)數(shù)器延時(shí),只要將定時(shí)計(jì)數(shù)器初始化后,即由硬件自動(dòng)完成延時(shí)工作,程序中無循環(huán)延時(shí)的指令; 在查詢方式中,CPU要不斷查詢溢出標(biāo)志位TF的狀態(tài),占用了CPU,致使CPU效率不高。在中斷方式中,定時(shí)器的定時(shí)CPU不予理睬,只要把程序之中的SJMP $循環(huán)語句用實(shí)現(xiàn)其他功能的程序段代替

15、,單片機(jī)就可同時(shí)進(jìn)行其他工作; 定時(shí)計(jì)數(shù)器定時(shí)工作時(shí),一般無須INT參與控制,GATE設(shè)置為0,僅由TR啟動(dòng)定時(shí)器工作; 該例中,由于新一次計(jì)數(shù)要重新設(shè)置計(jì)數(shù)初值等,造成定時(shí)停頓,使定時(shí)時(shí)間增加了若干微秒。,當(dāng)M1M0=01時(shí),工作方式1,說明:,7.2定時(shí)/計(jì)數(shù)器4種工作方式,7.2.2 工作方式1(16位計(jì)數(shù)定時(shí)),當(dāng)M1M0=01時(shí),工作方式1,例72,利用定時(shí)器測(cè)定外部脈沖的頻率。,7.2定時(shí)/計(jì)數(shù)器4種工作方式,7.2.2 工作方式1(16位計(jì)數(shù)定時(shí)),當(dāng)M1M0=01時(shí),工作方式1,例72,利用定時(shí)器測(cè)定外部脈沖的頻率。,7.2定時(shí)/計(jì)數(shù)器4種工作方式,7.2.2 工作方式1(16

16、位計(jì)數(shù)定時(shí)),當(dāng)M1M0=01時(shí),工作方式1,例72,利用定時(shí)器測(cè)定外部脈沖的頻率。,高頻脈沖頻率測(cè)定的程序如下: 0RG 0000H SJMP MAIN ORG 001BH ;T1中斷源入口地址 CLR TR0 MOV IE,#00H MOV BUF,TL0 ;將頻率(單位為 ;kHz)存入緩沖單元 RETI,7.2定時(shí)/計(jì)數(shù)器4種工作方式 7.2.2 工作方式1,例72 利用定時(shí)器測(cè)定外部脈沖的頻率。,0RG 0030H MAIN:MOV TMOD,#15H ;T0為計(jì)數(shù)方式 ;T1為定時(shí)方式 MOV TL0,#00 MOV TL1,#0CH ;設(shè)fosc,=6 MHz的定時(shí)1 ms初值

17、MOV TH1,#0FEH MOV IE,#88H ;開定時(shí)1中斷允許 MOV TCON,#50H ;啟動(dòng)計(jì)數(shù) SJMP:$,7.2定時(shí)/計(jì)數(shù)器4種工作方式 7.2.2 工作方式1,例72 利用定時(shí)器測(cè)定外部脈沖的頻率。,低頻脈沖的頻率測(cè)定的程序如下: 0RG 0000H AJMP MAIN 0RG 0003H CLR TR0 MOV IE,#00H MOV BUF,TL0 RETI,7.2定時(shí)/計(jì)數(shù)器4種工作方式 7.2.2 工作方式1,例72 利用定時(shí)器測(cè)定外部脈沖的頻率。,低頻脈沖的頻率測(cè)定的主程序: 0RG 0030H MAIN:MOV TMOD,#0DH ;GATE=1,外部計(jì)數(shù),

18、;工作方式1 MOV TL0,#00 SETB IT0 MOV IE,#81H ;開外中斷O SETB TR0 ;啟動(dòng)計(jì)數(shù) SJHP $,7.2定時(shí)/計(jì)數(shù)器4種工作方式 7.2.2 工作方式1,例72 利用定時(shí)器測(cè)定外部脈沖的頻率。,由例71、例72體會(huì)GATE、INT、TR的控制邏輯及應(yīng)用場(chǎng)合; 體會(huì)例72中兩定時(shí)計(jì)數(shù)器配合工作的應(yīng)用; 體會(huì)例72中定時(shí)計(jì)數(shù)器與中斷配合工作應(yīng)用; 因定時(shí)計(jì)數(shù)工作由硬件完成,程序十分簡(jiǎn)單。,說明:,7.2定時(shí)/計(jì)數(shù)器4種工作方式 7.2.2 工作方式1,例73利用T0門控位GATE測(cè)試INT0引腳上出現(xiàn)的正脈沖的寬度。 設(shè)fosc=6 MHz,脈沖寬度小于10

19、0 ms。,解分析: 因要測(cè)INT0引腳上的信號(hào),故必使GATE=1,并先將TR0置1,將定時(shí)計(jì)數(shù)的啟動(dòng)任務(wù)交由INT0完成。 一旦INT0引腳出現(xiàn)高電平即計(jì)數(shù)開始。 設(shè)置INT0為脈沖中斷觸發(fā)方式,則當(dāng)脈沖高電平結(jié)束下降到低電平時(shí),觸發(fā)中斷,計(jì)數(shù)結(jié)束。 此時(shí)由計(jì)數(shù)器的值即可得輸出脈沖高電平寬度。,例73,7.2定時(shí)/計(jì)數(shù)器4種工作方式 7.2.2 工作方式1,例73利用T0門控位GATE測(cè)試INT0引腳上出現(xiàn)的正脈沖的寬度。 設(shè)fosc=6 MHz,脈沖寬度小于100 ms。,例73,設(shè)特定定時(shí)計(jì)數(shù)器的初值為O,程序如下: 0RG 0000H SJMP MAIN 0RG 0003H SJMP

20、 INT,0RG 0030H MAIN:SETB IT0 MOV TMOD,#09H ;T0定時(shí)方式1,內(nèi)部計(jì)數(shù),GATE置1 MOV TL0,#00H ;置T0初值為0 MOV TH0,#00H SETB TR0 MOV IE,#81H SJMP $,7.2定時(shí)/計(jì)數(shù)器4種工作方式 7.2.2 工作方式1,例73,0RG 0060H INT:CLR TR0 ;停止T0計(jì)數(shù) MOV R0,#20H MOV A,TL0 ;將計(jì)數(shù)值乘以2得脈沖高電平寬度 CLR C ;計(jì)時(shí)=計(jì)數(shù)機(jī)器周期 RLC A ;fosc=6MHz,機(jī)器周期為2S MOVX R0,A MOV A,TH0 ;輸出到外部20H,

21、21H,22H端口 RLC A INC R0 MOVX R0,A CLR A RLC A INC R0 MOVX R0,A RETI END,7.2定時(shí)/計(jì)數(shù)器4種工作方式 7.2.2 工作方式1,例73利用T0門控位GATE測(cè)試INT0引腳上出現(xiàn)的正脈沖的寬度。 設(shè)fosc=6 MHz,脈沖寬度小于100 ms。,此例中,被測(cè)脈沖INT0信號(hào)連接引腳,即為啟動(dòng)定時(shí)計(jì)數(shù)信號(hào); 此例中定時(shí)計(jì)數(shù)器為計(jì)數(shù)工作方式,最終測(cè)定的物理量是時(shí)間,但不是事先設(shè)定的時(shí)間(不是定時(shí)); 注意脈沖寬度與工作方式的匹配,若為工作方式0,則較難實(shí)現(xiàn)測(cè)試任務(wù)。,說明:,7.2定時(shí)/計(jì)數(shù)器4種工作方式,7.2.3 工作方式

22、2 (自動(dòng)加載8位計(jì)數(shù)定時(shí)),以TL0為8位計(jì)數(shù)器,以TH0為預(yù)置寄存器。 初始化時(shí)把計(jì)數(shù)初值同時(shí)分別裝入TL0和TH0中,計(jì)數(shù)溢出時(shí),單片機(jī)自動(dòng)將TH0內(nèi)值加載到TL0中進(jìn)行下一輪定時(shí)過程,而不必用軟件人為地重新設(shè)置初值。方式2工作過程如下: TL0從初始值開始加1計(jì)數(shù); 當(dāng)TL0計(jì)滿溢出時(shí),向TF0進(jìn)位,發(fā)出中斷申請(qǐng); 單片機(jī)自動(dòng)將TH0中數(shù)值加載到TL0中; 重復(fù)從重新開始。,說明:,圖76自動(dòng)加載8位計(jì)數(shù)定時(shí),7.2定時(shí)/計(jì)數(shù)器4種工作方式,7.2.3 工作方式2 (自動(dòng)加載8位計(jì)數(shù)定時(shí)),自動(dòng)重復(fù)加載初值,即方便使用,也使定時(shí)更為精確。但因?yàn)槭?位計(jì)數(shù),計(jì)數(shù)最大值為256,故定時(shí)時(shí)間

23、較短。,設(shè)計(jì)數(shù)初值為X,則定時(shí)時(shí)間為:(28-X)機(jī)器周期,例74使用定時(shí)器0以工作方式2,由P1.6輸出周期為100s連續(xù)等寬方波。已知晶振頻率為12MHz。 解計(jì)算計(jì)數(shù)初值 等寬方波周期100s,定時(shí)時(shí)間應(yīng)為50s,設(shè)計(jì)數(shù)初值為X,7.2定時(shí)/計(jì)數(shù)器4種工作方式,7.2.3 工作方式2 (自動(dòng)加載8位計(jì)數(shù)定時(shí)),7.2定時(shí)/計(jì)數(shù)器4種工作方式,7.2.3 工作方式2 (自動(dòng)加載8位計(jì)數(shù)定時(shí)),中斷服務(wù)子程序設(shè)計(jì)如下: ORG 000BH CPL P1.6 RETI,ORG 1000H MAIN:MOV TMOD,#02H MOV TH0,#0CEH MOV TL0,#0CEH SETB E

24、A SETB ET0 SETB TR0 SJMP $,主程序設(shè)計(jì)如右:,例75將定時(shí)器0改用于外部中斷。 解若定時(shí)器0在方式2下工作,初值為0FFH的話,且設(shè)置為外部計(jì)數(shù)方式,T0端接外部中斷源,當(dāng)外中斷源發(fā)出有效信號(hào)時(shí),即可使計(jì)數(shù)器溢出產(chǎn)生中斷,具體方法如下: 將擴(kuò)展的外部中斷請(qǐng)求信號(hào)接T0端; 置定時(shí)計(jì)數(shù)器0為工作方式2; 將TH0及TL0初值均設(shè)為0FFH; 將擴(kuò)展的外中斷服務(wù)程序?qū)懭攵〞r(shí)/計(jì)數(shù)器0中斷入口地址000BH起的RAM單元中。,7.2定時(shí)/計(jì)數(shù)器4種工作方式,7.2.3 工作方式2 (自動(dòng)加載8位計(jì)數(shù)定時(shí)),7.2定時(shí)/計(jì)數(shù)器4種工作方式,7.2.3 工作方式2 (自動(dòng)加載8

25、位計(jì)數(shù)定時(shí)),MOV TMOD,#06H MOV TH0,#0FFH MOV TL0,#OFFH SETB EA SETB ET0 SETB TR0,初始化程序設(shè)計(jì)如右:,方式3只適應(yīng)于定時(shí)計(jì)數(shù)器0。如果強(qiáng)制將定時(shí)計(jì)數(shù)器1設(shè)置為方式3(M1M0=11),則將與TR1=0效果相同,即關(guān)閉了定時(shí)/計(jì)數(shù)器1。 定時(shí)計(jì)數(shù)器0在工作方式3下時(shí),被拆為兩個(gè)獨(dú)立的8位計(jì)數(shù)器TL0和TH0,其中TL0功能與方式0或1完全相同,既可作計(jì)數(shù)使用,也可作定時(shí)使用。,7.2定時(shí)/計(jì)數(shù)器4種工作方式,7.2.4 工作方式3(雙8位計(jì)數(shù)定時(shí)),7.2定時(shí)/計(jì)數(shù)器4種工作方式,7.2.4 工作方式3(雙8位計(jì)數(shù)定時(shí)),圖7

26、7 雙8位計(jì)數(shù)定時(shí),獨(dú)立的8位計(jì)數(shù)器TL0,TL0功能與方式0或1完全相同,既可作計(jì)數(shù)使用,也可作定時(shí)使用。,7.2定時(shí)/計(jì)數(shù)器4種工作方式,7.2.4 工作方式3(雙8位計(jì)數(shù)定時(shí)),圖77 雙8位計(jì)數(shù)定時(shí),由于TL0獨(dú)占了定時(shí)計(jì)數(shù)器0的各控制位,TH0只能作為簡(jiǎn)單的定時(shí)器使用,不能對(duì)外部脈沖計(jì)數(shù),且只好借用定時(shí)計(jì)數(shù)器1的控制位TR1和TF1,即定時(shí)的啟動(dòng)和停止由 TR1控制,而計(jì)數(shù)溢出則使TF1置位。如圖77(b)所示。,當(dāng)定時(shí)計(jì)數(shù)器0在工作方式3下時(shí),定時(shí)/計(jì)數(shù)器1仍可置為方式0、1或2,但由于TR1、 TF1及中斷源被定時(shí)計(jì)數(shù)器0占用,此時(shí)定時(shí)計(jì)數(shù)器1僅由CT切換定時(shí)或計(jì)數(shù)功能。當(dāng)計(jì)數(shù)溢

27、出時(shí),不能產(chǎn)生中斷,只能將輸出送往串行口,這種情況下,定時(shí)計(jì)數(shù)器1一般用做串行口波特率發(fā)生器使用。,7.2定時(shí)/計(jì)數(shù)器4種工作方式,7.2.4 工作方式3(雙8位計(jì)數(shù)定時(shí)),使用定時(shí)計(jì)數(shù)器實(shí)現(xiàn)以下功能 代替軟件延時(shí)程序,解放CPU。 輸出各種方波。 檢測(cè)統(tǒng)計(jì)外部脈沖數(shù)。 檢測(cè)外部脈沖寬度。,7.3 定時(shí)計(jì)數(shù)器應(yīng)用實(shí)例,7.3 定時(shí)計(jì)數(shù)器應(yīng)用實(shí)例,圖78發(fā)動(dòng)機(jī)轉(zhuǎn)速檢測(cè)電路,例76,例76 試用MCS-51單片機(jī)處理轉(zhuǎn)速傳感器信號(hào),得到發(fā)動(dòng)機(jī)轉(zhuǎn)速。,同發(fā)動(dòng)機(jī)旋轉(zhuǎn)的飛輪,激光發(fā)射,圓孔 (直徑很?。?輸出低電平,解分析:若測(cè)定轉(zhuǎn)速傳感器輸出脈沖的周期就可以計(jì)算出其轉(zhuǎn)速,忽略圓孔所占圓周長(zhǎng)度,以高電平

28、時(shí)間代替脈沖周期。為測(cè)定高電平寬度,可將轉(zhuǎn)速傳感器輸出端與INT0相連。這樣,該問題就轉(zhuǎn)化為例73。 【設(shè)】晶振頻率為6 MHz,指令周期為2s。發(fā)動(dòng)機(jī)轉(zhuǎn)速一般在每分鐘10006000轉(zhuǎn)之間,每轉(zhuǎn)時(shí)間在O.010.06 s之間,計(jì)數(shù)器計(jì)數(shù)不超過16位。,7.3 定時(shí)計(jì)數(shù)器應(yīng)用實(shí)例,例76,7.3 定時(shí)計(jì)數(shù)器應(yīng)用實(shí)例,MOV TMOD,#0DH ;設(shè)置定時(shí)器T0計(jì)數(shù)方式 ;工作方式為1,并開啟GATE MOV TH0,#00 ;TH0、TL0清0 MOV TL0,#00 MOV IE,#81H ;開放外中斷O MOV TCON,#11H ;定義外中斷0為脈沖觸發(fā)方式, ;開放TR0,由INT0信

29、號(hào)控制定 ;時(shí)器其他功能程序段,主程序設(shè)計(jì)如下:,例76,由INT0中斷時(shí)TH0 、TL0的值可計(jì)算出發(fā)動(dòng)機(jī)旋轉(zhuǎn)一周所需要的時(shí)間,從而計(jì)算出發(fā)動(dòng)機(jī)每分鐘的轉(zhuǎn)速。 計(jì)算過程由INT0中斷服務(wù)程序完成。中斷服務(wù)程序從略。 說明:本例也可通過統(tǒng)計(jì)單位時(shí)間內(nèi)脈沖的個(gè)數(shù)得到發(fā)動(dòng)機(jī)轉(zhuǎn)過的周數(shù),進(jìn)而計(jì)算出發(fā)動(dòng)機(jī)的平均轉(zhuǎn)速。,7.3 定時(shí)計(jì)數(shù)器應(yīng)用實(shí)例,例76,試用定時(shí)計(jì)數(shù)器完成例53中的問題。 解分析:電路如圖58所示。設(shè)fosc=6MHz 由例53可知,音符1、2、3、4、5、6對(duì)應(yīng)方波電流的半周期分別為:952s,847s,758s714s、637s、568s。由定時(shí)器0選用工作方式1,則對(duì)應(yīng)的計(jì)數(shù)初值

30、分別為:0FE24H、0FE59H、0FE85H、0FE9BH、0FECAH、0FEFAHo 每拍0.8秒可用定時(shí)器1控制,因定時(shí)器1在工作方式1下最長(zhǎng)延長(zhǎng)時(shí)間為0.13秒。所以可使定時(shí)器定時(shí)0.1秒,以8個(gè)循環(huán)實(shí)現(xiàn)0.8秒的控制。 定時(shí)器1的計(jì)數(shù)初值為:3CB0H。,7.3 定時(shí)計(jì)數(shù)器應(yīng)用實(shí)例,例77,7.3 定時(shí)計(jì)數(shù)器應(yīng)用實(shí)例,例77,程序如下: ORG 0000H SJMP MAIN 0RG 000BH CPL P1.0 ;輸出與音符對(duì)應(yīng)的方波 MOV TH0,#0FEH MOV TL0,A RETI ORG 001BH MOV TH1,#3CH MOV TL1,#0B0H INC R7 ;定時(shí)0.1秒 RETI,7.3 定時(shí)計(jì)數(shù)器應(yīng)用實(shí)例,例77,ORG 0050H MAIN:MOV TMOD, #11H ;初始化部分 MOV DPTR,#TAB MOV TH1,#3CH MOV TL1,#OB0H MOV IE,#8AH MOV TCON,#50H

溫馨提示

  • 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. 人人文庫(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論