嵌入式技術(shù)基礎(chǔ)6概要_第1頁
嵌入式技術(shù)基礎(chǔ)6概要_第2頁
嵌入式技術(shù)基礎(chǔ)6概要_第3頁
嵌入式技術(shù)基礎(chǔ)6概要_第4頁
嵌入式技術(shù)基礎(chǔ)6概要_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第第6章章 MCS-51的定時(shí)器的定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器l6.1 定時(shí)器計(jì)數(shù)器的結(jié)構(gòu)定時(shí)器計(jì)數(shù)器的結(jié)構(gòu)l6.1.1 工作方式寄存器工作方式寄存器TMODl6.1.2 定時(shí)器計(jì)數(shù)器控制寄存器定時(shí)器計(jì)數(shù)器控制寄存器TCONl6.2 定時(shí)器計(jì)數(shù)器的定時(shí)器計(jì)數(shù)器的4種工作方式種工作方式l6.2.1 方式方式0l6.2.2 方式方式1l6.2.3 方式方式2l6.2.4 方式方式3l6.3 定時(shí)器計(jì)數(shù)器對(duì)輸入信號(hào)的要求定時(shí)器計(jì)數(shù)器對(duì)輸入信號(hào)的要求l6.4 定時(shí)器計(jì)數(shù)器的編程和應(yīng)用定時(shí)器計(jì)數(shù)器的編程和應(yīng)用第第6章章 MCS-51的定時(shí)器的定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器兩個(gè)可編程的定時(shí)器兩個(gè)可編程的定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器

2、T1、T0。兩種工作模式兩種工作模式: (1) 計(jì)數(shù)器工作模式計(jì)數(shù)器工作模式(2) 定時(shí)器工作模式定時(shí)器工作模式4種工作方式種工作方式 (方式方式0-方式方式3) 。6.1 定時(shí)器定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)計(jì)數(shù)器的結(jié)構(gòu)TMOD: 選擇定時(shí)器選擇定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0、T1的工作模式和工作方式。的工作模式和工作方式。 TCON: 控制控制T0、T1的啟動(dòng)和停止計(jì)數(shù),同時(shí)包含了的啟動(dòng)和停止計(jì)數(shù),同時(shí)包含了T0、T1的狀態(tài)。的狀態(tài)。 單片機(jī)復(fù)位時(shí),兩個(gè)寄存器的所有位都被清單片機(jī)復(fù)位時(shí),兩個(gè)寄存器的所有位都被清0。6.1.1 工作方式控制寄存器工作方式控制寄存器TMOD8位分為兩組,高位分為兩組,高4位控

3、制位控制T1,低,低4位控制位控制T0。(1) GATE 門控位門控位 0: 以以TRX (X=0,1) 來啟動(dòng)定時(shí)器來啟動(dòng)定時(shí)器/計(jì)數(shù)器運(yùn)行。計(jì)數(shù)器運(yùn)行。1: 用外中斷引腳用外中斷引腳 (INT0*或或INT1*) 上的高電平和上的高電平和TRX來啟來啟動(dòng)定時(shí)器動(dòng)定時(shí)器/計(jì)數(shù)器運(yùn)行。計(jì)數(shù)器運(yùn)行。(2) M1、M0 工作方式選擇位工作方式選擇位 M1 M0 工工 作作 方方 式式 0 0 方式方式0,13位定時(shí)器位定時(shí)器/計(jì)數(shù)器。計(jì)數(shù)器。 0 1方式方式1,16位定時(shí)器位定時(shí)器/計(jì)數(shù)器。計(jì)數(shù)器。 1 0 方式方式2,8位常數(shù)自動(dòng)重新裝載位常數(shù)自動(dòng)重新裝載 1 1 方式方式3,僅適用于,僅適用于

