第七章定時(shí)計(jì)數(shù)器與可編程計(jì)數(shù)器陣列本章學(xué)習(xí)目標(biāo)掌握定_第1頁(yè)
第七章定時(shí)計(jì)數(shù)器與可編程計(jì)數(shù)器陣列本章學(xué)習(xí)目標(biāo)掌握定_第2頁(yè)
第七章定時(shí)計(jì)數(shù)器與可編程計(jì)數(shù)器陣列本章學(xué)習(xí)目標(biāo)掌握定_第3頁(yè)
第七章定時(shí)計(jì)數(shù)器與可編程計(jì)數(shù)器陣列本章學(xué)習(xí)目標(biāo)掌握定_第4頁(yè)
已閱讀5頁(yè),還剩146頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1/151 第七章第七章 定時(shí)計(jì)數(shù)器定時(shí)計(jì)數(shù)器 與可編程計(jì)數(shù)器陣列與可編程計(jì)數(shù)器陣列本章學(xué)習(xí)目標(biāo)本章學(xué)習(xí)目標(biāo)掌握定時(shí)計(jì)數(shù)器的應(yīng)用掌握定時(shí)計(jì)數(shù)器的應(yīng)用掌握可編程時(shí)鐘輸出模塊的應(yīng)用掌握可編程時(shí)鐘輸出模塊的應(yīng)用掌握可編程計(jì)數(shù)器陣列模塊的應(yīng)用掌握可編程計(jì)數(shù)器陣列模塊的應(yīng)用2/151 STC15F2K60S2單片機(jī)內(nèi)部集成了以下與定時(shí)單片機(jī)內(nèi)部集成了以下與定時(shí)功能有關(guān)的模塊:功能有關(guān)的模塊: 1)三個(gè)三個(gè)16位的定時(shí)位的定時(shí)/計(jì)數(shù)器計(jì)數(shù)器,不僅可以方便地用,不僅可以方便地用于定時(shí)控制,而且還可以用作分頻器和事件記錄;于定時(shí)控制,而且還可以用作分頻器和事件記錄; 2)可編程時(shí)鐘輸出功能可編程時(shí)鐘輸出功能,

2、可給外部器件提供時(shí)鐘;,可給外部器件提供時(shí)鐘; 3)三路可編程計(jì)數(shù)器陣列三路可編程計(jì)數(shù)器陣列(Programmable Counter Array,PCA)。可用于軟件定時(shí)器、外)??捎糜谲浖〞r(shí)器、外部脈沖的捕捉、高速輸出以及脈寬調(diào)制(部脈沖的捕捉、高速輸出以及脈寬調(diào)制(Pulse Width Modulation ,PWM)輸出。)輸出。3/151一、定時(shí)一、定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)及工作原理計(jì)數(shù)器的結(jié)構(gòu)及工作原理 定時(shí)定時(shí)/計(jì)數(shù)器的核心是一個(gè)計(jì)數(shù)器的核心是一個(gè)加加1計(jì)數(shù)器計(jì)數(shù)器,加,加1計(jì)計(jì)數(shù)器的脈沖有兩個(gè)來源,一個(gè)是外部脈沖源,另數(shù)器的脈沖有兩個(gè)來源,一個(gè)是外部脈沖源,另一個(gè)是系統(tǒng)的時(shí)鐘振蕩

3、器。一個(gè)是系統(tǒng)的時(shí)鐘振蕩器。7.17.1定時(shí)定時(shí)/ /計(jì)數(shù)器及其應(yīng)用計(jì)數(shù)器及其應(yīng)用OSC12分頻或不分頻TX端C/T=0C/T=1控制信號(hào)加1計(jì)數(shù)器TFX中斷圖圖7-1 定時(shí)定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)框圖(計(jì)數(shù)器的結(jié)構(gòu)框圖(x=0、1)4/151當(dāng)脈沖源為時(shí)鐘振蕩器當(dāng)脈沖源為時(shí)鐘振蕩器(等間隔脈沖序列)時(shí),(等間隔脈沖序列)時(shí),在每個(gè)時(shí)鐘周期計(jì)數(shù)器加在每個(gè)時(shí)鐘周期計(jì)數(shù)器加1,由于計(jì)數(shù)脈沖為一時(shí),由于計(jì)數(shù)脈沖為一時(shí)間基準(zhǔn),所以脈沖數(shù)乘以脈沖間隔時(shí)間就是定時(shí)間基準(zhǔn),所以脈沖數(shù)乘以脈沖間隔時(shí)間就是定時(shí)時(shí)間,因此為時(shí)間,因此為定時(shí)功能定時(shí)功能。當(dāng)脈沖源為間隔不等的外部脈沖時(shí)當(dāng)脈沖源為間隔不等的外部脈沖時(shí),就是

4、外部事,就是外部事件的件的計(jì)數(shù)器計(jì)數(shù)器,計(jì)數(shù)器在其對(duì)應(yīng)的外輸入端上有一,計(jì)數(shù)器在其對(duì)應(yīng)的外輸入端上有一個(gè)個(gè)10的跳變時(shí)加的跳變時(shí)加1。外部輸入信號(hào)的速率是不受。外部輸入信號(hào)的速率是不受限制的,但必須保證給出的電平在變化前至少被限制的,但必須保證給出的電平在變化前至少被采樣一次。采樣一次。5/151圖中有兩個(gè)模擬的位開關(guān),圖中有兩個(gè)模擬的位開關(guān),C/T決定其工作方式:是定時(shí)決定其工作方式:是定時(shí)還是計(jì)數(shù)。后者受控制信號(hào)的控制,決定加還是計(jì)數(shù)。后者受控制信號(hào)的控制,決定加1計(jì)數(shù)器的開計(jì)數(shù)器的開啟與運(yùn)行。啟與運(yùn)行。起這兩個(gè)開關(guān)作用的是特殊功能寄存器起這兩個(gè)開關(guān)作用的是特殊功能寄存器TMOD和和TCO

5、N的的相應(yīng)位,用戶可對(duì)其進(jìn)行設(shè)置,從而選擇不同的工作方式相應(yīng)位,用戶可對(duì)其進(jìn)行設(shè)置,從而選擇不同的工作方式(計(jì)數(shù)或定時(shí))或是否啟動(dòng)計(jì)數(shù)器。另外,(計(jì)數(shù)或定時(shí))或是否啟動(dòng)計(jì)數(shù)器。另外,AUXR中的中的T0 x12位和位和T1x12位決定是否對(duì)振蕩時(shí)鐘進(jìn)行位決定是否對(duì)振蕩時(shí)鐘進(jìn)行12分頻。分頻。OSC12分頻或不分頻TX端C/T=0C/T=1控制信號(hào)加1計(jì)數(shù)器TFX中斷6/151工作原理工作原理計(jì)數(shù)器對(duì)這兩個(gè)脈沖源之一進(jìn)行輸入計(jì)數(shù),每計(jì)數(shù)器對(duì)這兩個(gè)脈沖源之一進(jìn)行輸入計(jì)數(shù),每輸入一個(gè)脈沖,計(jì)數(shù)值加輸入一個(gè)脈沖,計(jì)數(shù)值加1。當(dāng)計(jì)數(shù)到計(jì)數(shù)器。當(dāng)計(jì)數(shù)到計(jì)數(shù)器為全為全1時(shí),再輸入一個(gè)脈沖就使計(jì)數(shù)值回零,時(shí),

6、再輸入一個(gè)脈沖就使計(jì)數(shù)值回零,同時(shí)從最高位溢出一個(gè)脈沖使特殊功能寄存器同時(shí)從最高位溢出一個(gè)脈沖使特殊功能寄存器TCON的的TF0或或TF1置置1,作為計(jì)數(shù)器的溢出中,作為計(jì)數(shù)器的溢出中斷標(biāo)志。斷標(biāo)志。如果定時(shí)如果定時(shí)/計(jì)數(shù)器工作于定時(shí)狀態(tài),則表示定時(shí)計(jì)數(shù)器工作于定時(shí)狀態(tài),則表示定時(shí)時(shí)間到;若工作于計(jì)數(shù)狀態(tài),則表示計(jì)數(shù)回零。時(shí)間到;若工作于計(jì)數(shù)狀態(tài),則表示計(jì)數(shù)回零。7/151CPU與與TMOD、TCON、AUXR、T0、T1的關(guān)系圖的關(guān)系圖16位的加位的加1計(jì)數(shù)器由兩個(gè)計(jì)數(shù)器由兩個(gè)8位的特殊功能寄存器位的特殊功能寄存器THX(高(高8位)和位)和TLX(低(低8位)組成(位)組成(X=0,1,下

7、同)。,下同)。通過改變通過改變TMOD的相應(yīng)位,它們可被設(shè)置為的相應(yīng)位,它們可被設(shè)置為4種不同的工種不同的工作方式。作方式。 CPU內(nèi)部總線TH1TL1TH0TL0TMODTCON07070707P3.4P3.5AUXR8/151STC15F2K60S2除了定時(shí)除了定時(shí)/計(jì)數(shù)器計(jì)數(shù)器T0和和T1外,外,還有一個(gè)還有一個(gè)16位定時(shí)器位定時(shí)器T2(簡(jiǎn)稱(簡(jiǎn)稱T2)。)。T2的工作模式固定為的工作模式固定為16位自動(dòng)重裝載模式。位自動(dòng)重裝載模式。T2可以當(dāng)定時(shí)器使用,也可以用作串口的波可以當(dāng)定時(shí)器使用,也可以用作串口的波特率發(fā)生器或可編程時(shí)鐘輸出源。特率發(fā)生器或可編程時(shí)鐘輸出源。圖圖7-3 定時(shí)器

8、定時(shí)器T2的原理框圖的原理框圖9/151二、定時(shí)二、定時(shí)/計(jì)數(shù)器的相關(guān)寄存器計(jì)數(shù)器的相關(guān)寄存器 TMOD、TCON和和AUXR用來確定定時(shí)用來確定定時(shí)/計(jì)數(shù)計(jì)數(shù)器的工作方式并控制其功能。其中,器的工作方式并控制其功能。其中,TMOD控控制定時(shí)制定時(shí)/計(jì)數(shù)器計(jì)數(shù)器0和和1的工作方式;的工作方式;TCON控制定控制定時(shí)器時(shí)器T0、T1的啟停及狀態(tài);的啟停及狀態(tài);AUXR設(shè)置定時(shí)設(shè)置定時(shí)器的速度和器的速度和T2的功能。的功能。 10/1511、TMOD:定時(shí)器工作方式控制寄存器:定時(shí)器工作方式控制寄存器TMOD(地址為(地址為89H,復(fù)位值為,復(fù)位值為00H)寄存器)寄存器的各位定義如下:的各位定義

9、如下:位號(hào)位號(hào)D7D6D5D4D3D2D1D0定時(shí)器名定時(shí)器名定時(shí)器定時(shí)器1定時(shí)器定時(shí)器0位名稱位名稱GATEC/M1M0GATEC/M1M0TT11/151 1)M1和和M0:方式選擇控制位:方式選擇控制位 M1 M0工作方式工作方式功能說明功能說明0 0016位自動(dòng)裝載的定時(shí)器位自動(dòng)裝載的定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器0 1116位定時(shí)器位定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器1 02可自動(dòng)裝入的可自動(dòng)裝入的8位計(jì)數(shù)器位計(jì)數(shù)器1 1留作備用留作備用位號(hào)位號(hào)D7D6D5D4D3D2D1D0定時(shí)器名定時(shí)器名定時(shí)器定時(shí)器1定時(shí)器定時(shí)器0位名稱位名稱GATEC/M1M0GATEC/M1M0TT表表7-1 定時(shí)定時(shí)/計(jì)數(shù)器的方

