第六章AT89S51單片機的定時器_第1頁
第六章AT89S51單片機的定時器_第2頁
第六章AT89S51單片機的定時器_第3頁
第六章AT89S51單片機的定時器_第4頁
第六章AT89S51單片機的定時器_第5頁
已閱讀5頁,還剩43頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、1第六章第六章 AT89S51AT89S51單片機的定時器單片機的定時器/ /計數器計數器2本章主要內容:本章主要內容:6-1.定時器概述定時器概述6-2.定時器的控制定時器的控制6-3.定時器的定時器的4種模式及其應用種模式及其應用6-4.定時器定時器/計數器綜合應用舉例計數器綜合應用舉例 36.1 定時器概述定時器概述 AT89S51 AT89S51單片機有單片機有2 2個個1616位的可編程定時位的可編程定時器器/ /計數器,稱為定時器計數器,稱為定時器/ /計數器計數器0 0和定時器和定時器/ /計數器計數器1 1,分別由兩個,分別由兩個8 8位的特殊功能寄存器位的特殊功能寄存器TH0

2、TH0、TL0TL0和和TH1TH1、TL1TL1組成。組成。4用于定時控制、延時、外部事件計數和檢測用于定時控制、延時、外部事件計數和檢測等場合。等場合。每個定時器可由軟件設置為定時工作方式或每個定時器可由軟件設置為定時工作方式或技術工作方式及其它靈活的可控功能方式,技術工作方式及其它靈活的可控功能方式,這些功能由這些功能由TMODTMOD和和TCONTCON所控制。所控制。5定時器定時器/ /計數器的結構和工作原理計數器的結構和工作原理 定時器定時器/ /計數器的結構計數器的結構 定時器定時器/ /計數器的實質是加計數器的實質是加1 1計數器(計數器(1616位),由高位),由高8 8位和

3、低位和低8 8位兩個寄存位兩個寄存器組成。器組成。TMODTMOD是定時器是定時器/ /計數器的工作方式寄存器,確定工作方式和功能;計數器的工作方式寄存器,確定工作方式和功能;TCONTCON是控制寄存器,控制是控制寄存器,控制T0T0、T1T1的啟動和停止及設置溢出標志。的啟動和停止及設置溢出標志。T1T1計數器計數器T0T0計數器計數器控制單元控制單元6計數器工作原理計數器工作原理 所謂計數是指所謂計數是指對外部事件進行計數對外部事件進行計數。外部事件的發。外部事件的發生以輸入脈沖表示,因此計數功能的實質就是對外生以輸入脈沖表示,因此計數功能的實質就是對外來脈沖的計數。來脈沖的計數。 AT

4、89S51芯片的信號引腳芯片的信號引腳T0(P3.4)和)和T1(P3.5)分)分別是兩個計數器的計數輸入端。外部輸入的脈沖在別是兩個計數器的計數輸入端。外部輸入的脈沖在負跳變時有效負跳變時有效,供計數器進行加,供計數器進行加 1 計數。計數。7計數器工作原理計數器工作原理計數器輸入的計數脈沖源計數器輸入的計數脈沖源 系統的時鐘占當期輸出脈沖經12分頻后產生,通過T0或T1引腳對外部脈沖信號計數。計數過程計數過程 每來一個脈沖計數器加1,當加到計數器為全1(即FFFFH)時,再輸入一個脈沖就使計數器回零,且計數器的溢出使TCON中TF0或TF1置1,向CPU發出中斷請求(定時器/計數器中斷允許

5、時)。如果定時器/計數器工作于定時模式,則表示定時時間已到;如果工作于計數模式,則表示計數值已滿。8計數器工作原理計數器工作原理 計數方式下,單片機在每個機器周期的計數方式下,單片機在每個機器周期的S5P2對計對計數脈沖輸入引腳進行采樣。如果前一個機器周期數脈沖輸入引腳進行采樣。如果前一個機器周期為高電平,后一個機器周期為低電平,即為一個為高電平,后一個機器周期為低電平,即為一個有效的計數脈沖,在下一個機器周期的有效的計數脈沖,在下一個機器周期的S3P1進行進行計數。由于采樣計數脈沖是在計數。由于采樣計數脈沖是在2個機器周期完成的,個機器周期完成的,所以所以計數脈沖的周期不能小于計數脈沖的周期