4、T0,T0分成兩個(gè)分成兩個(gè)8位計(jì)數(shù)器,位計(jì)數(shù)器,T1停止計(jì)數(shù)。停止計(jì)數(shù)。(3) C/T* 計(jì)數(shù)器模式和定時(shí)器模式選擇位計(jì)數(shù)器模式和定時(shí)器模式選擇位0: 定時(shí)器模式。定時(shí)器模式。 1: 計(jì)數(shù)器模式。計(jì)數(shù)器模式。低低4位與其他中斷有關(guān),高位與其他中斷有關(guān),高4位的功能如下位的功能如下: (1) TF1、TF0 計(jì)數(shù)溢出標(biāo)志位計(jì)數(shù)溢出標(biāo)志位 (2) TR1、TR0 計(jì)數(shù)運(yùn)行控制位計(jì)數(shù)運(yùn)行控制位 1: 啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器/計(jì)數(shù)器工作計(jì)數(shù)器工作 0: 停止定時(shí)器停止定時(shí)器/計(jì)數(shù)器工作計(jì)數(shù)器工作 6.1.2 定時(shí)器定時(shí)器/計(jì)數(shù)器控制寄存器計(jì)數(shù)器控制寄存器TCON6.2.1 方式方式0 M1、M0為為00

5、 ,為,為13位位計(jì)數(shù)器,以計(jì)數(shù)器,以T1為例,其框圖如下為例,其框圖如下:6.2 定時(shí)器定時(shí)器/計(jì)數(shù)器的計(jì)數(shù)器的4種工作方式種工作方式6.2.2 方式方式1 M1、M0=01,為,為16位位的計(jì)數(shù)器,除位數(shù)外,其他與方式的計(jì)數(shù)器,除位數(shù)外,其他與方式0相相同。同。6.2 定時(shí)器定時(shí)器/計(jì)數(shù)器的計(jì)數(shù)器的4種工作方式種工作方式6.2.3 方式方式2 M1、M0=10 ,為自動(dòng)恢復(fù)初值的,為自動(dòng)恢復(fù)初值的8位位計(jì)數(shù)器,等效框圖如下計(jì)數(shù)器,等效框圖如下: 6.2 定時(shí)器定時(shí)器/計(jì)數(shù)器的計(jì)數(shù)器的4種工作方式種工作方式TLX作為常數(shù)緩沖器作為常數(shù)緩沖器,當(dāng),當(dāng)TLX計(jì)數(shù)溢出時(shí),在置計(jì)數(shù)溢出時(shí),在置“1”

6、溢出標(biāo)志溢出標(biāo)志TFX的同的同時(shí),還時(shí),還自動(dòng)的將自動(dòng)的將THX中的初值送至中的初值送至TLX,使,使TLX從初值開始重新計(jì)數(shù)。從初值開始重新計(jì)數(shù)。定時(shí)器定時(shí)器/計(jì)數(shù)器的方式計(jì)數(shù)器的方式2工作過程如圖工作過程如圖6-5 (X=0, 1) 。省去用戶軟件中重裝初值的程序,精確的定時(shí)。省去用戶軟件中重裝初值的程序,精確的定時(shí)。6.2 定時(shí)器定時(shí)器/計(jì)數(shù)器的計(jì)數(shù)器的4種工作方式種工作方式6.2.4 方式方式3 增加一個(gè)增加一個(gè)附加附加的的8位定時(shí)器位定時(shí)器/計(jì)數(shù)器,從而計(jì)數(shù)器,從而具有具有3個(gè)定時(shí)器個(gè)定時(shí)器/計(jì)計(jì)數(shù)器數(shù)器。只適用于定時(shí)器只適用于定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0。T1不能工作在方式不能工作在方