10、式選擇計(jì)數(shù)器的方式選擇12/1512)C/ :功能選擇位。:功能選擇位。 1:計(jì)數(shù)器功能(對(duì):計(jì)數(shù)器功能(對(duì)T0或或T1引腳的負(fù)跳變進(jìn)行計(jì)引腳的負(fù)跳變進(jìn)行計(jì)數(shù))。數(shù))。 0:定時(shí)器功能(對(duì)時(shí)鐘周期進(jìn)行計(jì)數(shù))。:定時(shí)器功能(對(duì)時(shí)鐘周期進(jìn)行計(jì)數(shù))。T位號(hào)位號(hào)D7D6D5D4D3D2D1D0定時(shí)器名定時(shí)器名定時(shí)器定時(shí)器1定時(shí)器定時(shí)器0位名稱位名稱GATEC/M1M0GATE C/M1M0TT13/1513)GATE:門控位。:門控位。GATE用于選通控制。用于選通控制。 1:INTX為高電平且為高電平且TRX置位時(shí),啟動(dòng)定時(shí)器工作。置位時(shí),啟動(dòng)定時(shí)器工作。 0:每當(dāng):每當(dāng)TRX置位時(shí),就啟動(dòng)定時(shí)器工

11、作。置位時(shí),就啟動(dòng)定時(shí)器工作。 注意注意:TMOD寄存器不能進(jìn)行位尋址,設(shè)置時(shí)只寄存器不能進(jìn)行位尋址,設(shè)置時(shí)只能對(duì)整個(gè)寄存器賦值。能對(duì)整個(gè)寄存器賦值。位號(hào)位號(hào)D7D6D5D4D3D2D1D0定時(shí)器名定時(shí)器名定時(shí)器定時(shí)器1定時(shí)器定時(shí)器0位名稱位名稱GATEC/M1M0GATE C/M1M0TT14/1512、TCON:定時(shí)器控制寄存器:定時(shí)器控制寄存器TCON(地址為(地址為88H,復(fù)位值為,復(fù)位值為00H)寄存器)寄存器的格式如下:的格式如下:位號(hào)位號(hào)D7D6D5D4D3D2D1D0位名稱位名稱TF1TR1TF0TR0IE1IT1IE0IT015/151 1)TF1:T1溢出標(biāo)志位。溢出標(biāo)志位

12、。 T1啟動(dòng)計(jì)數(shù)后,最高位產(chǎn)生溢出時(shí),啟動(dòng)計(jì)數(shù)后,最高位產(chǎn)生溢出時(shí),TF1由硬件由硬件置置1,向,向CPU請(qǐng)求中斷,當(dāng)請(qǐng)求中斷,當(dāng)CPU響應(yīng)中斷時(shí),由響應(yīng)中斷時(shí),由硬件清硬件清0。TF1也可以由程序查詢或清也可以由程序查詢或清0。 2)TF0:定時(shí)器:定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器0溢出標(biāo)志位。溢出標(biāo)志位。 含義和功能與含義和功能與TF1相似。相似。位號(hào)位號(hào)D7D6D5D4D3D2D1D0位名稱位名稱TF1TR1TF0TR0IE1IT1IE0IT016/151 3)TR1:T1的運(yùn)行控制位。的運(yùn)行控制位。可由軟件置位或清可由軟件置位或清0。 當(dāng)當(dāng)GATE(TMOD.7)=0,TR1=1啟動(dòng)啟動(dòng)T1開始計(jì)

13、數(shù),開始計(jì)數(shù),TR1=0時(shí)停止時(shí)停止T1計(jì)數(shù)。計(jì)數(shù)。 當(dāng)當(dāng)GATE(TMOD.7)=1,TR1=1且且INTX輸入高輸入高電平時(shí),才允許電平時(shí),才允許T1計(jì)數(shù)。計(jì)數(shù)。 4)TR0:定時(shí)器:定時(shí)器T0的運(yùn)行控制位。的運(yùn)行控制位。 含義和功能與含義和功能與TR1相似。相似。位號(hào)位號(hào)D7D6D5D4D3D2D1D0位名稱位名稱TF1TR1TF0TR0IE1IT1IE0IT017/151由于定時(shí)由于定時(shí)/計(jì)數(shù)器是可編程的,所以在任何一計(jì)數(shù)器是可編程的,所以在任何一個(gè)定時(shí)個(gè)定時(shí)/計(jì)數(shù)器開始工作之前,必須對(duì)其寫入計(jì)數(shù)器開始工作之前,必須對(duì)其寫入相應(yīng)的控制字。相應(yīng)的控制字。把方式控制字寫入把方式控制字寫入T

14、MOD選擇定時(shí)器的工作方選擇定時(shí)器的工作方式式把初值寫入把初值寫入THX、TLX控制計(jì)數(shù)長(zhǎng)度控制計(jì)數(shù)長(zhǎng)度將將TCON相應(yīng)位(相應(yīng)位(TRX)置)置1或清零實(shí)現(xiàn)啟動(dòng)或清零實(shí)現(xiàn)啟動(dòng)或停止計(jì)數(shù)?;蛲V褂?jì)數(shù)。在運(yùn)行過程中,還可讀出在運(yùn)行過程中,還可讀出THX、TLX和和TCON的內(nèi)容來隨時(shí)查詢的內(nèi)容來隨時(shí)查詢T0、T1的狀態(tài)。的狀態(tài)。18/1513、AUXR:輔助寄存器:輔助寄存器輔助寄存器輔助寄存器AUXR主要用來設(shè)置定時(shí)器主要用來設(shè)置定時(shí)器0的速的速度和定時(shí)器度和定時(shí)器2的工能以及串口的工能以及串口UART的波特率的波特率控制??刂?。STC15F2K60S2單片機(jī)是單片機(jī)是1T 的的8051單片機(jī)