6、不能小于2個機器周期個機器周期。9定時器工作原理定時器工作原理 定時功能是通過定時功能是通過對單片機內部脈沖進行計數來實對單片機內部脈沖進行計數來實現的現的。即每個機器周期產生。即每個機器周期產生1個計數脈沖,使計數個計數脈沖,使計數器加器加 1。 在使用定時器時,既可以根據計數值計算定時時在使用定時器時,既可以根據計數值計算定時時間,也可以根據定時時間的要求計算出計數器的間,也可以根據定時時間的要求計算出計數器的預置值。預置值。10定時與計數都是利定時與計數都是利用計數實現!用計數實現!l 加法計數器是計滿溢出時才申請中斷,所以在給計數加法計數器是計滿溢出時才申請中斷,所以在給計數器賦初值時

7、,不能直接輸入所需的計數值,而應輸入器賦初值時,不能直接輸入所需的計數值,而應輸入的是計數器計數的最大值與這一計數值的差值。的是計數器計數的最大值與這一計數值的差值。l 設最大值為設最大值為M,計數值為,計數值為N,初值為,初值為X,則,則X的計算方的計算方法為法為: 1162.1 工作模式寄存器:工作模式寄存器:TMOD字節地址:字節地址:89H (不可位尋址)(不可位尋址)定時器定時器/計數器計數器 1定時器定時器/計數器計數器 0l 功能:功能:用于設定定時器用于設定定時器/計數器的工作方式(只能用字節計數器的工作方式(只能用字節傳送指令設置其內容)傳送指令設置其內容)l TMOD的低半

8、字節對應定時器的低半字節對應定時器/計數器計數器 0,高半字節對應,高半字節對應定時器定時器/計數器計數器 1,前后半字節的位格式完全對應。,前后半字節的位格式完全對應。6.2 6.2 定時器的控制定時器的控制12lM1和和M0:工作方式選擇位:工作方式選擇位13lC/T :定時方式或計數方式選擇位:定時方式或計數方式選擇位 C/T = 0 定時工作方式定時工作方式 C/T = 1 計數工作方式計數工作方式lGATE: 門控位門控位 GATE=0 以運行控制位(以運行控制位(TR0或或TR1)啟動定時器)啟動定時器 GATE=1 以外部中斷請求信號(以外部中斷請求信號(INT0 或或INT1)

9、啟)啟動定時器動定時器146.2.2定時器定時器/計數器控制寄存器:計數器控制寄存器:TCON字節地址:字節地址:88H 位地址:位地址:88H 8FH (可位尋址)(可位尋址)l 功能:功能:用于保存外部中斷請求以及定時器的計數溢出。用于保存外部中斷請求以及定時器的計數溢出。l TCON既有定時器既有定時器/計數器的控制功能,又有中斷控制計數器的控制功能,又有中斷控制功能,其中與定時有關的控制位共功能,其中與定時有關的控制位共4位:位:TF1、TR1、TF0、TR0。15l TF0和和TF1:計數溢出標志位:計數溢出標志位 當計數器產生計數溢出時,相應的溢出標志位由當計數器產生計數溢出時,相