7、式3。T1處于方式處于方式3時(shí)相當(dāng)于時(shí)相當(dāng)于TR1=0,停止計(jì)數(shù),停止計(jì)數(shù) (此時(shí)此時(shí)T1可用來作可用來作串行口波特率產(chǎn)生器串行口波特率產(chǎn)生器) 。1. 工作方式工作方式3下的下的T0T0分為兩個(gè)獨(dú)立的分為兩個(gè)獨(dú)立的8位計(jì)數(shù)器位計(jì)數(shù)器: TL0和和TH0 。TL0使用使用T0的的狀態(tài)控制位狀態(tài)控制位C/T*、GATE、TR0、,而、,而TH0被固定為一個(gè)被固定為一個(gè)8位定時(shí)器位定時(shí)器(不能作外部計(jì)數(shù)模式不能作外部計(jì)數(shù)模式) ,并使用定時(shí)器,并使用定時(shí)器T1的狀態(tài)的狀態(tài)控制位控制位TR1,同時(shí)占用定時(shí)器,同時(shí)占用定時(shí)器T1的中斷請(qǐng)求源的中斷請(qǐng)求源TF1。6.2 定時(shí)器定時(shí)器/計(jì)數(shù)器的計(jì)數(shù)器的4種

8、工作方式種工作方式6.2.4 方式方式3各引腳與各引腳與T0的邏輯關(guān)系如圖所示的邏輯關(guān)系如圖所示: 2. T0工作在方式工作在方式3下下T1的各種工作方式的各種工作方式 T0處于方式處于方式3時(shí),時(shí), T1可定為方式可定為方式0、方式、方式1和方式和方式2,用來作,用來作為串行口的波特率發(fā)生器,或不需要中斷的場(chǎng)合。為串行口的波特率發(fā)生器,或不需要中斷的場(chǎng)合。(1) T1工作在方式工作在方式06.2.4 方式方式3(2) T1工作在方式工作在方式1 (3) T1工作在方式工作在方式26.2.4 方式方式36.3 定時(shí)器定時(shí)器/計(jì)數(shù)器對(duì)輸入信號(hào)的要求計(jì)數(shù)器對(duì)輸入信號(hào)的要求外部計(jì)數(shù)脈沖的最高頻率為系

9、統(tǒng)振蕩器頻率的外部計(jì)數(shù)脈沖的最高頻率為系統(tǒng)振蕩器頻率的1/24,例如例如選用選用12MHz頻率的晶體,則可輸入頻率的晶體,則可輸入500KHz的外部脈沖。的外部脈沖。輸入信號(hào)的高、低電平至少要分別保持一個(gè)機(jī)器周期。輸入信號(hào)的高、低電平至少要分別保持一個(gè)機(jī)器周期。如圖如圖6-10所示,圖中所示,圖中Tcy為機(jī)器周期。為機(jī)器周期。6.4 定時(shí)器定時(shí)器/計(jì)數(shù)器的編程和應(yīng)用計(jì)數(shù)器的編程和應(yīng)用 4種工作方式中,方式種工作方式中,方式0與方式與方式1基本相同,由于方式基本相同,由于方式0是為是為兼容兼容MCS-48而設(shè),在實(shí)際應(yīng)用中,一般不用方式而設(shè),在實(shí)際應(yīng)用中,一般不用方式0,而采,而采用方式用方式1

10、。6.4.1 方式方式1應(yīng)用應(yīng)用 例例6-1 假設(shè)系統(tǒng)時(shí)鐘頻率采用假設(shè)系統(tǒng)時(shí)鐘頻率采用6MHz,要在,要在P1.0上輸出一個(gè)上輸出一個(gè)周期為周期為2ms的方波,如圖所示。的方波,如圖所示。6.4.1 方式方式1應(yīng)用應(yīng)用方波的周期用方波的周期用T0來確定,讓來確定,讓T0每隔每隔1ms計(jì)數(shù)溢出計(jì)數(shù)溢出1次,即次,即T0每隔每隔1ms產(chǎn)生一次中斷產(chǎn)生一次中斷,CPU響應(yīng)中斷后,在中斷服務(wù)程序響應(yīng)中斷后,在中斷服務(wù)程序中對(duì)中對(duì)P1.0取反。取反。(1) 計(jì)算初值計(jì)算初值X 設(shè)初值為設(shè)初值為X,則有,則有: (216-X) 210-6=110-3可求得:可求得:X=65036X化為化為16進(jìn)制,即進(jìn)制