15、,單片機(jī),為了兼容傳統(tǒng)為了兼容傳統(tǒng)8051單片機(jī),定時(shí)器單片機(jī),定時(shí)器0和定時(shí)器和定時(shí)器1復(fù)位后是傳統(tǒng)復(fù)位后是傳統(tǒng)8051的速度,即的速度,即12分頻,但此時(shí)分頻,但此時(shí)指令執(zhí)行速度仍然是指令執(zhí)行速度仍然是1T的速度。的速度。 通過設(shè)置特通過設(shè)置特殊功能寄存器殊功能寄存器AUXR中相關(guān)的位,定時(shí)器也可中相關(guān)的位,定時(shí)器也可不進(jìn)行不進(jìn)行12分頻,實(shí)現(xiàn)真正的分頻,實(shí)現(xiàn)真正的1T速度。速度。19/151輔助寄存器輔助寄存器AUXR(地址為(地址為8EH,復(fù)位值為,復(fù)位值為01H)各位定義如下:)各位定義如下:位號(hào)位號(hào)D7D6D5D4D3D2D1D0位名稱位名稱T0 x12T1x12UART_M0 x

16、6UART_M0 x6T2RT2_C/T2x12EXTRAMS1S2T1)T0 x12:定時(shí)器:定時(shí)器0速度控制位。速度控制位。 0:定時(shí)器:定時(shí)器0的速度與傳統(tǒng)的速度與傳統(tǒng)8051單片機(jī)定時(shí)器速度單片機(jī)定時(shí)器速度相同,即相同,即12分頻。分頻。 1:定時(shí)器:定時(shí)器0的速度是傳統(tǒng)的速度是傳統(tǒng)8051單片機(jī)定時(shí)器速度單片機(jī)定時(shí)器速度的的12倍,即不分頻。倍,即不分頻。20/1512)T1x12:(:(D6)定時(shí)器)定時(shí)器1速度控制位。速度控制位。 0:即:即12分頻。分頻。 1:不分頻。:不分頻。 如果如果UART串口用串口用T1作為波特率發(fā)生器,作為波特率發(fā)生器,T1x12位決定位決定UART

17、串口是串口是12T 還是還是1T。3)T2R:(:(D4)定時(shí)器)定時(shí)器2運(yùn)行控制位。運(yùn)行控制位。 0:不允許定時(shí)器:不允許定時(shí)器2運(yùn)行;運(yùn)行; 1:允許定時(shí)器:允許定時(shí)器2運(yùn)行。運(yùn)行。21/1514)T2_C/ :(:(D3)定時(shí)器)定時(shí)器2工作方式選擇。工作方式選擇。 0:定時(shí)器(計(jì)數(shù)脈沖從內(nèi)部系統(tǒng)時(shí)鐘輸入;:定時(shí)器(計(jì)數(shù)脈沖從內(nèi)部系統(tǒng)時(shí)鐘輸入; 1:計(jì)數(shù)器(計(jì)數(shù)脈沖從:計(jì)數(shù)器(計(jì)數(shù)脈沖從P3.1/T2引腳輸入)。引腳輸入)。T5)T2x12:(D2)定時(shí)器定時(shí)器2速度控制位。速度控制位。 0: 12分頻,分頻,T2每每12個(gè)時(shí)鐘計(jì)數(shù)一次;個(gè)時(shí)鐘計(jì)數(shù)一次; 1:不分頻,:不分頻,T2每每1

18、個(gè)時(shí)鐘計(jì)數(shù)一次。個(gè)時(shí)鐘計(jì)數(shù)一次。22/151UART_M0 x6用于控制用于控制UART串口的速度。串口的速度。S1S2為串行口為串行口1波特率發(fā)生器選擇位。波特率發(fā)生器選擇位。 EXTRAM用于設(shè)置是否允許使用內(nèi)部用于設(shè)置是否允許使用內(nèi)部1024字字節(jié)的擴(kuò)展節(jié)的擴(kuò)展RAM。位號(hào)位號(hào)D7D6D5D4D3D2D1D0位名稱位名稱T0 x12T1x12T1x12UART_M0 x6UART_M0 x6T2RT2_C/T2x12EXTRAMS1S2T23/1514、T2H/RL_TH2:定時(shí)器:定時(shí)器2重裝值寄存器高字節(jié)重裝值寄存器高字節(jié) (地址為(地址為0D6H,復(fù)位值為,復(fù)位值為00H)位號(hào)D7

19、D6D5D4D3D2D1D0位名稱5、T2L/RL_TL2:定時(shí)器:定時(shí)器2重裝值寄存器低字節(jié)重裝值寄存器低字節(jié) (地址為(地址為0D7H,復(fù)位值為,復(fù)位值為00H)位號(hào)D7D6D5D4D3D2D1D0位名稱24/151三、定時(shí)三、定時(shí)/計(jì)數(shù)器的工作方式計(jì)數(shù)器的工作方式 通過對(duì)寄存器通過對(duì)寄存器TMOD中中M1、M0的設(shè)置,定時(shí)的設(shè)置,定時(shí)/計(jì)數(shù)器有計(jì)數(shù)器有4種不同的工作方式:種不同的工作方式: 方式方式0: 16位自動(dòng)重裝方式位自動(dòng)重裝方式 方式方式1: 16位定時(shí)位定時(shí)/計(jì)數(shù)器方式計(jì)數(shù)器方式 方式方式2: 8位自動(dòng)重裝方式位自動(dòng)重裝方式 方式方式3: 留作備用留作備用25/1511、定時(shí)定

20、時(shí)/計(jì)數(shù)器計(jì)數(shù)器0和和1的工作方式的工作方式0(16位自動(dòng)重位自動(dòng)重裝方式)裝方式)圖7-4 定時(shí)器0和1的工作方式0的原理框圖 26/151STC15F2K60S2的定時(shí)器有兩種計(jì)數(shù)速率:一的定時(shí)器有兩種計(jì)數(shù)速率:一種是種是12T模式,每模式,每12個(gè)時(shí)鐘加個(gè)時(shí)鐘加1;另一種是;另一種是1T模式,每個(gè)時(shí)鐘加模式,每個(gè)時(shí)鐘加1。T0和和T1的速率分別由特殊功能寄存器的速率分別由特殊功能寄存器AUXR中的中的T0 x12和和T1x12決定。決定。 T0 x12=0,T0工作在工作在12T模式;模式; T0 x12=1,T0工作在工作在1T模式。模式。 T1x12=0,T1工作在工作在12T模式;

21、模式; T1x12=1,T1則工作在則工作在1T模式。模式。27/151如何實(shí)現(xiàn)如何實(shí)現(xiàn)16位重裝載定時(shí)器。位重裝載定時(shí)器。定時(shí)器定時(shí)器0和定時(shí)器和定時(shí)器1分別有分別有2個(gè)隱藏的寄存器個(gè)隱藏的寄存器RL_THx和和RL_TLx。RL_THx與與THx共有同一個(gè)地址,共有同一個(gè)地址,RL_TLx與與TLx共有同一個(gè)地址。共有同一個(gè)地址。當(dāng)當(dāng)TRx=0即定時(shí)器即定時(shí)器/計(jì)數(shù)器被禁止工作時(shí),對(duì)計(jì)數(shù)器被禁止工作時(shí),對(duì)TLx、THx寫入的內(nèi)容會(huì)同時(shí)寫入寫入的內(nèi)容會(huì)同時(shí)寫入RL_TLx、RL_THx。當(dāng)當(dāng)TRx=1即定時(shí)器即定時(shí)器/計(jì)數(shù)器工作時(shí),對(duì)計(jì)數(shù)器工作時(shí),對(duì)TLx 、THx寫入的內(nèi)容不會(huì)寫入寫入的內(nèi)

22、容不會(huì)寫入RL_TLx 、RL_THx。28/151當(dāng)定時(shí)器工作在模式當(dāng)定時(shí)器工作在模式0時(shí),時(shí),TLx,THx的溢出的溢出不僅置位不僅置位TFx,而且會(huì)自動(dòng)將,而且會(huì)自動(dòng)將RL_TLx,RL_THx的內(nèi)容重新裝入的內(nèi)容重新裝入TLx,THx。當(dāng)當(dāng)T0CLKO=1時(shí),時(shí),T1/P3.5引腳配置為定時(shí)器引腳配置為定時(shí)器0的時(shí)鐘輸出的時(shí)鐘輸出CLKOUT0。當(dāng)當(dāng)T1CLKO=1時(shí),時(shí),T0/P3.4引腳配置為定時(shí)器引腳配置為定時(shí)器1的時(shí)鐘輸出的時(shí)鐘輸出CLKOUT1。29/1512、定時(shí)定時(shí)/計(jì)數(shù)器計(jì)數(shù)器0和和1的工作方式的工作方式1(16位定時(shí)位定時(shí)/計(jì)計(jì)數(shù)器方式)數(shù)器方式)圖圖7-5 定時(shí)器定

23、時(shí)器0和和1的方式的方式1的原理框圖的原理框圖30/151此模式下,定時(shí)器配置為此模式下,定時(shí)器配置為16位的計(jì)數(shù)器,由位的計(jì)數(shù)器,由TLx的的8位和位和THx的的8位構(gòu)成。位構(gòu)成。TLx的的8位溢出向位溢出向THx進(jìn)位,進(jìn)位,THx計(jì)數(shù)溢出置位計(jì)數(shù)溢出置位TCON中的溢出中的溢出標(biāo)志位標(biāo)志位TFx。 與方式與方式0的區(qū)別是,的區(qū)別是,THx計(jì)數(shù)溢出時(shí),不會(huì)重計(jì)數(shù)溢出時(shí),不會(huì)重新裝載時(shí)間常數(shù)。此外,本模式也不用于時(shí)鐘新裝載時(shí)間常數(shù)。此外,本模式也不用于時(shí)鐘輸出功能。輸出功能。31/1513、定時(shí)定時(shí)/計(jì)數(shù)器計(jì)數(shù)器0和和1的工作方式的工作方式2(8位自動(dòng)重裝位自動(dòng)重裝方式)方式)圖圖7-6 定時(shí)