10、應的溢出標志位由硬硬件置件置“1”。 計數溢出標志位的使用有兩種情況:計數溢出標志位的使用有兩種情況: 使用中斷方式時,作中斷請求標志位來使用,在使用中斷方式時,作中斷請求標志位來使用,在轉轉向中斷服務程序時由硬件自動清向中斷服務程序時由硬件自動清“0”。 使用查詢方式時,作查詢狀態位來使用,使用查詢方式時,作查詢狀態位來使用,查詢有效查詢有效后應以軟件方法及時將該位清后應以軟件方法及時將該位清“0”16lTR0和和TR1:運行控制位(軟件置:運行控制位(軟件置1或清或清0) TR0(TR1)=0 停止定時器停止定時器/計數器工作計數器工作 TR0(TR1)=1 啟動定時器啟動定時器/計數器工

11、作計數器工作17中斷允許控制寄存器:中斷允許控制寄存器:IE字節地址:字節地址:0A8H 位地址:位地址:0A8H 0AFH其中與定時器其中與定時器/計數器有關的控制位共計數器有關的控制位共3位:位:l EA:中斷允許總控制位:中斷允許總控制位l ET0和和ET1:定時器:定時器/計數器中斷允許控制位計數器中斷允許控制位 ET0(ET1)=0禁止定時器禁止定時器/計數器中斷計數器中斷 ET0(ET1)=1允許定時器允許定時器/計數器中斷計數器中斷186.3 6.3 定時器的定時器的4 4種模式及應用種模式及應用計數器工作方式選擇計數器工作方式選擇建議不采用該工建議不采用該工作方式!作方式!在精

12、確定時采用在精確定時采用該工作方式!該工作方式!19模式模式0模式模式0為為13位計數,由位計數,由TL0的低的低5位(高位(高3位未用)和位未用)和TH0的的8位組成位組成TL0的低的低5位溢出時向位溢出時向TH0進位,進位,TH0溢出時,置位溢出時,置位TCON中的中的TF0標志,標志,向向CPU發出中斷請求。發出中斷請求。1313位計數器位計數器計數計數/ /定時選擇定時選擇中斷請求中斷請求該方式計算不方便,該方式計算不方便,建議不采用!建議不采用!20TF1TR1TF0TR0GATEC/TM1M0GATEC/TM1M01&110T0引腳INT0引腳10機器周期TH0TL08位8位溢出T

13、CONTMODD0D7D7D0申請中斷TF1TR1TF0TR0GATEC/TM1M0GATEC/TM1M01&110T0引腳INT0引腳10機器周期TH0TL08位8位溢出TCONTMODD0D7D7D0申請中斷6.3.1 模式模式1及應用及應用 模式模式1的計數位數是的計數位數是16位,由位,由TL0(TL1)作為低作為低8位、位、TH0(TH1)作為高作為高8位,組成了位,組成了16位加位加1計數器計數器 。 1616位計數器位計數器21例例6-16-1 用定時器T1產生一個50Hz的方波,由P1.1輸出。 方波周期為T=1/50=0.02s=20ms,用T1定時10ms,單片機采用12M

14、HZ晶振,一個機器周期是1us,即是計數器計數10000次。 TH1 = (65536-10000)/256; TL1 = (65536-10000)%256;注意定時器的初注意定時器的初值計算方法!值計算方法!22用查詢方式編程用查詢方式編程void main()void main() TMOD = 0 x10;/T1TMOD = 0 x10;/T1模式模式1,1,定時定時TR1 = 1; /TR1 = 1; /定時器開始計數定時器開始計數while(1)while(1) TH1 = (65536-10000)/256; TH1 = (65536-10000)/256; TL1 = (655

15、36-10000)%256; /TL1 = (65536-10000)%256; /裝入計數初值裝入計數初值while (TF1 != 1);while (TF1 != 1);TF1 = 0; /TF1 = 0; /清除清除T1T1溢出標志位溢出標志位P1_1 = P1_1;P1_1 = P1_1; 23用中斷方式編程用中斷方式編程初始化程序應該完成以下工作: 1.1.對對TMODTMOD賦值,以確定賦值,以確定T0T0和和T1T1的工作方式。的工作方式。 2.2.計算初值,并將其寫入計算初值,并將其寫入TH0TH0、TL0TL0或或TH1TH1、TL1TL1。 3.3.中斷方式時,則對中斷方

16、式時,則對IEIE賦值,開放中斷。賦值,開放中斷。 4.4.使使TR0TR0或或TR1TR1置位,啟動定時計數器。置位,啟動定時計數器。24程序流程:程序流程:開開 始始P1.1置置1T1模式設置模式設置T1初值設置初值設置(10ms)中斷設置中斷設置開中斷開中斷循環等待中斷循環等待中斷啟動定時器啟動定時器T1中斷入口中斷入口T1初值設置初值設置(10ms)中斷返回中斷返回P1.1取反取反主程序流程主程序流程中斷服務子程序流程中斷服務子程序流程25程序(主程序)程序(主程序)#include #define uchar unsigned char#define uint unsigned in

17、tsbit P1_1 = P11;void main()TMOD = 0 x10;/T1模式1,16位計數器TH1 = (65536-10000)/256; TL1 = (65536-10000)%256; /裝入計數初值EA = 1; /開總中斷ET1 = 1; /開定時器1中斷TR1 = 1; /定時器開始計數while(1);26程序(定時器程序(定時器1 1中斷服務程序)中斷服務程序)void timer1_int(void) interrupt 3TH0 = (65536-10000)/256;TL0 = (65536-10000)%256; /重新裝入計數初值P1_1 = P1_1

18、;27書上例題6.4.1如何控制LED閃爍時間注意:計算初值的思路。28書上例題6.4.2計數器的應用控制LED閃爍。29例題6-2 用單片機和內部定時器來產生矩形波,要求頻率為100Hz,占空比為0.25,設單片機的時鐘頻率為12MHz。占空比:占空比:在一串理想的脈沖周期序列中,在一串理想的脈沖周期序列中,正脈沖的持續時間與脈沖總周期的比值。正脈沖的持續時間與脈沖總周期的比值。 305.3.2 模式模式2及其應用及其應用模式模式2為自動重裝初值的為自動重裝初值的8位計數方式。位計數方式。 在模式在模式2下,當計數器計滿下,當計數器計滿255(FFH)溢出時,)溢出時,CPU自動把自動把TH