11、,即X=FE0CH=1111111000001100B。所以,所以,T0的初值為的初值為: TH0=0FEH TL0=0CH(2) 初始化程序設(shè)計(jì)初始化程序設(shè)計(jì) 主要是對(duì)寄存器主要是對(duì)寄存器IP、IE、TCON、TMOD的相應(yīng)位進(jìn)行正的相應(yīng)位進(jìn)行正確設(shè)置,將計(jì)數(shù)初值送入定時(shí)器中。確設(shè)置,將計(jì)數(shù)初值送入定時(shí)器中。(3) 程序設(shè)計(jì)程序設(shè)計(jì) 中斷服務(wù)程序除了完成要求的產(chǎn)生方波這一工作之外,還中斷服務(wù)程序除了完成要求的產(chǎn)生方波這一工作之外,還要注意將計(jì)數(shù)初值重新裝入定時(shí)器中,為下一次產(chǎn)生中斷要注意將計(jì)數(shù)初值重新裝入定時(shí)器中,為下一次產(chǎn)生中斷作準(zhǔn)備。作準(zhǔn)備。6.4.1 方式方式1應(yīng)用應(yīng)用參考程序參考程序

12、: ORG 0000HAJMP MAIN ;轉(zhuǎn)主程序;轉(zhuǎn)主程序ORG 000BH ;T0的中斷入口的中斷入口AJMP IT0P;轉(zhuǎn);轉(zhuǎn)T0中斷處理程序中斷處理程序IT0PORG 0100HMAIN: MOV SP, #60H ;設(shè)堆棧指針;設(shè)堆棧指針 MOV TMOD, #01H;設(shè)置;設(shè)置T0為方式為方式1 ACALL PT0M0;調(diào)用子程序;調(diào)用子程序PT0M0HERE: AJMP HERE ;自身跳轉(zhuǎn);自身跳轉(zhuǎn)PT0M0:MOV TL0, #0CH;T0中斷服務(wù)初始化程序,中斷服務(wù)初始化程序,T0重新置初值重新置初值MOV TH0, #0FEH SETB TR0 ;啟動(dòng);啟動(dòng)T0SETB

13、 ET0 ;允許;允許T0中斷中斷SETB EA ;CPU開中斷開中斷RETIT0P:MOV TL0, #0CH ;T0中斷服務(wù)子程序,中斷服務(wù)子程序,T0置初值置初值 MOV TH0, #0FEHCPL P1.0 ;P1.0的狀態(tài)取反的狀態(tài)取反RETI查詢方式的參考程序查詢方式的參考程序: MOV TMOD, #01H ;設(shè)置;設(shè)置T0為方式為方式1LOOP: MOV TL0, # 0CH;T0置初值置初值 MOV TH0, #0FEH SETB TR0 ;接通;接通T0LOOP1: JNB TF0, LOOP1 ;查詢;查詢TF0標(biāo)志標(biāo)志 CLR TR0 ;T0溢出,關(guān)閉溢出,關(guān)閉T0 C

14、PL P1.0 ;P1.0的狀態(tài)求反的狀態(tài)求反 CLR TF0 SJMP LOOP 6.4.1 方式方式1應(yīng)用應(yīng)用例例6-2 假設(shè)假設(shè)系統(tǒng)時(shí)鐘為系統(tǒng)時(shí)鐘為6MHz,編寫定時(shí)器編寫定時(shí)器T0產(chǎn)生產(chǎn)生1秒定時(shí)的程序。秒定時(shí)的程序。 (1) T0工作方式的確定工作方式的確定因定時(shí)時(shí)間較長(zhǎng),采用哪一種工作方式?因定時(shí)時(shí)間較長(zhǎng),采用哪一種工作方式?由各種工作方式的特性,可計(jì)算出由各種工作方式的特性,可計(jì)算出: 方式方式0最長(zhǎng)可定時(shí)最長(zhǎng)可定時(shí) 16.384ms; 方式方式1最長(zhǎng)可定時(shí)最長(zhǎng)可定時(shí) 131.072ms;方式方式2最長(zhǎng)可定時(shí)最長(zhǎng)可定時(shí) 512 s。選方式選方式1,每隔,每隔100ms中斷一次,中