24、定時(shí)/計(jì)數(shù)器的工作方式計(jì)數(shù)器的工作方式2原理框圖原理框圖32/151方式方式2是能自動(dòng)重置初值的是能自動(dòng)重置初值的8位定時(shí)位定時(shí)/計(jì)數(shù)器,計(jì)數(shù)器,計(jì)數(shù)溢出后具有自動(dòng)恢復(fù)初值的功能。當(dāng)計(jì)數(shù)溢出后具有自動(dòng)恢復(fù)初值的功能。當(dāng)TL0/TL1計(jì)數(shù)溢出時(shí),不僅置位溢出標(biāo)志計(jì)數(shù)溢出時(shí),不僅置位溢出標(biāo)志TF0/TF1,還自動(dòng)將,還自動(dòng)將TH0/TH1的內(nèi)容送入的內(nèi)容送入TL0/TL1,使,使TL0/TL1從初值開始重新計(jì)數(shù)。從初值開始重新計(jì)數(shù)。用 戶 可 以 通 過 程 序 把 時(shí) 間 常 數(shù) 預(yù) 置 在用 戶 可 以 通 過 程 序 把 時(shí) 間 常 數(shù) 預(yù) 置 在TH0/TH1中,再裝入后,中,再裝入后,T

25、H0/TH1的內(nèi)容保的內(nèi)容保持不變。持不變。當(dāng)當(dāng)T0CLKO=1時(shí),時(shí),T1/P3.5引腳配置為定時(shí)器引腳配置為定時(shí)器0的時(shí)鐘輸出的時(shí)鐘輸出CLKOUT0。當(dāng)當(dāng)T1CLKO=1時(shí),時(shí),T0/P3.4引腳配置為定時(shí)器引腳配置為定時(shí)器1的時(shí)鐘輸出的時(shí)鐘輸出CLKOUT1。33/151在自動(dòng)裝載時(shí)間常數(shù)的工作方式中,用戶不需在自動(dòng)裝載時(shí)間常數(shù)的工作方式中,用戶不需要在中斷服務(wù)程序中重載定時(shí)常數(shù),可產(chǎn)生高要在中斷服務(wù)程序中重載定時(shí)常數(shù),可產(chǎn)生高精度的定時(shí)時(shí)間,適合用作較精確的定時(shí)脈沖精度的定時(shí)時(shí)間,適合用作較精確的定時(shí)脈沖信號(hào)發(fā)生器,如波特率發(fā)生器等。特別是工作信號(hào)發(fā)生器,如波特率發(fā)生器等。特別是工作

26、方式方式0(16位自動(dòng)重裝方式),實(shí)際工程中應(yīng)位自動(dòng)重裝方式),實(shí)際工程中應(yīng)用更加方便,因此,建議讀者盡量使用方式用更加方便,因此,建議讀者盡量使用方式0進(jìn)行定時(shí)器的應(yīng)用設(shè)計(jì)。進(jìn)行定時(shí)器的應(yīng)用設(shè)計(jì)。定時(shí)器定時(shí)器2的工作方式與定時(shí)器的工作方式與定時(shí)器0或或1的工作方式的工作方式0類似,讀者可參照上述內(nèi)容自行學(xué)習(xí)。類似,讀者可參照上述內(nèi)容自行學(xué)習(xí)。34/151四、定時(shí)四、定時(shí)/計(jì)數(shù)器量程的擴(kuò)展計(jì)數(shù)器量程的擴(kuò)展 在實(shí)際應(yīng)用中,需要的定時(shí)時(shí)常常超過定時(shí)在實(shí)際應(yīng)用中,需要的定時(shí)時(shí)常常超過定時(shí)/計(jì)數(shù)器的定時(shí)能力,特別是當(dāng)單片機(jī)的系統(tǒng)時(shí)計(jì)數(shù)器的定時(shí)能力,特別是當(dāng)單片機(jī)的系統(tǒng)時(shí)鐘頻率較高時(shí),定時(shí)時(shí)長(zhǎng)就更為有限

27、。為了滿鐘頻率較高時(shí),定時(shí)時(shí)長(zhǎng)就更為有限。為了滿足需要,足需要,經(jīng)常需要對(duì)單片機(jī)的定時(shí)計(jì)數(shù)能力進(jìn)經(jīng)常需要對(duì)單片機(jī)的定時(shí)計(jì)數(shù)能力進(jìn)行擴(kuò)展。行擴(kuò)展。35/1511、定時(shí)器的最大定時(shí)能力、定時(shí)器的最大定時(shí)能力當(dāng)工作于定時(shí)狀態(tài)時(shí),定時(shí)當(dāng)工作于定時(shí)狀態(tài)時(shí),定時(shí)/計(jì)數(shù)器是對(duì)時(shí)鐘計(jì)數(shù)器是對(duì)時(shí)鐘周期進(jìn)行計(jì)數(shù),若對(duì)時(shí)鐘進(jìn)行周期進(jìn)行計(jì)數(shù),若對(duì)時(shí)鐘進(jìn)行12分頻,則對(duì)每分頻,則對(duì)每12個(gè)時(shí)鐘周期計(jì)數(shù)一次。個(gè)時(shí)鐘周期計(jì)數(shù)一次。當(dāng)晶振頻率為當(dāng)晶振頻率為6MHz,采用,采用12分頻時(shí),計(jì)數(shù)的分頻時(shí),計(jì)數(shù)的單位時(shí)間為:?jiǎn)挝粫r(shí)間為: 單位時(shí)間為:?jiǎn)挝粫r(shí)間為: Tu= = s=2s 定時(shí)時(shí)間為定時(shí)時(shí)間為:TC=XTu。其中,。其

28、中,Tu為單位時(shí)間,為單位時(shí)間,TC為定時(shí)時(shí)間,為定時(shí)時(shí)間,X為所需計(jì)數(shù)次數(shù)。為所需計(jì)數(shù)次數(shù)。晶振頻率1260000001236/151STC15F2K60S2單片機(jī)的定時(shí)單片機(jī)的定時(shí)/計(jì)數(shù)器是加計(jì)數(shù)器是加1計(jì)計(jì)數(shù)器。因此,不能直接將實(shí)際的計(jì)數(shù)值作為計(jì)數(shù)器。因此,不能直接將實(shí)際的計(jì)數(shù)值作為計(jì)數(shù)初值送入計(jì)數(shù)寄存器數(shù)初值送入計(jì)數(shù)寄存器THX、TLX中,而必中,而必須將實(shí)際計(jì)數(shù)值以須將實(shí)際計(jì)數(shù)值以28、216為模求補(bǔ),以補(bǔ)碼作為模求補(bǔ),以補(bǔ)碼作為計(jì)數(shù)初值設(shè)置為計(jì)數(shù)初值設(shè)置THX和和TLX。即應(yīng)裝入計(jì)數(shù)即應(yīng)裝入計(jì)數(shù)/定時(shí)器的初值為:定時(shí)器的初值為: 其中,其中,n=8或或16。TcN2Tun37/15