19、 的值裝入的值裝入TL中,不需用戶干預。因此特別適合于用作較精確的脈沖信號發生器。中,不需用戶干預。因此特別適合于用作較精確的脈沖信號發生器。 8 8位計數器位計數器TH1TH1重裝單元重裝單元31二、模式 2 工作特點 可以自動重新裝載的可以自動重新裝載的8 8位定時器位定時器/ /計數器。計數器。 在程序初始化時,在程序初始化時,TL0TL0和和TH0TH0由軟件賦予相同的初值。由軟件賦予相同的初值。 用于定時工作方式時,定時時間為:用于定時工作方式時,定時時間為:t=(2t=(28 8TH0TH0初值初值) )振蕩周期振蕩周期1212 用于計數工作方式時,計數長度最大為:用于計數工作方式

20、時,計數長度最大為:2 28 8=256=256個脈沖個脈沖 該模式可省去軟件中重裝常數的語句,并可產生相當精確該模式可省去軟件中重裝常數的語句,并可產生相當精確的定時時間,適合于作串行口波特率發生器。的定時時間,適合于作串行口波特率發生器。32例例6-36-3 當P3.4引腳上的電平發生負跳變時,從P1.0輸出一個500us的同步脈沖,請編程實現該功能。 方法1(只用T0) 按照查詢方式編程(請同學們自行編寫)。 選擇T0為模式2 電平發生負跳變采用外部計數方式。當P3.4引腳上發生負跳變時,T0計數器加1,溢出標志TF0置1,然后改變T0為500us定時方式,并使P1.0同步輸入一個500