15、斷中斷一次,中斷10次為次為1s。 (2) 計(jì)算計(jì)數(shù)初值計(jì)算計(jì)數(shù)初值因?yàn)橐驗(yàn)? (216-X) 210-6 = 10-1所以所以: X=15536=3CB0H因此因此: TH0=3CH,TL0=B0H (3) 10次計(jì)數(shù)的實(shí)現(xiàn)次計(jì)數(shù)的實(shí)現(xiàn)對(duì)于中斷對(duì)于中斷10次計(jì)數(shù),可以用循環(huán)程序的方法實(shí)現(xiàn)。次計(jì)數(shù),可以用循環(huán)程序的方法實(shí)現(xiàn)。(4) 程序設(shè)計(jì)(參考程序)程序設(shè)計(jì)(參考程序) ORG 0000HRESET: LJMP MAIN ;上電,轉(zhuǎn)主程序入口;上電,轉(zhuǎn)主程序入口MAINORG 000BH ;T0的中斷入口的中斷入口LJMP IT0P;轉(zhuǎn);轉(zhuǎn)T0中斷處理程序中斷處理程序IT0PORG 1000

16、HMAIN: MOV SP,#60H;設(shè)堆棧指針;設(shè)堆棧指針MOV B,#0AH ;設(shè)循環(huán)次數(shù);設(shè)循環(huán)次數(shù)10次次MOV TMOD,#01H ;設(shè);設(shè)T0工作在方式工作在方式1MOV TL0,#0B0H ;給;給T0設(shè)初值設(shè)初值MOV TH0,#3CHSETB TR0 ;啟動(dòng);啟動(dòng)T0SETB ET0 ;允許;允許T0中斷中斷SETB EA ;CPU開放中斷開放中斷HERE: SJMP HERE ;等待中斷;等待中斷ITOP: MOV TL0,#0B0H ;T0中斷子程序,重裝初值中斷子程序,重裝初值MOV TH0,#3CH DJNZ B,LOOPCLR TR0 ;1s定時(shí)時(shí)間到,停止定時(shí)時(shí)間

17、到,停止T0工作工作LOOP: RETI 省去程序中重裝初值的指令,可產(chǎn)生相當(dāng)精確的定時(shí)時(shí)間。省去程序中重裝初值的指令,可產(chǎn)生相當(dāng)精確的定時(shí)時(shí)間。 例例6-3 當(dāng)當(dāng)T0(P3.4) 引腳上發(fā)生負(fù)跳變時(shí),從引腳上發(fā)生負(fù)跳變時(shí),從P1.0引腳上輸出一引腳上輸出一個(gè)周期為個(gè)周期為1ms的方波的方波,如圖所示。如圖所示。(系統(tǒng)時(shí)鐘為系統(tǒng)時(shí)鐘為6MHz)6.4.2 方式方式2的應(yīng)用的應(yīng)用(1) 工作方式選擇工作方式選擇T0為方式為方式1計(jì)數(shù),初值計(jì)數(shù),初值 0FFFFH,即外部計(jì)數(shù)輸入端,即外部計(jì)數(shù)輸入端T0(P3.4) 發(fā)生一次負(fù)跳變時(shí),發(fā)生一次負(fù)跳變時(shí),T0加加1且溢出,溢出標(biāo)志且溢出,溢出標(biāo)志TF

