單片機的定時計數器與串行接口_第1頁
單片機的定時計數器與串行接口_第2頁
單片機的定時計數器與串行接口_第3頁
單片機的定時計數器與串行接口_第4頁
單片機的定時計數器與串行接口_第5頁
已閱讀5頁,還剩53頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 7.1 7.2 7.3 7.4 7.5 8051單片機中有兩個計數器T0和T1,這兩個計數器分別是由兩個8位的RAM單元組成的,即每個計數器都是16位的計數器,最大的計數量是65536。 8031中的計數器除了能作為計數之用外,還能用作時鐘,時鐘的用途當然很大,如打鈴器,電視機定時關機,空調定時開關等等。 定時器和計數器的原理是一樣的,都是進行計數操作,每次加1,加滿溢出后,再從0開始計數,定時器和計數器不同之定時器和計數器不同之處是輸入的計數信號來源不同處是輸入的計數信號來源不同。計數器是記錄的外界發生的事情,而定時器則是由單片機供給一個非常穩定的計數源。 這個計數源就是由單片機的晶體震蕩

2、器經過12分頻后獲得的一個脈沖源。晶體震蕩器的頻率當然很準,所以這個計數脈沖的時間間隔也很準。實現定時功能,比較方便的方法是利用單片機的定時器計數器實現定時功能,比較方便的方法是利用單片機的定時器計數器,也可以采用下面的三種方法:軟件定時軟件定時:軟件定時不占用硬件資源,但占用了cpu的時間,降低了cpu的利用率。采用時基電路定時采用時基電路定時:例如采用555電路,外界必要的元器件(電阻和電容),即可構成硬件定時電路。但在硬件連接好以后,定時值與定時范圍不能由軟件進行修改與控制,即不可編程。采用可編程芯片定時采用可編程芯片定時:這種定時芯片的定時值及定時范圍很容易用軟件來確定和修改,此種芯片

3、定時功能強,使用靈活,在單片機的定時計數器不夠用時,可以考慮進行擴展擴展。7.2 8051定時定時/計數器結構和工作原理計數器結構和工作原理 5151系列單片機片內有二個系列單片機片內有二個十六位十六位定時定時/ /計數器:計數器:定時器定時器0(T0)0(T0)和定時器和定時器1(T1)1(T1)。 兩個定時器都有兩個定時器都有定時或事件計數定時或事件計數的功能,可用于的功能,可用于定時控定時控制、延時、對外部事件計數和檢測制、延時、對外部事件計數和檢測等場合等場合 定時定時/ /計數器實際上是計數器實際上是1616位加位加1 1計數器計數器。 T0T0由由2 2個個8 8位持殊功能寄存器位

4、持殊功能寄存器TH0TH0和和TL0TL0構成,構成, T1T1由由2 2個個8 8位持殊功能寄存器位持殊功能寄存器TH1TH1和和TL1TL1構成。構成。每個定時器都可由每個定時器都可由軟件設置軟件設置為為定時工作方式定時工作方式或或 計數工作方式。計數工作方式。T0和和T1受受特殊功能寄存器特殊功能寄存器TMODTMOD和和TCONTCON控制。控制。 加加1計數器計數器輸入的計數脈沖有輸入的計數脈沖有兩個來源兩個來源,一個是由一個是由系統的時系統的時鐘振蕩器輸出脈沖經鐘振蕩器輸出脈沖經12分頻后送來分頻后送來;一個是;一個是T0或或T1引腳引腳輸入的外部脈沖源。輸入的外部脈沖源。 每來一

5、個脈沖計數器加每來一個脈沖計數器加1,當加到計數器為全,當加到計數器為全1時,再輸入時,再輸入一個脈沖就使計數器回零,且計數器的溢出使一個脈沖就使計數器回零,且計數器的溢出使TCON中中TF0或或TF1置置1,向,向CPU發出中斷請求(定時發出中斷請求(定時/計數器中斷計數器中斷允許時)。允許時)。 如果定時如果定時/計數器工作于定時模式,則表示定時計數器工作于定時模式,則表示定時時間已到時間已到;如果工作于計數模式,則表示如果工作于計數模式,則表示計數值已滿計數值已滿。 可見,由溢出時計數器的值減去計數初值才是加可見,由溢出時計數器的值減去計數初值才是加1計數器計數器的計數值。的計數值。1.

6、 定時工作方式定時工作方式 設置為定時器模式時:設置為定時器模式時:加加1計數器是對內部機器周期計數計數器是對內部機器周期計數(1個機器周期等于個機器周期等于12個振蕩周期,即計數頻率為晶振頻個振蕩周期,即計數頻率為晶振頻率的率的1/12)。)。 每經過一個每經過一個機器周期機器周期定時器定時器(T0或或T1)的數值加的數值加1直至計數直至計數滿產生溢出。滿產生溢出。 計數值計數值N乘以機器周期乘以機器周期Tcy就是定時時間就是定時時間t 。 計數值:計數值:N=滿計數值滿計數值-初始設定值初始設定值t=計數值計數值N機器周期機器周期T 如:當如:當8051采用采用12MHz晶體時,每個機器周

7、期為晶體時,每個機器周期為1s,計計5 個機器周期即為個機器周期即為5 s,即定時,即定時5 s 。2. 計數工作方式計數工作方式 設置為計數工作方式時,通過設置為計數工作方式時,通過引腳引腳T0(P3T0(P34)4)和和T1(P3T1(P35)5)對外對外部脈沖信號計數。部脈沖信號計數。當輸入脈沖信號產生由當輸入脈沖信號產生由1 1至至0 0的下降沿時,定時器的值加的下降沿時,定時器的值加1, 1, 在每在每個機器周期個機器周期CPUCPU采樣采樣T0T0和和T1T1的輸入電平。若前一個機器周期采的輸入電平。若前一個機器周期采樣值為高,下一個機器周期采樣值為低,則計數器加樣值為高,下一個機