29、1例如:已知例如:已知Tu2s,要求定時(shí),要求定時(shí)TC1ms,則則 對(duì) 方 式對(duì) 方 式 0 和 方 式和 方 式 1 , 時(shí) 間 常 數(shù) 為 :, 時(shí) 間 常 數(shù) 為 : 21 6500=65036=FE0CH (THX裝入裝入FEH,TLX裝入裝入0CH)。)。設(shè)系統(tǒng)時(shí)鐘頻率為設(shè)系統(tǒng)時(shí)鐘頻率為6MHz,12分頻時(shí),分頻時(shí),8位定時(shí)器的最大定時(shí)能力為:位定時(shí)器的最大定時(shí)能力為:T(28 0)2s512s16位定時(shí)器的最大定時(shí)能力為:位定時(shí)器的最大定時(shí)能力為:T(216 0)2s131072s131.072ms38/1512、定時(shí)量程的擴(kuò)展、定時(shí)量程的擴(kuò)展 定時(shí)量程的擴(kuò)展分為軟件擴(kuò)展和硬件擴(kuò)展

30、兩種定時(shí)量程的擴(kuò)展分為軟件擴(kuò)展和硬件擴(kuò)展兩種方法。方法。(1)軟件擴(kuò)展方法)軟件擴(kuò)展方法 軟件擴(kuò)展方法是在定時(shí)器中斷服務(wù)程序中軟件擴(kuò)展方法是在定時(shí)器中斷服務(wù)程序中對(duì)定對(duì)定時(shí)器中斷請(qǐng)求進(jìn)行計(jì)數(shù)時(shí)器中斷請(qǐng)求進(jìn)行計(jì)數(shù),當(dāng)中斷請(qǐng)求的次數(shù)達(dá)到,當(dāng)中斷請(qǐng)求的次數(shù)達(dá)到要求的值時(shí)才進(jìn)行相應(yīng)的處理。要求的值時(shí)才進(jìn)行相應(yīng)的處理。39/151例如,某事件的處理周期為例如,某事件的處理周期為1s由于受到最大定時(shí)時(shí)間的限制,無法一次完成由于受到最大定時(shí)時(shí)間的限制,無法一次完成定時(shí)。定時(shí)。此時(shí)可以將定時(shí)器的定時(shí)時(shí)間設(shè)為以此時(shí)可以將定時(shí)器的定時(shí)時(shí)間設(shè)為以10ms為一為一個(gè)單位,啟動(dòng)定時(shí)器后,每一次定時(shí)器溢出中個(gè)單位,啟動(dòng)定

31、時(shí)器后,每一次定時(shí)器溢出中斷將產(chǎn)生斷將產(chǎn)生10ms的定時(shí)。的定時(shí)。進(jìn)入中斷服務(wù)程序后,進(jìn)入中斷服務(wù)程序后,對(duì)定時(shí)器的中斷次數(shù)進(jìn)對(duì)定時(shí)器的中斷次數(shù)進(jìn)行計(jì)數(shù)行計(jì)數(shù),每計(jì)數(shù),每計(jì)數(shù)100次進(jìn)行一次事件的處理,次進(jìn)行一次事件的處理,則可實(shí)現(xiàn)則可實(shí)現(xiàn)1s的定時(shí)效果。的定時(shí)效果。這是最常用的方法。這是最常用的方法。40/151(2)硬件擴(kuò)展方法)硬件擴(kuò)展方法硬件擴(kuò)展方法可以使用外接通用定時(shí)器芯片對(duì)硬件擴(kuò)展方法可以使用外接通用定時(shí)器芯片對(duì)單片機(jī)的定時(shí)能力進(jìn)行擴(kuò)展。單片機(jī)的定時(shí)能力進(jìn)行擴(kuò)展。也可以利用單片機(jī)自身的資源對(duì)定時(shí)能力進(jìn)行也可以利用單片機(jī)自身的資源對(duì)定時(shí)能力進(jìn)行擴(kuò)展。擴(kuò)展。例如,將兩個(gè)定時(shí)器串聯(lián)起來使

32、用(其中,一例如,將兩個(gè)定時(shí)器串聯(lián)起來使用(其中,一個(gè)工作于定時(shí)方式,另一個(gè)工作于計(jì)數(shù)方式,個(gè)工作于定時(shí)方式,另一個(gè)工作于計(jì)數(shù)方式,請(qǐng)讀者分析其最大定時(shí)時(shí)間)。請(qǐng)讀者分析其最大定時(shí)時(shí)間)。由于該擴(kuò)展方法占用較多的資源,較少采用。由于該擴(kuò)展方法占用較多的資源,較少采用。41/151五、定時(shí)五、定時(shí)/計(jì)數(shù)器編程舉例計(jì)數(shù)器編程舉例 一般定時(shí)一般定時(shí)/計(jì)數(shù)器的應(yīng)用采用中斷方式,因此,計(jì)數(shù)器的應(yīng)用采用中斷方式,因此,編程時(shí)主要考慮兩點(diǎn):編程時(shí)主要考慮兩點(diǎn):正確初始化,包括寫入控制字、時(shí)間常數(shù)的計(jì)正確初始化,包括寫入控制字、時(shí)間常數(shù)的計(jì)算并裝入;算并裝入;中斷服務(wù)程序的編寫,在中斷服務(wù)程序中編寫中斷服務(wù)程

33、序的編寫,在中斷服務(wù)程序中編寫實(shí)現(xiàn)需要定時(shí)完成的任務(wù)代碼。實(shí)現(xiàn)需要定時(shí)完成的任務(wù)代碼。42/151在定時(shí)在定時(shí)/計(jì)數(shù)器初始化部分的一般步驟大致如下:計(jì)數(shù)器初始化部分的一般步驟大致如下:設(shè)置工作方式,將控制字寫入設(shè)置工作方式,將控制字寫入TMOD寄存器。(對(duì)于寄存器。(對(duì)于T0和和T1)或)或AUXR(對(duì)于(對(duì)于T2)。(注意)。(注意TMOD不能進(jìn)不能進(jìn)行位尋址)。行位尋址)。設(shè)置分頻方式,將控制字寫入設(shè)置分頻方式,將控制字寫入AUXR寄存器。默認(rèn)的寄存器。默認(rèn)的情況是情況是12分頻(兼容傳統(tǒng)分頻(兼容傳統(tǒng)8051單片機(jī)),如使用傳統(tǒng)單片機(jī)),如使用傳統(tǒng)8051單片機(jī)模式,無需設(shè)置。單片機(jī)模式

34、,無需設(shè)置。計(jì)算定時(shí)計(jì)算定時(shí)/計(jì)數(shù)初值,并將其裝入計(jì)數(shù)初值,并將其裝入TLX、THX寄存器。寄存器。(對(duì)于(對(duì)于T0和和T1)或)或T2L、T2H寄存器(對(duì)于寄存器(對(duì)于T2)。)。置位置位ETX和和EA允許定時(shí)允許定時(shí)/計(jì)數(shù)器中斷(如果需要)。計(jì)數(shù)器中斷(如果需要)。置位置位TRX(對(duì)于(對(duì)于T0和和T1)或)或T2R(對(duì)于(對(duì)于T2)以啟動(dòng)定)以啟動(dòng)定時(shí)時(shí)/計(jì)數(shù)。計(jì)數(shù)。在中斷服務(wù)程序中,要注意計(jì)數(shù)初值的重新裝入問題。在中斷服務(wù)程序中,要注意計(jì)數(shù)初值的重新裝入問題。43/151【例【例7-1】 設(shè)系統(tǒng)時(shí)鐘頻率為設(shè)系統(tǒng)時(shí)鐘頻率為6MHz,利用,利用T0定定時(shí),每隔時(shí),每隔1s將將P2.0的狀態(tài)

35、取反。的狀態(tài)取反。 解解:所要求的定時(shí)時(shí)間所要求的定時(shí)時(shí)間1s超過了定時(shí)器的定時(shí)能力超過了定時(shí)器的定時(shí)能力(時(shí)鐘頻率為(時(shí)鐘頻率為6MHz,12分頻時(shí),分頻時(shí),16位定時(shí)器位定時(shí)器的最長(zhǎng)定時(shí)時(shí)間為的最長(zhǎng)定時(shí)時(shí)間為131.072ms),所以無法采),所以無法采用定時(shí)器直接實(shí)現(xiàn)用定時(shí)器直接實(shí)現(xiàn)1s的定時(shí)。的定時(shí)。將定時(shí)器的定時(shí)時(shí)間設(shè)為將定時(shí)器的定時(shí)時(shí)間設(shè)為50ms,在中斷服務(wù)程,在中斷服務(wù)程序中對(duì)定時(shí)器溢出中斷請(qǐng)求進(jìn)行計(jì)數(shù),當(dāng)計(jì)夠序中對(duì)定時(shí)器溢出中斷請(qǐng)求進(jìn)行計(jì)數(shù),當(dāng)計(jì)夠20次時(shí),將次時(shí),將P2.0的狀態(tài)取反,否則直接返回主的狀態(tài)取反,否則直接返回主程序,從而達(dá)到程序,從而達(dá)到1s的定時(shí)。的定時(shí)。4