18、0置置“1”,發(fā)中斷請(qǐng)求。在進(jìn)入發(fā)中斷請(qǐng)求。在進(jìn)入T0中斷程序后,把中斷程序后,把F0標(biāo)志置標(biāo)志置“1”,說明,說明T0引腳上已接收了負(fù)跳變信號(hào)。引腳上已接收了負(fù)跳變信號(hào)。T1定義為方式定義為方式2定時(shí)。在定時(shí)。在T0引腳產(chǎn)生一次負(fù)跳變后,啟動(dòng)引腳產(chǎn)生一次負(fù)跳變后,啟動(dòng)T1每每500 s產(chǎn)生一次中斷,在中斷服務(wù)程序中對(duì)產(chǎn)生一次中斷,在中斷服務(wù)程序中對(duì)P1.0求反,使求反,使P1.0產(chǎn)生周期產(chǎn)生周期1ms的方波。的方波。(2) 計(jì)算計(jì)算T1初值初值設(shè)設(shè)T1的初值為的初值為X: 則則 (28-X) 210-6=510-4 X=28-250=6=06H6.4.2 方式方式2的應(yīng)用的應(yīng)用(3) 程序設(shè)

19、計(jì)程序設(shè)計(jì)ORG 0000HRESET: LJMP MAIN;復(fù)位入口轉(zhuǎn)主程序;復(fù)位入口轉(zhuǎn)主程序ORG 000BHLJMP IT0P ;轉(zhuǎn);轉(zhuǎn)T0中斷服務(wù)程序中斷服務(wù)程序 ORG 001BHLJMP IT1P;轉(zhuǎn);轉(zhuǎn)T1中斷服務(wù)程序中斷服務(wù)程序ORG 0100HMAIN: MOV SP, #60HACALL PT0M2;調(diào)用對(duì);調(diào)用對(duì)T0,T1初始化子程序初始化子程序LOOP: MOV C, F0;T0產(chǎn)生過中斷了嗎,產(chǎn)生過中斷,則產(chǎn)生過中斷了嗎,產(chǎn)生過中斷,則 F0=1JNC LOOP;T0沒有產(chǎn)生過中斷,則跳到?jīng)]有產(chǎn)生過中斷,則跳到LOOP, 等待等待T0中斷中斷SETB TR1;啟動(dòng);啟

20、動(dòng)T1SETB ET1;允許;允許T1中斷中斷HERE: AJMP HEREPT0M2: MOV TMOD, #26H ;初始化,;初始化,T1為方式為方式2定時(shí),定時(shí),T0為方為方 式式1計(jì)數(shù)計(jì)數(shù)MOV TL0, #0FFH ;T0置初值置初值 MOV TH0, #0FFHSETB TR0 ;啟動(dòng);啟動(dòng)T0SETB ET0 ;允許;允許T0中斷中斷MOV TL1, #06H ;T1置初值置初值MOV TH1, #06HCLR F0 ;把;把T0已發(fā)生中斷標(biāo)志已發(fā)生中斷標(biāo)志F0清清0SETB EARETIT0P: CLR TR0 ;T0中斷服務(wù)程序,停止中斷服務(wù)程序,停止T0計(jì)數(shù)計(jì)數(shù)SETB

21、F0 ;建立產(chǎn)生中斷標(biāo)志;建立產(chǎn)生中斷標(biāo)志RETIIT1P: CPL P1.0 ;T1中斷服務(wù),中斷服務(wù),P1.0位取反位取反RETI例例6-4 利用利用T1的方式的方式2對(duì)外部信號(hào)計(jì)數(shù),對(duì)外部信號(hào)計(jì)數(shù),要求每計(jì)滿要求每計(jì)滿100個(gè)數(shù),個(gè)數(shù),將將P1.0取反取反。 本例是方式本例是方式2計(jì)數(shù)模式的應(yīng)用。計(jì)數(shù)模式的應(yīng)用。(1) 選擇工作方式選擇工作方式外部信號(hào)由外部信號(hào)由T1(P3.5) 腳輸入腳輸入,每發(fā)生一次負(fù)跳變計(jì)數(shù)器加每發(fā)生一次負(fù)跳變計(jì)數(shù)器加1,每輸入每輸入100個(gè)脈沖,計(jì)數(shù)器產(chǎn)生溢出中斷,在中斷服務(wù)程序個(gè)脈沖,計(jì)數(shù)器產(chǎn)生溢出中斷,在中斷服務(wù)程序中將中將P1.0取反一次。取反一次。T1