8、器周期采樣值為低,則計數器加 1 1。由于檢測一個由于檢測一個1 1至至0 0的跳變需要二個機器周期,故最高計數頻率的跳變需要二個機器周期,故最高計數頻率為振蕩頻率的為振蕩頻率的雖然對輸入信號的占空比無特殊要求,但為了確保某個電平在雖然對輸入信號的占空比無特殊要求,但為了確保某個電平在變化之前至少被采樣一次,要求變化之前至少被采樣一次,要求電平保持時間至少是一個完整電平保持時間至少是一個完整的機器周期。的機器周期。由由T0或或T1引腳輸入計數脈沖。在每個機器周期的引腳輸入計數脈沖。在每個機器周期的S5P2期間,期間,CPU采樣引腳輸入電平。當前一機器周期采樣到高電平,下一周采樣引腳輸入電平。當

9、前一機器周期采樣到高電平,下一周期機器采樣到低電平時,則計數器加期機器采樣到低電平時,則計數器加1,更新的計數值在下一個機,更新的計數值在下一個機器周期的器周期的S3P1期間裝入計數器。由于檢測一個從期間裝入計數器。由于檢測一個從1到到0的下降沿需的下降沿需要要2個機器周期,個機器周期,因此要求被采樣的電平至少要維持一個機器周期因此要求被采樣的電平至少要維持一個機器周期,最高計數頻率不超過振蕩頻率的,最高計數頻率不超過振蕩頻率的1/24 ,當晶振頻率為,當晶振頻率為12MHz時時,計數頻率為,計數頻率為1/2MHz,計數脈沖的周期要大于,計數脈沖的周期要大于2 s。 7.3 7.3 7.3 定

10、時計數器的控制寄存器定時計數器的控制寄存器定時計數器的控制寄存器定時計數器的控制寄存器定時計數器的控制寄存器定時計數器的控制寄存器定時器共有兩個控制寄存器:定時器共有兩個控制寄存器:定時器共有兩個控制寄存器:定時器共有兩個控制寄存器:定時器共有兩個控制寄存器:定時器共有兩個控制寄存器: 定時器控制定時器控制定時器控制定時器控制定時器控制定時器控制TCONTCONTCON(88H)88H)88H) 定時器工作模式寄存器定時器工作模式寄存器定時器工作模式寄存器定時器工作模式寄存器定時器工作模式寄存器定時器工作模式寄存器TMOD(89H)TMOD(89H)TMOD(89H)1. 1. 1. 工作模式

11、寄存器工作模式寄存器工作模式寄存器工作模式寄存器工作模式寄存器工作模式寄存器TMOD(89H)TMOD(89H)TMOD(89H) TMODTMODTMOD用于控制用于控制用于控制用于控制用于控制用于控制T0T0T0和和和和和和T1T1T1的操作模式。其各位的定義如下:的操作模式。其各位的定義如下:的操作模式。其各位的定義如下:的操作模式。其各位的定義如下:的操作模式。其各位的定義如下:的操作模式。其各位的定義如下: TMOD D7D6D5D4 D3D2D1D0 (89H)GATEC/TM1M0GATEC/TM1M0定時器定時器定時器定時器定時器定時器T0T0T0 定時器定時器定時器定時器定時

12、器定時器T1T1T1 GATE:門控選擇位:門控選擇位 =0=0,非門控方式,定時,非門控方式,定時/ /計數器由內部計數器由內部軟件軟件啟動:啟動: TRxTRx=1=1,啟動定時器工作;,啟動定時器工作; TRxTRx=0=0,停止定時器工作。,停止定時器工作。 =1=1,門控方式,定時,門控方式,定時/ /計數器由內、外部啟動:計數器由內、外部啟動: TRxTRx=1=1,同時必須引腳,同時必須引腳INTxINTx=1=1,才啟動。,才啟動。 門控位門控位GATE為為1時,時,TRx=1,INTx=1才能啟動定時器。利用這個特性可以才能啟動定時器。利用這個特性可以測量外部輸入脈沖的寬度。

13、測量外部輸入脈沖的寬度。 C/T:定時器:定時器/計數器選擇位計數器選擇位 M1、M0工作模式選擇位。工作模式選擇位。 由于有由于有M1和和M0兩位,可以有四種工作方式。兩位,可以有四種工作方式。T0有有4種工作模式種工作模式,T1有有3種工種工作模式作模式。 定時器定時器/計數器計數器T1不能工作在模式不能工作在模式3。設置。設置T1的的M1M0=11,T1將停止工將停止工作。作。定時器定時器/計數器的工作模式計數器的工作模式M1 M0 工作模式工作模式功能介紹功能介紹00模式模式013位定時器位定時器/計數器計數器 01模式模式116位定時器位定時器/計數器計數器10模式模式28位自動重置

14、定時器位自動重置定時器/計數器計數器11模式模式3定時器定時器0:TL0可可8位定時器位定時器/計數器,計數器,TH0為為8位定時器。位定時器。定時器定時器1:不工作。:不工作。TMODTMODTMOD各位定義及具體的意義各位定義及具體的意義各位定義及具體的意義各位定義及具體的意義各位定義及具體的意義各位定義及具體的意義 TF1 TR1TF0 TR0 IE1IT1 IE0IT0T1 請求請求有有/無無 T1工作工作啟啟/停停 T0 請求請求有有/無無 T0 工作工作啟啟/停停 INT1 請求請求有有/無無 INT1方式方式下沿下沿/ 低電低電平平 INT0請求請求有有/無無 INT0方式方式下