36、4/151選擇選擇T0為為16位定時(shí)器方式,方式字為位定時(shí)器方式,方式字為01H。系。系統(tǒng)時(shí)鐘頻率為統(tǒng)時(shí)鐘頻率為6MHz,12分頻時(shí),計(jì)數(shù)單位時(shí)分頻時(shí),計(jì)數(shù)單位時(shí)間間隔為間間隔為2s。T0的計(jì)數(shù)初值為:的計(jì)數(shù)初值為:1636TcXM2(50 10 )/(2 10 )65536250009E58HTu45/151$INCLUDE (STC12.INC) ;包含包含STC12C5A60S2寄存器定義文件寄存器定義文件 ORG0000H LJMP MAIN ;轉(zhuǎn)主程序轉(zhuǎn)主程序 ORG 000BH;T0中斷服務(wù)程序入口地址中斷服務(wù)程序入口地址 LJMPT0_ISR ORG 0100HMAIN: MOV

37、 SP,#7FH ;設(shè)置堆棧指針設(shè)置堆棧指針 MOV TMOD,#01H ;T0初始化初始化 MOV TL0,#58H MOV TH0,#9EH MOV A,#20 ;累加器累加器A置置20 SETB ET0 ;允外允外T0中斷中斷 SETB EA;CPU開中斷開中斷 SETB TR0 ;啟動(dòng)啟動(dòng)T0計(jì)數(shù)計(jì)數(shù) SJMP $ ;等待等待46/151T0_ISR:MOV TL0,#58H MOV TH0,#9EH;重新裝入時(shí)間常數(shù)重新裝入時(shí)間常數(shù) DEC A ; 累加器累加器A內(nèi)容減內(nèi)容減1 JNZEXIT CPL P2.0 MOV A,#20 ;累加器累加器A重載重載20EXIT: RETI E

38、ND程序中的符號(hào)程序中的符號(hào)“$”表示表示“本條指令地址本條指令地址”,指令,指令“SJMP $”相當(dāng)相當(dāng)于:于:“HERE: LJMP HERE”。47/151#include “stc12.h”/包含包含STC12C5A60S2的寄存器定義文件的寄存器定義文件sbit P20=P20;/聲明聲明P2.0的引腳位變量的引腳位變量unsigned char i; /聲明計(jì)數(shù)變量。聲明計(jì)數(shù)變量。C語(yǔ)言程序中盡量不要使用語(yǔ)言程序中盡量不要使用ACCvoid main (void) /SP=0 x60; /使用使用C語(yǔ)言設(shè)計(jì)程序時(shí),可以不設(shè)置堆棧指針語(yǔ)言設(shè)計(jì)程序時(shí),可以不設(shè)置堆棧指針 TMOD=0

39、x01; TL0=0 x58; TH0=0 x9E; i=20;/計(jì)數(shù)變量賦初值計(jì)數(shù)變量賦初值ET0=1;/允許允許T0中斷中斷 EA = 1;/開放總的中斷開放總的中斷TR0=1;/啟動(dòng)啟動(dòng)T0計(jì)數(shù)計(jì)數(shù) while(1); /等待中斷等待中斷48/151void T0_ISR (void) interrupt 1 /定時(shí)器定時(shí)器T0中斷函數(shù)中斷函數(shù)TL0=0 x58;/重新裝入時(shí)間常數(shù)重新裝入時(shí)間常數(shù) TH0=0 x9E; i-;/計(jì)數(shù)變量減計(jì)數(shù)變量減1if(i=0) /若減到若減到0,則將,則將P2.0取反取反P20 = !P20; /將將P2.0取反取反i = 20;/重新給計(jì)數(shù)變量賦值

40、重新給計(jì)數(shù)變量賦值 49/151若使用工作方式若使用工作方式0,則上述程序中,除了將,則上述程序中,除了將TMOD的的值設(shè)置為值設(shè)置為0以外,在中斷服務(wù)程序中,不再需要重新以外,在中斷服務(wù)程序中,不再需要重新裝入時(shí)間常數(shù),即:裝入時(shí)間常數(shù),即:在匯編語(yǔ)言程序的中斷服務(wù)程序中可以省去下面的兩在匯編語(yǔ)言程序的中斷服務(wù)程序中可以省去下面的兩句:句: MOV TL0,#58H MOV TH0,#9EH;重新裝入時(shí)間常數(shù)重新裝入時(shí)間常數(shù)在在C語(yǔ)言程序的中斷服務(wù)程序中可以省去下面的兩句:語(yǔ)言程序的中斷服務(wù)程序中可以省去下面的兩句: TL0=0 x58; TH0=0 x9E; /重新裝入時(shí)間常數(shù)重新裝入時(shí)間

41、常數(shù)其他部分的程序不變。其他部分的程序不變。對(duì)于對(duì)于1T模式的使用,請(qǐng)讀者自行實(shí)驗(yàn)學(xué)習(xí)。模式的使用,請(qǐng)讀者自行實(shí)驗(yàn)學(xué)習(xí)。 思考:思考:若晶振頻率修改為若晶振頻率修改為11.0592MHz,時(shí)間常,時(shí)間常數(shù)應(yīng)為多少?數(shù)應(yīng)為多少?50/151【例【例7-2】設(shè)時(shí)鐘頻率為】設(shè)時(shí)鐘頻率為18.432MHz,使用定時(shí),使用定時(shí)器器2定時(shí),使定時(shí),使P0.0口輸出口輸出38.4KHZ的方波。的方波。匯編代碼如下:匯編代碼如下: $INCLUDE (STC15.INC) ;包含寄存器定義文件包含寄存器定義文件 ;定義定義38.4KHz時(shí)的時(shí)間常數(shù)時(shí)的時(shí)間常數(shù) (65536-18432000/12/38400

42、/2) T38_4KHz EQU 0FFECH TEST_PIN BIT P0.0 ;測(cè)試引腳定義測(cè)試引腳定義 ORG0000H LJMPMAIN ORG0063H ;定時(shí)器定時(shí)器2的中斷服務(wù)程序入口地址的中斷服務(wù)程序入口地址 LJMPT2_ISR51/151MAIN: MOV SP,#70H;設(shè)置堆棧指針設(shè)置堆棧指針 ORLAUXR,#04H;設(shè)置設(shè)置T2為為1T模式模式 MOV T2H,#HIGH T38_4KHz;設(shè)置定時(shí)器設(shè)置定時(shí)器2重裝載時(shí)間重裝載時(shí)間 常數(shù)的高字節(jié)常數(shù)的高字節(jié) MOV T2L,#LOW T38_4KHz;設(shè)置定時(shí)器設(shè)置定時(shí)器2重裝載時(shí)間重裝載時(shí)間 常數(shù)的低字節(jié)常數(shù)的

43、低字節(jié) ORL AUXR,#10 H;啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器2 ORL IE2,#04H;允許定時(shí)器允許定時(shí)器2中斷中斷 SETBEA;開放開放CPU中斷中斷 SJMP$;定時(shí)器定時(shí)器2中斷服務(wù)程序中斷服務(wù)程序T2_ISR: CPL TEST_PIN RETI END52/151對(duì)應(yīng)的對(duì)應(yīng)的C語(yǔ)言代碼如下:語(yǔ)言代碼如下:#include “stc15.h”/包含包含STC15F2K60S2的寄存器定義文件的寄存器定義文件typedef unsigned char BYTE;typedef unsigned int WORD;#define FOSC 18432000L#define T38_4K

44、Hz (65536-18432000/12/38400/2) /38.4KHz sbit TEST_PIN = P00; /定義測(cè)試引腳定義測(cè)試引腳void main(void) AUXR|= 0 x04;/設(shè)置設(shè)置T2為為1T模式模式 T2H = T38_4KHz8; /設(shè)置設(shè)置T2重裝時(shí)間常數(shù)的高字節(jié)重裝時(shí)間常數(shù)的高字節(jié) T2L = T38_4KHz; /設(shè)置設(shè)置T2重裝時(shí)間常數(shù)的低字節(jié)重裝時(shí)間常數(shù)的低字節(jié) AUXR |= 0 x10; /啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器2 IE2 |= 0 x04; /允許定時(shí)器允許定時(shí)器2中斷中斷 EA = 1; /開放開放CPU中斷中斷 while (1); /