22、方式方式2的控制字為的控制字為TMOD=60H。不使用。不使用T0時(shí),時(shí),TMOD的的低低4位可任取,但不能使位可任取,但不能使T0進(jìn)入方式進(jìn)入方式3,這里全取,這里全取0。(2) 計(jì)算計(jì)算T1的初值的初值X=28-100=156=9CH 因此,因此,TL1的初值為的初值為9CH,重裝初值寄存器,重裝初值寄存器TH1=9CH。 6.4.2 方式方式2的應(yīng)用的應(yīng)用(3) 程序設(shè)計(jì)程序設(shè)計(jì)ORG 0000HLJMP MAINORG 001BH;T1中斷服務(wù)程序入口中斷服務(wù)程序入口CPL P1.0;P1.0位取反位取反RETIORG 0100HMAIN:MOV TMOD, #60H ;設(shè);設(shè)T1為方

23、式為方式2計(jì)數(shù)計(jì)數(shù)MOV TL0, #9CH ;T0置初值置初值MOV TH0, #9CH SETB TR1 ;啟動(dòng);啟動(dòng)T1HERE:AJMP HERE 6.4.2 方式方式2的應(yīng)用的應(yīng)用T0 方式方式3時(shí),時(shí),TL0和和TH0被分成兩個(gè)獨(dú)立的被分成兩個(gè)獨(dú)立的8位定時(shí)器位定時(shí)器/計(jì)數(shù)計(jì)數(shù)器。其中,器。其中,TL0: 8位定時(shí)器位定時(shí)器/計(jì)數(shù)器;計(jì)數(shù)器;TH0: 8位定時(shí)器位定時(shí)器。當(dāng)當(dāng)T1作串行口波特率發(fā)生器時(shí),作串行口波特率發(fā)生器時(shí),T0才設(shè)置為方式才設(shè)置為方式3。6.4.3 方式方式3的應(yīng)用的應(yīng)用例例6-5 假設(shè)某假設(shè)某MCS-51應(yīng)用系統(tǒng)的兩個(gè)外中斷源已被占用,設(shè)置應(yīng)用系統(tǒng)的兩個(gè)外中斷

24、源已被占用,設(shè)置T1工作在方式工作在方式2,作波特率發(fā)生器用?,F(xiàn)要求增加一個(gè)外部,作波特率發(fā)生器用?,F(xiàn)要求增加一個(gè)外部中斷源,并控制中斷源,并控制P1.0引腳輸出一個(gè)引腳輸出一個(gè)5kHz的方波。設(shè)系統(tǒng)時(shí)鐘的方波。設(shè)系統(tǒng)時(shí)鐘為為6MHz。(1) 選擇工作方式選擇工作方式TL0為方式為方式3計(jì)數(shù)計(jì)數(shù),把,把T0引腳引腳(P3.4) 作附加的外中斷輸入端,作附加的外中斷輸入端,TL0初值設(shè)為初值設(shè)為0FFH,當(dāng)檢測(cè)到,當(dāng)檢測(cè)到T0引腳電平出現(xiàn)負(fù)跳變時(shí),引腳電平出現(xiàn)負(fù)跳變時(shí),TL0溢出,申請(qǐng)中斷,這相當(dāng)于跳沿觸發(fā)的外部中斷源。溢出,申請(qǐng)中斷,這相當(dāng)于跳沿觸發(fā)的外部中斷源。TH0為為8位方式位方式3定時(shí)

25、定時(shí),控制,控制P1.0輸出輸出5kHz的方波信號(hào)。如圖的方波信號(hào)。如圖所示。所示。6.4.3 方式方式3的應(yīng)用的應(yīng)用(2) 初值計(jì)算初值計(jì)算TL0的初值設(shè)為的初值設(shè)為0FFH。5kHz的方波的周期為的方波的周期為200 s,TH0的定時(shí)時(shí)間為的定時(shí)時(shí)間為100 s。TH0初值初值X計(jì)算如下計(jì)算如下: (28-X) 210-6=110-4X=28-100=156=9CH(3) 程序設(shè)計(jì)程序設(shè)計(jì)ORG 0000HLJMP MAINORG 000BH ;T0中斷入口中斷入口LJMP TL0INT;跳;跳T0中斷服務(wù)程序中斷服務(wù)程序ORG 001BH ;在;在T1方式方式3時(shí),時(shí),TH0占用占用T1