15、沿下沿/低電低電平平 2. 2. 2. 控制寄存器控制寄存器控制寄存器控制寄存器控制寄存器控制寄存器TCON(88H)TCON(88H)TCON(88H) TCONTCONTCON寄存器寄存器寄存器寄存器寄存器寄存器 中定時器控制中定時器控制中定時器控制中定時器控制中定時器控制中定時器控制 僅用了其中高四位,其意義如下:僅用了其中高四位,其意義如下:僅用了其中高四位,其意義如下:僅用了其中高四位,其意義如下:僅用了其中高四位,其意義如下:僅用了其中高四位,其意義如下: TF1TF1TF1:T1T1T1溢出中斷請求標志。溢出中斷請求標志。溢出中斷請求標志。溢出中斷請求標志。溢出中斷請求標志。溢出

16、中斷請求標志。 TF1=1TF1=1TF1=1,T1T1T1有溢出中斷請求。有溢出中斷請求。有溢出中斷請求。有溢出中斷請求。有溢出中斷請求。有溢出中斷請求。 TF1=0TF1=0TF1=0,T1T1T1無溢出中斷請求。無溢出中斷請求。無溢出中斷請求。無溢出中斷請求。無溢出中斷請求。無溢出中斷請求。 TR1TR1TR1:T1T1T1運行控制位。運行控制位。運行控制位。運行控制位。運行控制位。運行控制位。 TR1=1TR1=1TR1=1,啟動,啟動,啟動,啟動,啟動,啟動T1T1T1工作。工作。工作。工作。工作。工作。 TR1=0TR1=0TR1=0,停止,停止,停止,停止,停止,停止T1T1T1

17、工作。工作。工作。工作。工作。工作。在程序中用指令在程序中用指令在程序中用指令在程序中用指令在程序中用指令在程序中用指令“SETB TR1”SETB TR1”SETB TR1”使使使使使使TR1TR1TR1位置位置位置位置位置位置1 1 1,定時器,定時器,定時器,定時器,定時器,定時器T1T1T1便開便開便開便開便開便開始計數。始計數。始計數。始計數。始計數。始計數。“CLR TR1CLR TR1CLR TR1”使使使使使使TR1TR1TR1清清清清清清0. 0. 0.GATE=0GATE=0GATE=0時,用時,用時,用時,用時,用時,用軟件軟件軟件軟件軟件軟件使使使使使使TR1TR1TR

18、1置置置置置置1 1 1,則啟動定時器,則啟動定時器,則啟動定時器,則啟動定時器,則啟動定時器,則啟動定時器1 1 1, 用用用用用用軟件軟件軟件軟件軟件軟件使使使使使使TR1TR1TR1清清清清清清0 0 0,則停止定時器,則停止定時器,則停止定時器,則停止定時器,則停止定時器,則停止定時器1 1 1。GATE=1GATE=1GATE=1時時時時時時,用,用,用,用,用,用軟件軟件軟件軟件軟件軟件TR1TR1TR1TR1TR1TR1置置置置置置1 1 1 1 1 1,如果檢測到引腳,如果檢測到引腳,如果檢測到引腳,如果檢測到引腳,如果檢測到引腳,如果檢測到引腳INT1INT1INT1INT1

19、INT1INT1(P3.3P3.3P3.3P3.3P3.3P3.3)輸)輸)輸)輸)輸)輸入高電平時啟動定時器入高電平時啟動定時器入高電平時啟動定時器入高電平時啟動定時器入高電平時啟動定時器入高電平時啟動定時器1 1 1 1 1 1。 TF0TF0TF0:T0T0T0溢出中斷請求標志。溢出中斷請求標志。溢出中斷請求標志。溢出中斷請求標志。溢出中斷請求標志。溢出中斷請求標志。 TF0=1TF0=1TF0=1,T0T0T0有溢出中斷請求。有溢出中斷請求。有溢出中斷請求。有溢出中斷請求。有溢出中斷請求。有溢出中斷請求。 TF0=0TF0=0TF0=0,T0T0T0無溢出中斷請求。無溢出中斷請求。無溢

20、出中斷請求。無溢出中斷請求。無溢出中斷請求。無溢出中斷請求。 TR0TR0TR0:T0T0T0運行控制位。運行控制位。運行控制位。運行控制位。運行控制位。運行控制位。 TR0=1TR0=1TR0=1,啟動,啟動,啟動,啟動,啟動,啟動T0T0T0工作。工作。工作。工作。工作。工作。 TR0=0TR0=0TR0=0,停止,停止,停止,停止,停止,停止T0T0T0工作。同工作。同工作。同工作。同工作。同工作。同TR1TR1TR1定時計數器的內部邏輯電路結構定時計數器的內部邏輯電路結構定時計數器的內部邏輯電路結構定時計數器的內部邏輯電路結構定時計數器的內部邏輯電路結構定時計數器的內部邏輯電路結構 &

21、 & & 1 1 1C/TC/TC/TC/TC/TC/T7.4 7.4 7.4 定時器的四種工作方式定時器的四種工作方式定時器的四種工作方式定時器的四種工作方式定時器的四種工作方式定時器的四種工作方式 對對對對對對TMODTMODTMOD寄存器的寄存器的寄存器的寄存器的寄存器的寄存器的M1M1M1、M0M0M0位的設置,可選擇四種工作方位的設置,可選擇四種工作方位的設置,可選擇四種工作方位的設置,可選擇四種工作方位的設置,可選擇四種工作方位的設置,可選擇四種工作方式,即方式式,即方式式,即方式式,即方式式,即方式式,即方式0 0 0、方式、方式、方式、方式、方式、方式1 1 1、方式、方式、方