45、循環(huán)等待中斷循環(huán)等待中斷/定時(shí)器定時(shí)器2中斷服務(wù)函數(shù)中斷服務(wù)函數(shù)void t2_isr(void) interrupt 12 TEST_PIN = TEST_PIN;53/151【例【例7-3】 利用定時(shí)器的門控方式實(shí)現(xiàn)正脈沖的利用定時(shí)器的門控方式實(shí)現(xiàn)正脈沖的脈寬測(cè)量。脈寬測(cè)量。當(dāng)當(dāng)GATE=1,TRX=1,只有引腳輸入高電平時(shí),只有引腳輸入高電平時(shí),TX才被允許計(jì)數(shù),利用這一特點(diǎn),就可以測(cè)量才被允許計(jì)數(shù),利用這一特點(diǎn),就可以測(cè)量引腳上正脈沖的寬度。引腳上正脈沖的寬度。以以T0為例的門控法測(cè)量示意圖如圖所示。為例的門控法測(cè)量示意圖如圖所示。對(duì)T0初始化編程,GATE=1T0從0開始計(jì)數(shù)T0停止

46、計(jì)數(shù),讀T0值圖圖7-7 利用門控法測(cè)量脈沖寬度利用門控法測(cè)量脈沖寬度54/151解:以解:以T0為例,下面給出實(shí)現(xiàn)這一方法的關(guān)鍵代碼,完整的為例,下面給出實(shí)現(xiàn)這一方法的關(guān)鍵代碼,完整的匯編語(yǔ)言程序和對(duì)應(yīng)的匯編語(yǔ)言程序和對(duì)應(yīng)的C語(yǔ)言程序,請(qǐng)讀者自行編寫。語(yǔ)言程序,請(qǐng)讀者自行編寫。MOVTMOD,#09H ; T0工作于工作于16位定時(shí)方式、位定時(shí)方式、GATE置置1MOVTL0,#00HMOVTH0,#00HCLREX0 ;關(guān)外部中斷關(guān)外部中斷JNBP3.2,$ ;等待升高等待升高SETBTR0JBP3.2,$ ;等待下降等待下降CLRTR0 ;關(guān)關(guān)T0MOVA,TL0 ;T0內(nèi)容高內(nèi)容高8位

47、送位送B,低,低8位送位送AMOVB,TH0 ;計(jì)算脈寬或送顯示器顯示計(jì)算脈寬或送顯示器顯示55/151思考:思考:(1)當(dāng)脈沖寬度超過定時(shí)器的最大定時(shí)時(shí)間應(yīng))當(dāng)脈沖寬度超過定時(shí)器的最大定時(shí)時(shí)間應(yīng)該如何處理?該如何處理?(2)在動(dòng)態(tài)讀取運(yùn)行中的定時(shí))在動(dòng)態(tài)讀取運(yùn)行中的定時(shí)/計(jì)數(shù)器的計(jì)數(shù)值計(jì)數(shù)器的計(jì)數(shù)值時(shí),如果不加注意,就可能出錯(cuò)。這是因?yàn)椴粫r(shí),如果不加注意,就可能出錯(cuò)。這是因?yàn)椴豢赡茉谕粫r(shí)刻同時(shí)讀取可能在同一時(shí)刻同時(shí)讀取TH0和和TL0中的計(jì)數(shù)中的計(jì)數(shù)值。比如,先讀值。比如,先讀TL0后讀后讀TH0,因?yàn)槎〞r(shí),因?yàn)槎〞r(shí)/計(jì)數(shù)計(jì)數(shù)器處于運(yùn)行狀態(tài),在讀器處于運(yùn)行狀態(tài),在讀TL0時(shí)尚未產(chǎn)生向時(shí)尚未

48、產(chǎn)生向TH0進(jìn)位,而在讀進(jìn)位,而在讀TH0前已產(chǎn)生進(jìn)位,這時(shí)讀得的前已產(chǎn)生進(jìn)位,這時(shí)讀得的TH0就不對(duì)了;同樣,先讀就不對(duì)了;同樣,先讀TH0后讀后讀TL0也可也可能出錯(cuò)。如何解決這個(gè)問題?能出錯(cuò)。如何解決這個(gè)問題?56/1517.2可編程時(shí)鐘輸出模塊及其應(yīng)用可編程時(shí)鐘輸出模塊及其應(yīng)用 在控制系統(tǒng)中,有時(shí)需要為單片機(jī)外部的器在控制系統(tǒng)中,有時(shí)需要為單片機(jī)外部的器件提供時(shí)鐘控制,為此,件提供時(shí)鐘控制,為此,STC12C5A60S2單片單片機(jī)提供了機(jī)提供了4路路可編程時(shí)鐘輸出功能??删幊虝r(shí)鐘輸出功能。 MCLKO/P5.4, CLKOUT0/P3.5,CLKOUT1/P3.4, T2CLKO/P3

49、.0。 只有內(nèi)部只有內(nèi)部R/C時(shí)鐘頻率為時(shí)鐘頻率為12MHz以下時(shí),以下時(shí),MCLKO/P5.4才能正常輸出。才能正常輸出。57/151一、可編程時(shí)鐘輸出的相關(guān)寄存器一、可編程時(shí)鐘輸出的相關(guān)寄存器 1、主時(shí)鐘輸出、主時(shí)鐘輸出 主時(shí)鐘可以是內(nèi)部高精度主時(shí)鐘可以是內(nèi)部高精度R/C時(shí)鐘,也可以是時(shí)鐘,也可以是外部輸入的時(shí)鐘或外部晶體振蕩產(chǎn)生的時(shí)鐘。外部輸入的時(shí)鐘或外部晶體振蕩產(chǎn)生的時(shí)鐘。MCLKO/P5.4的時(shí)鐘輸出控制由的時(shí)鐘輸出控制由CLK_DIV寄寄存器的存器的MCKO_S1和和MCKO_S0位控制。通過位控制。通過 設(shè)置設(shè)置MCKO_S1和和MCKO_S0可將可將MCLKO/P5.4 管腳配

50、置為主時(shí)鐘輸出,同時(shí),還可以設(shè)置輸管腳配置為主時(shí)鐘輸出,同時(shí),還可以設(shè)置輸 出頻率。出頻率。58/151時(shí)鐘分頻寄存器時(shí)鐘分頻寄存器CLK_DIV(也稱為(也稱為PCON2,地址為,地址為97H,復(fù)位值為,復(fù)位值為0000 x000B)的各位定義如下:)的各位定義如下:位號(hào)位號(hào)D7D6D5D4D3D2D1D0位名稱位名稱MCKO_S1MCKO_S0 ADRJ TX_RX -CLKS2 CLKS1 CLKS059/151主時(shí)鐘的輸出頻率由主時(shí)鐘的輸出頻率由MCKO_S1和和MCKO_S0控制??刂啤CKO_S1MCKO_S0內(nèi)部?jī)?nèi)部R/C振蕩時(shí)鐘的輸出頻率振蕩時(shí)鐘的輸出頻率00 無主時(shí)鐘輸出無

51、主時(shí)鐘輸出01主時(shí)鐘輸出頻率主時(shí)鐘輸出頻率= MCLK/110主時(shí)鐘輸出頻率主時(shí)鐘輸出頻率= MCLK/211主時(shí)鐘輸出頻率主時(shí)鐘輸出頻率= MCLK/4表表7-2 主時(shí)鐘的輸出頻率設(shè)置主時(shí)鐘的輸出頻率設(shè)置其中,其中,MCLK指主時(shí)鐘頻率。指主時(shí)鐘頻率。IO口輸出的頻率最高可達(dá)口輸出的頻率最高可達(dá)13.5MHz。60/1512、T2CLKO/P3.0、T1CLKOU/P3.4和和T0CLKOU/P3.5的時(shí)鐘輸出的時(shí)鐘輸出T2CLKO/P3.0、T1CLKOU/P3.4和和T0CLKOU/P3.5的的時(shí)鐘輸出分別由外部中斷使能和時(shí)鐘輸出寄存器時(shí)鐘輸出分別由外部中斷使能和時(shí)鐘輸出寄存器INT_C

52、LKO (也稱為也稱為AUXR2)的的T2CLKO、T1CLKO和和T0CLKO位控制。位控制。CLKOUT0的輸出時(shí)鐘頻率由定時(shí)器的輸出時(shí)鐘頻率由定時(shí)器0控制,控制,CLKOUT1的輸出時(shí)鐘頻率由定時(shí)器的輸出時(shí)鐘頻率由定時(shí)器1控制,控制,T2CLKO的輸出時(shí)鐘頻率由定時(shí)器的輸出時(shí)鐘頻率由定時(shí)器2控制控制定時(shí)器需要工作在定時(shí)器方式定時(shí)器需要工作在定時(shí)器方式0(16位自動(dòng)重裝模式)位自動(dòng)重裝模式)或方式或方式2(8位自動(dòng)重裝載模式),不允許定時(shí)器中斷,位自動(dòng)重裝載模式),不允許定時(shí)器中斷,以免以免CPU反復(fù)進(jìn)中斷。反復(fù)進(jìn)中斷。61/151外部中斷使能和時(shí)鐘輸出寄存器外部中斷使能和時(shí)鐘輸出寄存器I