21、us脈沖。 同步脈沖輸出后T0又恢復外部事件計數方式。33 方法2:計數用T0,采用查詢方式,定時用T1中斷,均采用模式2。 T0工作在外部事件計數方式,當計數達到0FFH時候,再加1計數器就會溢出。 T1工作在定時工作方式,設晶振頻率為6MHz,500s相當于250個機器周期。因此,初值X為 (256X)2s=500s X=6=06H34電路電路 用脈沖信號源模擬外部事件,用示波器對照顯示P3.4口的輸入和P1.0口的輸出,方波信號源的周期必須大于1000us即頻率小于1000HZ,這里我們為了清楚在示波器上進行對比,方波信號源發生頻率為500HZ。XTAL218XTAL119ALE30EA

22、31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT

23、89C52C122pFC222pFC310uFX1CRYSTALR910kABCDU1(P3.4/T0)35程序程序 主程序 設置T0,T1的模式; T0,T1裝入初值; T0開始計數; 判斷T0是否溢出,溢出后清溢出標志位。 P1.0清0 開T1開始計時 T1中斷 P1.0拉高 關T1 36例例6-46-4 利用定時器T1的模式2對外部信號計數。要求每計滿100次,將P1.0端取反。 外部信號由P3.5引腳輸入,每發生一個負跳變計數器加1,輸入100個脈沖后計數器發生溢出中斷。 TH1 = TL1 = 28-100 = 0 x9C ; 采用信號發生器產生周期為0.01s,頻率為100Hz的方

24、波信號,計數滿100次即耗時1s,P1.0口接一發光二極管,現象為發光二極管每隔一秒閃爍。37電路電路XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528

25、P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52C122pFC222pFC310uFX1CRYSTALR910kU1(P3.5/T1)D1LED-REDR1220386.3.3 模式模式3及應用及應用 方式方式3只適用于定時器只適用于定時器/計數器計數器T0,定時器,定時器T1方式方式3時相當時相當于于TR1=0,停止計數,停止計數。 工作方式工作方式3將將T0分成為兩個獨立的分成為兩個獨立的8位計數器位計數器TL0和和TH0 。 396.4 定時器/計數器綜合應用舉例 例6-5.以中斷方

26、式產生單片機秒、分脈沖發生器。為便于仿真,設計一能顯示分和秒的計時器。p20p20p21p22p23p24p25p26p21p22p23p24p25p26XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3

27、.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52C122pFC222pFC310uFX1CRYSTALR910k40#include #define uchar unsigned char#define uint unsigned intuchar m=0;uchar s=0;uchar i=0;uchar code smg =0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90;/0-9共陽

28、級段碼41分處理函數和秒處理函數分處理函數和秒處理函數/分鐘處理函數void Increase_Minute()if(+m 9) m=0;P3 = smgm;/秒處理函數void Increase_Second()if(+s 59)s = 0; Increase_Minute();P0 = smgs/10;P2 = smgs%10;42主函數主函數void main() TMOD = 0 x10;/T1模式1TH1 = (65536-50000)/256; TL1 = (65536-50000)%256; /裝入計數初值,12MHz晶振一次溢出為50msEA = 1; /開總中斷ET1 = 1

29、; /開定時器1中斷TR1 = 1; /定時器1開始計數P3=smg0;while(1);43定時器定時器1 1中斷程序中斷程序void timer1_int(void) interrupt 3TH1 = (65536-50000)/256; TL1 = (65536-50000)%256; /重新裝入計數初值i+;if(i=20) /50ms*20=1s時間到i = 0;Increase_Second();44 例6-6 演奏一段音階(共13個音符)要求音階演奏由定時器控制完成。XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2

30、/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51LS1SOUNDERC122pFC222pFC310uFX112MR110kD1DIODE45 例6-7 頻率測量,按下K1按鍵后,數碼管顯示出外部所接入的信號源頻率(外部信號源頻率取值為0-99HZ的整數)p20p21p22p23p24p25p26p20p21p22p23p24p25p26p27XTAL218

溫馨提示

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

評論

0/150

提交評論