22、式、方式、方式、方式2 2 2和方式和方式和方式和方式和方式和方式3 3 3。下面用下面用下面用下面用下面用下面用THXTHXTHX、TLXTLXTLX(X=1X=1X=1或或或或或或0 0 0)表示)表示)表示)表示)表示)表示TH1 TL1 TH0 TL0TH1 TL1 TH0 TL0TH1 TL1 TH0 TL0。模式模式模式模式模式模式0 0 0以及定時器以及定時器以及定時器以及定時器以及定時器以及定時器T0T0T0、T1T1T1模式模式模式模式模式模式0 0 0下的結構下的結構下的結構下的結構下的結構下的結構模式模式模式模式模式模式1 1 1以及定時器以及定時器以及定時器以及定時器以

23、及定時器以及定時器T0T0T0、T1T1T1模式模式模式模式模式模式1 1 1下的結構下的結構下的結構下的結構下的結構下的結構模式模式模式模式模式模式2 2 2以及定時器以及定時器以及定時器以及定時器以及定時器以及定時器T0T0T0、T1T1T1模式模式模式模式模式模式2 2 2下的結構下的結構下的結構下的結構下的結構下的結構模式模式模式模式模式模式3 3 3以及定時器以及定時器以及定時器以及定時器以及定時器以及定時器T0T0T0、T1T1T1模式模式模式模式模式模式3 3 3下的結構下的結構下的結構下的結構下的結構下的結構 13位定時位定時/計數器計數器,由,由TLx的低的低5位(高位(高3

24、位未用)和位未用)和THx的的8位組成。位組成。TLx的低的低5位溢出時向位溢出時向THx進位,進位,THx溢溢出時,置位出時,置位TCON中的中的TFx標志,向標志,向CPU發出中斷請求。發出中斷請求。計數外部脈沖個數:計數外部脈沖個數:計數外部脈沖個數:計數外部脈沖個數:計數外部脈沖個數:計數外部脈沖個數: 1 1 1 1 1 18192(28192(28192(28192(28192(28192(2131313131313) ) ) ) ) )定時時間:定時時間:定時時間:定時時間:定時時間:定時時間: T T T T T T8192T8192T8192Tfoscfoscfoscfosc

25、foscfosc=12MHz=12MHz=12MHz=12MHz=12MHz=12MHz,T=1usT=1usT=1usT=1usT=1usT=1us時,最大定時時間:時,最大定時時間:時,最大定時時間:時,最大定時時間:時,最大定時時間:時,最大定時時間:8.19ms8.19ms8.19ms8.19ms8.19ms8.19ms 計數外部脈沖個數范圍:計數外部脈沖個數范圍:計數外部脈沖個數范圍:計數外部脈沖個數范圍:計數外部脈沖個數范圍:計數外部脈沖個數范圍:1 1 1 1 1 1655366553665536655366553665536(2(2(2(2(2(2161616161616) )

26、 ) ) ) )定時時間范圍定時時間范圍定時時間范圍定時時間范圍定時時間范圍定時時間范圍 :T T T65536T65536T65536T65536T65536T65536TTLx為為8位加位加1計數器,計數器, THx為為8位位初值暫存器初值暫存器。 TLx計數溢出時,一方計數溢出時,一方面將面將TFx置位,另一方面,將置位,另一方面,將THx的內容重新裝入的內容重新裝入TLx,但不影響,但不影響THx中的中的內容,用于需要重復定時和計數的場合,可實現每隔預定時間發出控制信內容,用于需要重復定時和計數的場合,可實現每隔預定時間發出控制信號。號。4)方式)方式3(M1M0=00) T0在方式在

27、方式3時時T1的工作模式的工作模式 如果定時如果定時如果定時如果定時如果定時如果定時/ / /計數器計數器計數器計數器計數器計數器T0T0T0工作在方式工作在方式工作在方式工作在方式工作在方式工作在方式3 3 3,T1T1T1只能工作在只能工作在只能工作在只能工作在只能工作在只能工作在0 0 0、1 1 1、2 2 2方式。方式。方式。方式。方式。方式。此時由于此時由于此時由于此時由于此時由于此時由于T1T1T1的運行控制位的運行控制位的運行控制位的運行控制位的運行控制位的運行控制位TR1TR1TR1及計數溢出標及計數溢出標及計數溢出標及計數溢出標及計數溢出標及計數溢出標志位志位志位志位志位志

28、位TF1TF1TF1已被定時已被定時已被定時已被定時已被定時已被定時/ / /計數器計數器計數器計數器計數器計數器T0T0T0借用,借用,借用,借用,借用,借用,這時,這時,這時,這時,這時,這時,T1T1T1作為串行口作為串行口作為串行口作為串行口作為串行口作為串行口的波特率發生器使用。的波特率發生器使用。的波特率發生器使用。的波特率發生器使用。的波特率發生器使用。的波特率發生器使用。 當作為波特率發生器使用時,只需要設置好工作方當作為波特率發生器使用時,只需要設置好工作方當作為波特率發生器使用時,只需要設置好工作方當作為波特率發生器使用時,只需要設置好工作方當作為波特率發生器使用時,只需要

29、設置好工作方當作為波特率發生器使用時,只需要設置好工作方式,便可自動運行。式,便可自動運行。式,便可自動運行。式,便可自動運行。式,便可自動運行。式,便可自動運行。如要停止工作,只需送入一個把如要停止工作,只需送入一個把如要停止工作,只需送入一個把如要停止工作,只需送入一個把如要停止工作,只需送入一個把如要停止工作,只需送入一個把T1T1T1設置為方式設置為方式設置為方式設置為方式設置為方式設置為方式3 3 3的方式控制字。因為定時的方式控制字。因為定時的方式控制字。因為定時的方式控制字。因為定時的方式控制字。因為定時的方式控制字。因為定時/ / /計數器計數器計數器計數器計數器計數器T1T1