53、NT_CLKO(地址為(地址為8FH,復(fù)位值為,復(fù)位值為X0000000B)各位的)各位的定義如下:定義如下:位號(hào)位號(hào)D7D6D5D4D3D2D1D0位名稱位名稱-EX4EX3EX2-T2CLKOT1CLKOT0CLKO62/1511)T2CLKO:是否將:是否將P3.0腳設(shè)置為定時(shí)器腳設(shè)置為定時(shí)器2(T2)的時(shí)鐘輸)的時(shí)鐘輸出出T2CLKO。 T2CLKO=1 設(shè)設(shè)P3.0引腳為引腳為T2的時(shí)鐘輸出的時(shí)鐘輸出 輸出頻率輸出頻率=T2溢出率溢出率/2 如果如果T2_C/T=0,定時(shí)器,定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T2對(duì)內(nèi)部系統(tǒng)時(shí)鐘計(jì)數(shù),則:對(duì)內(nèi)部系統(tǒng)時(shí)鐘計(jì)數(shù),則:T2工作在工作在1T模式時(shí)的輸出頻率模

54、式時(shí)的輸出頻率=(SYSclk) / (65536-RL_TH2, RL_TL2)/2T2工作在工作在12T模式時(shí)的輸出頻率模式時(shí)的輸出頻率= (SYSclk) /12/ (65536-RL_TH2, RL_TL2)/2 如果如果T2_C/T=1,定時(shí)器,定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T2對(duì)外部脈沖輸入對(duì)外部脈沖輸入(P3.1/T2)計(jì)數(shù),計(jì)數(shù),則輸出時(shí)鐘頻率則輸出時(shí)鐘頻率= (T2_Pin_CLK) / (65536-RL_TH2, RL_TL2)/2T2CLKO=0 不允許不允許P3.0引腳為引腳為T2的時(shí)鐘輸出的時(shí)鐘輸出63/151當(dāng)當(dāng)T1CLKO=1時(shí),將時(shí),將P3.4/T0腳配置為定時(shí)器腳配置

55、為定時(shí)器1的時(shí)鐘輸出的時(shí)鐘輸出T1CLKO。 輸出時(shí)鐘頻率輸出時(shí)鐘頻率= T1溢出率溢出率/2。 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T1工作在定時(shí)器模式工作在定時(shí)器模式0(16位自動(dòng)重裝模式)時(shí),如果位自動(dòng)重裝模式)時(shí),如果C/T=0,定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T1對(duì)內(nèi)部系統(tǒng)時(shí)鐘計(jì)數(shù),則:對(duì)內(nèi)部系統(tǒng)時(shí)鐘計(jì)數(shù),則:T1工作在工作在1T模式時(shí)的輸出頻率模式時(shí)的輸出頻率=(SYSclk) / (65536-RL_TH1, RL_TL1)/2T1工作在工作在12T模式時(shí)的輸出頻率模式時(shí)的輸出頻率= (SYSclk) /12/ (65536-RL_TH1, RL_TL1)/2如果如果C/T =1,定時(shí)器,定時(shí)器

56、/計(jì)數(shù)器計(jì)數(shù)器T1對(duì)外部脈沖輸入對(duì)外部脈沖輸入(P3.5/T1)計(jì)數(shù),計(jì)數(shù), 則輸出時(shí)鐘頻率則輸出時(shí)鐘頻率= (T1_Pin_CLK) / (65536-RL_TH1, RL_TL1)/2 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T1工作在模式工作在模式2(8位自動(dòng)重裝模式)時(shí),位自動(dòng)重裝模式)時(shí), 如果如果C/T=0,定時(shí)器,定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T1對(duì)內(nèi)部系統(tǒng)時(shí)鐘計(jì)數(shù),則:對(duì)內(nèi)部系統(tǒng)時(shí)鐘計(jì)數(shù),則: T1工作在工作在1T模式時(shí)的輸出頻率模式時(shí)的輸出頻率 = (SYSclk) / (256-TH1)/2 T1工作在工作在12T模式時(shí)的輸出頻率模式時(shí)的輸出頻率= (SYSclk)/12/(256-TH1)/2如

57、果如果C/T=1,定時(shí)器,定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T1是對(duì)外部脈沖輸入是對(duì)外部脈沖輸入(P3.5/T1)計(jì)數(shù),則:計(jì)數(shù),則: 輸出時(shí)鐘頻率輸出時(shí)鐘頻率= (T1_Pin_CLK) / (256-TH1) / 2當(dāng)當(dāng)T1CLKO=0時(shí),不允許時(shí),不允許P3.4/T0管腳被配置為定時(shí)器管腳被配置為定時(shí)器1的時(shí)鐘輸出。的時(shí)鐘輸出。 2)T1CLKO:是否允許將:是否允許將P3.4腳配置為定時(shí)器腳配置為定時(shí)器1(T1)的時(shí)鐘)的時(shí)鐘輸出輸出T1CLKO。設(shè)置方法與。設(shè)置方法與T2相同。相同。64/1513)T0CLKO:是否允許將:是否允許將P3.5腳配置為定時(shí)器腳配置為定時(shí)器0(T0)的時(shí)鐘)的時(shí)鐘輸出

58、輸出T0CLKO。 當(dāng)當(dāng)T0CLKO=1時(shí),將時(shí),將P3.5/T1管腳配置為定時(shí)器管腳配置為定時(shí)器0的時(shí)鐘輸出的時(shí)鐘輸出T0CLKO,輸,輸出時(shí)鐘頻率出時(shí)鐘頻率=T0溢出率溢出率/2。 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0工作在定時(shí)器模式工作在定時(shí)器模式0(16位自動(dòng)重裝模式)時(shí),如果位自動(dòng)重裝模式)時(shí),如果C/T =0,定時(shí)器,定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0對(duì)內(nèi)部系統(tǒng)時(shí)鐘計(jì)數(shù),則:對(duì)內(nèi)部系統(tǒng)時(shí)鐘計(jì)數(shù),則:T0工作在工作在1T模式時(shí)的輸出頻率模式時(shí)的輸出頻率= (SYSclk)/(65536-RL_TH0, RL_TL0)/2T0工作在工作在12T模式時(shí)的輸出頻率模式時(shí)的輸出頻率= (SYSclk) /1

59、2/ (65536-RL_TH0, RL_TL0)/2 如果如果C/T=1,定時(shí)器,定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0對(duì)外部脈沖輸入對(duì)外部脈沖輸入(P3.4/T0)計(jì)數(shù),則:計(jì)數(shù),則: 輸出時(shí)鐘頻率輸出時(shí)鐘頻率= (T0_Pin_CLK) / (65536-RL_TH0, RL_TL0)/2 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0工作在定時(shí)器模式工作在定時(shí)器模式2(8位自動(dòng)重裝模式)時(shí),如果位自動(dòng)重裝模式)時(shí),如果C/T=0,則:則: T0工作在工作在1T模式時(shí)的輸出頻率模式時(shí)的輸出頻率= (SYSclk) / (256-TH0) / 2 T0工作在工作在12T模式時(shí)的輸出頻率模式時(shí)的輸出頻率= (SYSclk

60、) / 12 / (256-TH0) / 2如果如果C/T=1,定時(shí)器,定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0對(duì)外部脈沖輸入(對(duì)外部脈沖輸入(P3.4/T0)計(jì)數(shù),則:)計(jì)數(shù),則: 輸出時(shí)鐘頻率輸出時(shí)鐘頻率= (T0_Pin_CLK) / (256-TH0) / 2當(dāng)當(dāng)T0CLKO=0時(shí),不允許時(shí),不允許P3.5/T1管腳被配置為定時(shí)器管腳被配置為定時(shí)器0的時(shí)鐘輸出。的時(shí)鐘輸出。65/151二、可編程時(shí)鐘輸出的編程實(shí)例二、可編程時(shí)鐘輸出的編程實(shí)例1、如果要使用主時(shí)鐘輸出,例如,從、如果要使用主時(shí)鐘輸出,例如,從P5.4輸出時(shí)鐘輸出時(shí)鐘信號(hào),頻率是信號(hào),頻率是SYSclk,只需加入下面的語(yǔ)句即可:,只需加入下

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論