26、的中斷的中斷LJMP TH0INT;跳;跳TH0中斷服務(wù)程序中斷服務(wù)程序6.4.3 方式方式3的應(yīng)用的應(yīng)用ORG 0100HMAIN: MOV TMOD, #27H ;T0方式方式3計(jì)數(shù),計(jì)數(shù),T1方式方式2定時(shí)定時(shí)MOV TL0, #0FFH ;置;置TL0初值初值MOV TH0, #9CH;置;置TH0初值初值MOV TL1, #dataL ;data為波特率常數(shù)為波特率常數(shù)MOV TH1, #dataHMOV TCON, #55H;啟動(dòng);啟動(dòng)T0、T1,設(shè)置外部中斷為跳沿觸發(fā),設(shè)置外部中斷為跳沿觸發(fā)MOV IE, #9FH;開中斷;開中斷TL0INT: MOV TL0, #0FFH ;T

27、L0中斷服務(wù)程序,中斷服務(wù)程序,TL0重新裝入初值重新裝入初值 中斷處理中斷處理 TH0INT: MOV TH0, #9CH;TH0中斷服務(wù)程序,中斷服務(wù)程序,TH0重新裝入初值重新裝入初值CPL P1.0 ;P1.0位取反輸出位取反輸出RETI 6.4.3 方式方式3的應(yīng)用的應(yīng)用GATE1可使定時(shí)器可使定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T1的啟動(dòng)計(jì)數(shù)受的啟動(dòng)計(jì)數(shù)受INT1*的控制,的控制,可測(cè)量引腳可測(cè)量引腳INT1*(P3.3) 上正脈沖的寬度上正脈沖的寬度(機(jī)器周期數(shù)機(jī)器周期數(shù)) 。6.4.4 門控制位門控制位GATE的應(yīng)用的應(yīng)用測(cè)量脈沖寬度測(cè)量脈沖寬度參考程序參考程序: ORG 0000HRESET

28、: AJMP MAIN ;復(fù)位入口轉(zhuǎn)主程序;復(fù)位入口轉(zhuǎn)主程序ORG 0100HMAIN: MOV SP, #60HMOV TMOD, #90H ;T1為方式為方式1定時(shí)控制字定時(shí)控制字MOV TL1, #00HMOV TH1, #00HLOOP: JB P3.3, LOOP;等待;等待INT1*低低SETB TR1;如;如INT1*為低,啟動(dòng)為低,啟動(dòng)T1LOOP1: JNB P3.3, LOOP1;等待;等待INT1*升高升高LOOP2: JB P3.3, LOOP2 ;等待;等待INT1*降低降低 CLR TR1;停止;停止T1計(jì)數(shù)計(jì)數(shù)MOV A, TL1;T1計(jì)數(shù)值送計(jì)數(shù)值送A將將A中的中的T1計(jì)數(shù)值送顯示緩沖區(qū)轉(zhuǎn)換成顯示的代碼計(jì)數(shù)值送顯示緩沖區(qū)轉(zhuǎn)換成顯示的代碼 LOOP3: LCALL DIR ;調(diào)用顯示子程序;調(diào)用顯示子程序DIR,顯示,顯示T1計(jì)數(shù)值計(jì)數(shù)值A(chǔ)JMP LOOP31. 實(shí)時(shí)時(shí)鐘實(shí)現(xiàn)的基本思想實(shí)時(shí)時(shí)鐘實(shí)現(xiàn)的基本思想 如何獲得如何獲得1秒的定時(shí),秒的定時(shí),可把定時(shí)時(shí)間定為可把定時(shí)

溫馨提示

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