30、T1不能在不能在不能在不能在不能在不能在方式方式方式方式方式方式3 3 3下工作,如果硬把它設置為方式下工作,如果硬把它設置為方式下工作,如果硬把它設置為方式下工作,如果硬把它設置為方式下工作,如果硬把它設置為方式下工作,如果硬把它設置為方式3 3 3,則停止工作。,則停止工作。,則停止工作。,則停止工作。,則停止工作。,則停止工作。T0在方式在方式3時時T1的工作模式的工作模式(c)T1(c)T1(c)T1方式方式方式方式方式方式2 2 2定時器定時器定時器/ / /計數器的功能和工作模式的選擇是由工作模式控制寄存器計數器的功能和工作模式的選擇是由工作模式控制寄存器計數器的功能和工作模式的選

31、擇是由工作模式控制寄存器TMODTMODTMOD和定和定和定時器控制寄存器時器控制寄存器時器控制寄存器TCONTCONTCON來控制的。來控制的。來控制的。 工作模式控制寄存器工作模式控制寄存器工作模式控制寄存器TMODTMODTMOD示意圖示意圖示意圖 定時器控制寄存器定時器控制寄存器定時器控制寄存器TCONTCONTCON示意圖示意圖示意圖 4 4 4種工作模式的特點種工作模式的特點種工作模式的特點1 1 1最大定時時間不同(采用最大定時時間不同(采用最大定時時間不同(采用12MHz12MHz12MHz的晶體)的晶體)的晶體)模式模式模式0 0 0(131313位)時:位)時:位)時:TM

32、AX=8192TMAX=8192TMAX=8192 s= 8.192mss= 8.192mss= 8.192ms。模式模式模式1 1 1(161616位)時:位)時:位)時:TMAX=65536TMAX=65536TMAX=65536 s= 65.536mss= 65.536mss= 65.536ms。模式模式模式2 2 2和和和3 3 3(兩個(兩個(兩個8 8 8位)時:位)時:位)時:TMAX=256TMAX=256TMAX=256 s= 0.256mss= 0.256mss= 0.256ms。2 2 2加載方式不同加載方式不同加載方式不同 模式模式模式0 0 0和模式和模式和模式1 1

33、 1的最大特點是計數溢出后,計數器全為的最大特點是計數溢出后,計數器全為的最大特點是計數溢出后,計數器全為0 0 0,因此,循環定時或,因此,循環定時或,因此,循環定時或計數時就要反復設置計數初值;模式計數時就要反復設置計數初值;模式計數時就要反復設置計數初值;模式2 2 2可以自動加載計數初值;模式可以自動加載計數初值;模式可以自動加載計數初值;模式3 3 3適合適合適合用于串行口數據傳輸率發生器。用于串行口數據傳輸率發生器。用于串行口數據傳輸率發生器。小小小小小小 結結結結結結任意定時以及計數的方法:任意定時以及計數的方法: 我們采用預置數的辦法,我要計100,那我就先放進65436,再來

34、100個脈沖,就到了65536了。定時也是如此,每個脈沖是1微秒,則計滿65536個脈沖需時65.536毫秒,但現在我只要10毫秒就能了,怎么辦?10個毫秒為10000個微秒,所以,只要在計數器里面放進55536就可以了。 以定時器T0在方式1下定時0.95ms為例,先將65536s-950s=64586s換成十六進制數FC4AH,然后將此數的高位FC裝入TH0;再將此數的低位4A裝入TL0。再進行計數就可以了。 還有一種簡便計算方法,即將設計時初始值直接代入表中所提供的公式里,如使用定時器T0在模式0下定時1000s,設計初始值為1000,將1000分兩次代入公式即可。定時計數器的初始化定時

35、計數器的初始化定時計數器的初始化定時計數器的初始化定時計數器的初始化定時計數器的初始化 在使用定時器在使用定時器在使用定時器在使用定時器在使用定時器在使用定時器/ / /計數器前,應首先對其進行初始化編程。計數器前,應首先對其進行初始化編程。計數器前,應首先對其進行初始化編程。計數器前,應首先對其進行初始化編程。計數器前,應首先對其進行初始化編程。計數器前,應首先對其進行初始化編程。一、定時器的初始化步驟一、定時器的初始化步驟一、定時器的初始化步驟一、定時器的初始化步驟一、定時器的初始化步驟一、定時器的初始化步驟1 1 1、設置、設置、設置、設置、設置、設置TMODTMODTMOD。選擇工作模

36、式和工作方式。選擇工作模式和工作方式。選擇工作模式和工作方式。選擇工作模式和工作方式。選擇工作模式和工作方式。選擇工作模式和工作方式。2 2 2、設置定時器的計數初值、設置定時器的計數初值、設置定時器的計數初值、設置定時器的計數初值、設置定時器的計數初值、設置定時器的計數初值。將初值寫入。將初值寫入。將初值寫入。將初值寫入。將初值寫入。將初值寫入TH0TH0TH0和和和和和和TL0TL0TL0或或或或或或TH1TH1TH1、TL1TL1TL1。3 3 3、如果需要中斷,設置中斷允許寄存器、如果需要中斷,設置中斷允許寄存器、如果需要中斷,設置中斷允許寄存器、如果需要中斷,設置中斷允許寄存器、如果

37、需要中斷,設置中斷允許寄存器、如果需要中斷,設置中斷允許寄存器IEIEIE。4 4 4、設置、設置、設置、設置、設置、設置TCONTCONTCON,啟動定時器,啟動定時器,啟動定時器,啟動定時器,啟動定時器,啟動定時器。 可以使用位操作指令。例如:可以使用位操作指令。例如:可以使用位操作指令。例如:可以使用位操作指令。例如:可以使用位操作指令。例如:可以使用位操作指令。例如:SETB SETB SETB TRxTRxTRx。使用定時器工作之前,先寫入方式、控制寄存器,確定好使用定時器工作之前,先寫入方式、控制寄存器,確定好使用定時器工作之前,先寫入方式、控制寄存器,確定好使用定時器工作之前,先

38、寫入方式、控制寄存器,確定好使用定時器工作之前,先寫入方式、控制寄存器,確定好使用定時器工作之前,先寫入方式、控制寄存器,確定好定時器工作方式:定時器工作方式:定時器工作方式:定時器工作方式:定時器工作方式:定時器工作方式:GATEC/TM1M0GATEC/TM1M0 MOV TMODMOV TMODMOV TMOD,# # # 方式字方式字方式字方式字方式字方式字; ; ;啟動方式選擇啟動方式選擇啟動方式選擇啟動方式選擇啟動方式選擇啟動方式選擇(內外共同啟動(內外共同啟動(內外共同啟動(內外共同啟動(內外共同啟動(內外共同啟動/ / / / / /內啟動)內啟動)內啟動)內啟動)內啟動)內啟

39、動) 功能選擇功能選擇功能選擇功能選擇功能選擇功能選擇(計數(計數(計數(計數(計數(計數/ / / / / /定時)定時)定時)定時)定時)定時) 位數選擇位數選擇位數選擇位數選擇位數選擇位數選擇 (8/13/168/13/168/13/168/13/168/13/168/13/16位)位)位)位)位)位) MOV MOV MOV THxTHxTHx,#X#X#XH H H;計算時間常數計算時間常數計算時間常數計算時間常數計算時間常數計算時間常數X X X X X X,MOV MOV MOV TLxTLxTLx,#X#X#XL L L ;TxTxTx時間常數初值裝入數據寄存器時間常數初值裝入

40、數據寄存器時間常數初值裝入數據寄存器時間常數初值裝入數據寄存器時間常數初值裝入數據寄存器時間常數初值裝入數據寄存器 , (SETB EA(SETB EA(SETB EA) ) ) ;開;開;開;開;開;開TxTxTx中斷中斷中斷中斷中斷中斷(SETB (SETB (SETB ETxETxETx) ) ) SETB SETB SETB TRxTRxTRx ;啟動控制;啟動控制;啟動控制;啟動控制;啟動控制;啟動控制TxTxTxTxTxTx定時器(啟動定時器(啟動定時器(啟動定時器(啟動定時器(啟動定時器(啟動/ / / / / /停止)停止)停止)停止)停止)停止)定時器初始化編程定時器初始化編

41、程定時器初始化編程定時器初始化編程定時器初始化編程定時器初始化編程:在主程序中進行:在主程序中進行:在主程序中進行:在主程序中進行:在主程序中進行:在主程序中進行二、定時器二、定時器/計數器初值計算計數器初值計算 定時器定時器/計數器的模式和方式不同,計數初值也將不同。計數器的模式和方式不同,計數初值也將不同。計數器的長度為計數器的長度為n,則計數的最大值為,則計數的最大值為2n 。1、工作于定時方式、工作于定時方式計數脈沖由內部的時鐘提供,每個機器周期進行加計數脈沖由內部的時鐘提供,每個機器周期進行加1。設晶振頻率為設晶振頻率為fosc,則計數脈沖的頻率為,則計數脈沖的頻率為fosc/12,

42、計數脈沖周期,計數脈沖周期T=1/(fosc/12)。)。如果進行定時時間為如果進行定時時間為t,計數初值為,計數初值為X,則:,則:初值X = 2n - t fosc/12 2、工作于計數方式、工作于計數方式 當工作在計數方式時,對外部脈沖計數。利用計數器計數結束當工作在計數方式時,對外部脈沖計數。利用計數器計數結束產生溢出的特性,來計算初值產生溢出的特性,來計算初值X 。則有:。則有:X= 2n計數次數計數次數上節練習與回顧上節練習與回顧1、下面哪一種僅適用于定時器 T0( ) A.方式 0 B.方式 1 C.方式 2 D.方式 32、若 51 單片機的晶振頻率是 24MHz,則其內部定時

43、器/計數器利用計數器對 外部輸入脈沖的最高計數頻率是( ) A.1MHz B. 6MHz C. 12MHz D. 24MHz3、8031定時/計數器是否計滿可采用等待中斷的方法進行處理,也可通過對( )的查詢方法進行判斷。 AOV標志 BCY標志 C中斷標志 D奇偶標志4、在下列寄存器中,與定時/計數控制無關的是 ( ) A、TCON(定時控制寄存器) B、TMOD(工作方式控制寄存器)C、SCON(串行控制寄存器) D、IE(中斷允許控制寄存器)答:有四種工作模式:模式答:有四種工作模式:模式0,模式,模式1,模式,模式2,模式,模式3 (1) 模式模式0:選擇定時器的高:選擇定時器的高8位

44、和低位和低5位組成一個位組成一個13位定時器位定時器/計數器。計數器。TL低低5位溢出時向位溢出時向TH進位,進位,TH溢出時向中斷標志位溢出時向中斷標志位TF進位,并申請中斷。進位,并申請中斷。 定時時間定時時間t=(213-初值初值)振蕩周期振蕩周期12;計數長度位;計數長度位213=8192個外部脈沖個外部脈沖 (2) 模式模式1:與模式:與模式0的唯一差別是寄存器的唯一差別是寄存器TH和和TL以全部以全部16位參與操作。定時時間位參與操作。定時時間t=(216-初值初值)振蕩周期振蕩周期12;計數長度位;計數長度位216=65536個外部脈沖個外部脈沖 (3) 模式模式2:把:把TL0

45、和和TL1配置成一個自動重裝載的配置成一個自動重裝載的8位定時器位定時器/計數器。計數器。TL用作用作8位計數位計數器,器,TH用以保存初值。用以保存初值。TL計數溢出時不僅使計數溢出時不僅使TF0置置1,而且還自動將,而且還自動將TH中的內容重新中的內容重新裝載到裝載到TL中。中。 定時時間定時時間t=( -初值初值)振蕩周期振蕩周期12;計數長度位;計數長度位 =256個外部脈沖個外部脈沖 (4) 模式模式3:對:對T0和和T1不大相同不大相同 若設若設T0位模式位模式3,TL0和和TH0被分為兩個相互獨立的被分為兩個相互獨立的8位位計數器。計數器。TL0為為8位計數器,功能與模式位計數器

46、,功能與模式0和模式和模式1相同,可定時可計數。相同,可定時可計數。 TH0僅用作僅用作簡單的內部定時功能,它占用了定時器簡單的內部定時功能,它占用了定時器T1的控制位的控制位TR1和中斷標志位和中斷標志位TF1,啟動和關,啟動和關閉僅受閉僅受TR1控制。控制。 定時器定時器T1無工作模式無工作模式3,但,但T0在工作模式在工作模式3時時T1仍可設置為仍可設置為02。 5 5 5、89C5189C5189C51定時器有哪幾種工作模式?有何區別?定時器有哪幾種工作模式?有何區別?定時器有哪幾種工作模式?有何區別?定時器有哪幾種工作模式?有何區別?定時器有哪幾種工作模式?有何區別?定時器有哪幾種工

47、作模式?有何區別?6、根據定時器、根據定時器/計數器計數器0方式方式1邏輯結構圖,分析門控位邏輯結構圖,分析門控位GATE取不同取不同值時,啟動定時器的工作過程。值時,啟動定時器的工作過程。答:答:當GATE=0:軟件啟動定時器,即用指令使TCON中的TR0置1即可啟動定時器0。GATE=1:軟件和硬件共同啟動定時器,即用指令使TCON中的TR0置1時,只有外部中斷INT0引腳輸入高電平時才能啟動定時器0。7、單片機、單片機8031的時鐘頻率為的時鐘頻率為6MHz,若要求定時值分別為若要求定時值分別為0.1ms,1ms,10ms,定時器定時器0工作在模式工作在模式0、模式、模式1和模式和模式2

48、時,其時,其定時器初值各應是多少?定時器初值各應是多少? 解: (1) 0.1ms 模式0: T0低5位01110B=0EH T0高8位:11111110B=FEH 模式1:模式2: (2) 1ms 模式0: T0低5位01100B=0CH T0高8位:11110000B=F0H 模式1: 模式2: 在此情況下最長定時為512s,無法一次實現定時1ms,可用0.1ms循環10次 (3) 10ms 模式0: T0低5位11000B=18H T0高8位:01100011B=63H 模式1: 模式2:在此情況下最長定時為512s,無法一次實現定時10ms,可用0.1ms循環100次8、3、設、設MC

49、S-51單片機單片機fosc=12MHz,要求,要求T0定時定時150s,分別計算采用定時方式,分別計算采用定時方式0、方式、方式1和方式和方式2時的定時初值時的定時初值。答:答:方式0的定時初值:IF6AH方式1的定時初值:FF6AH方式2的定時初值:6AH9、 設設MCS-51單片機單片機fosc=6MHz,問單片機處于不同的,問單片機處于不同的工作方式時,最大定時范圍是多少?工作方式時,最大定時范圍是多少?答:答:方式0的最大定時范圍:131,072s方式1的最大定時范圍:16,384s方式2的最大定時范圍:512s例例1 設單片機的振蕩頻率為設單片機的振蕩頻率為12MHz,用定時器,用

50、定時器/計數器計數器0的的模式模式1編程,在編程,在P1.0引腳產生一個周期為引腳產生一個周期為1000s的方波,定時的方波,定時器器T0采用中斷的處理方式。采用中斷的處理方式。定時器的分析過程。定時器的分析過程。工作方式選擇工作方式選擇 需要產生周期信號時,選擇定時方式。定時時間到了對輸需要產生周期信號時,選擇定時方式。定時時間到了對輸出端進行周期性的輸出即可。出端進行周期性的輸出即可。 工作模式選擇工作模式選擇 根據定時時間長短選擇工作模式。根據定時時間長短選擇工作模式。 首選模式首選模式2,可以省略重裝初值操作。,可以省略重裝初值操作。定時器的應用舉例定時器的應用舉例定時器的應用舉例定時

51、器的應用舉例定時器的應用舉例定時器的應用舉例 定時時間計算:定時時間計算:周期為周期為1000s的方波要求定時器的定的方波要求定時器的定時時間為時時間為500s,每次溢出時,將,每次溢出時,將P1.0引腳的輸出取反,引腳的輸出取反,就可以在就可以在P1.0上產生所需要的方波。上產生所需要的方波。 定時初值計算:定時初值計算: 振蕩頻率為振蕩頻率為12MHz,則機器周期為,則機器周期為1s。 設定時初值為設定時初值為X,(65536-X)1s=500s X=65036=0FE0CH定時器的初值為:定時器的初值為:TH0=0FEH,TL0=0CH C語言程序語言程序:#include /包含特殊功

52、能寄存器庫包含特殊功能寄存器庫sbit P1_0=P10; /進行位定義進行位定義void main( )TMOD=0 x01; /T0做定時器,工作在模式做定時器,工作在模式1TL0=0 x0c;TH0=0 xfe;/設置定時器的初值設置定時器的初值 ET0=1;/允許允許T0中斷中斷 EA=1; /開中斷開中斷 TR0=1; /啟動定時器啟動定時器 while(1); /等待中斷等待中斷 void time0_int(void) interrupt 1/中斷服務程序中斷服務程序TL0=0 x0c;TH0=0 xfe;/定時器重賦初值定時器重賦初值P1_0=P1_0;/P1.0取反,輸出方波

53、取反,輸出方波 匯編語言程序匯編語言程序:ORG0000HSJMPMAINORG000BHLJMPTIME0MAIN:MOV TMOD,#01H;T0定時,模式定時,模式1MOVTL0,#0CH;置定時初值;置定時初值MOVTH0,#0FEH SETBET0;定時器;定時器T0開中斷開中斷SETBEA;CPU開中斷開中斷SETBTR0;啟動定時器;啟動定時器T0SJMP$;等待定時器溢出;等待定時器溢出TIME0: MOV TL0,#0CH ;中斷服務程序中斷服務程序MOVTH0,#0FEH;重裝定時初值;重裝定時初值CPLP1.0;P1.0取反,輸出方波取反,輸出方波RETI;中斷返回;中斷

54、返回END例例2 設單片機的振蕩頻率為設單片機的振蕩頻率為12MHz,用定時器,用定時器/計數器計數器0編程實現編程實現從從P1.0輸出周期為輸出周期為500s的方波。的方波。分析:分析:定時時間:定時時間:從從P1.0輸出周期為輸出周期為500s的方波。定時的方波。定時250s,定時結束對定時結束對P1.0取反。取反。 模式選擇模式選擇:當系統時鐘頻率為:當系統時鐘頻率為12MHz,機器周期為,機器周期為1s,定,定時器時器/計數器計數器0可以選擇模式可以選擇模式0、模式、模式1和模式和模式2。模式。模式2最大的定時時最大的定時時間為間為256s,滿足,滿足250s的定時要求,選擇模式的定時

55、要求,選擇模式2(1)定時初值計算)定時初值計算 (256-X)1s=250s X=6;則則TH0=TL0=6采用中斷處理方式的程序采用中斷處理方式的程序 :C語言程序語言程序 :# include /包含特殊功能寄存器庫包含特殊功能寄存器庫sbit P1_0=P10; voidmain( )TMOD=0 x02;/選擇定時器的工作模式選擇定時器的工作模式TL0=0 x06;TH0=0 x06;/為定時器賦初值為定時器賦初值 ET0=1;/允許定時允許定時0中斷中斷 EA=1;TR0=1;/啟動定時器啟動定時器0while(1);/等待中斷等待中斷void time0_int(void) in

56、terrupt 1 P1_0=P1_0;匯編語言程序匯編語言程序:ORG0000HLJMPMAIN ORG000BH;中斷處理程序;中斷處理程序CPLP1.0RETIORG 0030H;主程序;主程序MAIN:MOV TMOD,#02H MOV TL0,#06HMOV TH0,#06HSETB ET0;允許定時器;允許定時器0中斷中斷SETB EA;允許;允許CPU中斷中斷SETB TR0;啟動定時器;啟動定時器0SJMP $;等待中斷;等待中斷END采用查詢方式處理的程序:采用查詢方式處理的程序:C語言程序:語言程序:# include /特殊功能寄存器庫特殊功能寄存器庫sbitP1_0=P

57、10;void main()TMOD=0 x02;TL0=0 x06;TH0=0 x06; TR0=1;while (1)while(!TF0) ;/查詢計數溢出查詢計數溢出 TF0=0;P1_0=P1_0;匯編語言程序匯編語言程序:MAIN:MOV TMOD,#02H;主程序;主程序MOVTL0,#06HMOVTH0,#06HSETBTR0LOOP:JNBTF0,$;查詢計數溢出;查詢計數溢出CLRTF0CPLP1.0 SJMPLOOPEND門控位的應用門控位的應用 門控位門控位GATE為為1時,時,TRx=1,INTx=1才能啟動定時器。利才能啟動定時器。利用這個特性可以測量外部輸入脈沖的

58、寬度。用這個特性可以測量外部輸入脈沖的寬度。例例3 利用利用T0門控位測試門控位測試 INT0引腳上出現的正脈沖寬度,已知引腳上出現的正脈沖寬度,已知晶振頻率為晶振頻率為12MHz,將所測得值最高位存入片內,將所測得值最高位存入片內71H單元,單元,低位存入低位存入70H單元。單元。解:設外部脈沖解:設外部脈沖 由由(P3.2)輸入,輸入,T0工作于定時方式工作于定時方式 1 (16位計數位計數),GATE設為設為1。測試時,應在。測試時,應在INT0 低電平時,低電平時,設置設置TR0為為1(16位計數位計數);當;當INT0 變為高電平時,就啟動計變為高電平時,就啟動計數;數; 再次變低時

59、,停止計數。此計數值與機器周期的乘積即再次變低時,停止計數。此計數值與機器周期的乘積即為被測正脈沖的寬度。因為被測正脈沖的寬度。因fosc=12MHZ,機器周期為,機器周期為1us,測,測試過程如下。試過程如下。源程序如下:源程序如下: MOV TMOD,#09H ; 設設T0為方式為方式1 MOV TL0,#00H ;設計初值取最大值;設計初值取最大值 MOV TH0,#00H MOV R0,#70H JB P3.2, $ ;等;等P3.2(INT0 )變低變低 SETB TR0 ;啟動;啟動T0準備工作準備工作 JNB P3.2, $ ;等待;等待P3.2(INT0 ) JB P3.2,$

60、 ; 等待等待P3.2(INT0 ) CLR TR0 ;停止計數停止計數T0T0T0從從從從從從0 0 0開始計數開始計數開始計數開始計數開始計數開始計數INT0INT0INT0INT0INT0INT0 09H (TMOD)09H (TMOD)09H (TMOD) 1 TR0 1 TR0 1 TR0 0 TR00 TR00 TR0T0T0T0停止計數停止計數停止計數停止計數停止計數停止計數 MOV R0,TL0 ;存放結果;存放結果 INC R0 MOV R0,TH0 SJMP $ 讀者不難編出讀者不難編出C語言程序。語言程序。這種方案被測脈沖的寬度最大為這種方案被測脈沖的寬度最大為65535

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論