




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第第6章章 AT89S51單片機的單片機的 定時器定時器/計數器計數器 u定時器定時器/計數器的結構計數器的結構u定時器定時器/計數器的計數器的4種工作方式種工作方式u對外部輸入的計數信號的要求對外部輸入的計數信號的要求u定時器定時器/計數器的編程和應用計數器的編程和應用1. 定時器定時器/ /計數器的結構計數器的結構u定時器定時器/計數器計數器T0由特殊功能寄存器由特殊功能寄存器TH0、TL0構成,定時器構成,定時器/計數器計數器T1由特殊功能寄存器由特殊功能寄存器TH1、TL1構成。構成。 AT89S51單片機的定時器單片機的定時器/計數器結構框圖計數器結構框圖u具有定時器和計數器具有定時
2、器和計數器2種工作模式種工作模式,4種工作方式種工作方式(方式方式0、方、方式式1、方式、方式2和方式和方式3)。)。uTMOD用于選擇定時器用于選擇定時器/計數器計數器T0、T1的工作模式和工作方的工作模式和工作方式。式。uTCON用于控制用于控制T0、T1的啟動和停止計數,包含了的啟動和停止計數,包含了T0、T1的的狀態(tài)。狀態(tài)。uT0、T1不論是工作在定時器模式還是計數器模式,都是對脈不論是工作在定時器模式還是計數器模式,都是對脈沖信號進行計數,只是計數信號的來源不同。沖信號進行計數,只是計數信號的來源不同。u計數器模式計數器模式是對加在是對加在T0(P3.4)和)和T1(P3.5)兩個引
3、腳上的)兩個引腳上的外部脈沖進行計數。外部脈沖進行計數。u定時器工作模式定時器工作模式是對單片機的時鐘振蕩器信號經片內是對單片機的時鐘振蕩器信號經片內12分頻分頻后的內部脈沖信號計數。由于時鐘頻率是定值,所以可后的內部脈沖信號計數。由于時鐘頻率是定值,所以可根據計根據計數值數值可可計算出定時時間計算出定時時間。u計數器的起始計數都是計數器的起始計數都是從計數器初值開始從計數器初值開始的。單片機復位時的。單片機復位時計數器的初值為計數器的初值為0,也可用指令給計數器裝入一個新的初值。,也可用指令給計數器裝入一個新的初值。AT89S51的定時器的定時器/計數器屬于增計數器屬于增1計數器。計數器。1
4、.1 工作方式控制寄存器工作方式控制寄存器TMODu用于選擇定時器用于選擇定時器/計數器的工作模式和工作方式,計數器的工作模式和工作方式,字節(jié)地址字節(jié)地址為為89H,不能位尋址。,不能位尋址。u8位分為兩組,位分為兩組,高高4位位控制控制T1,低低4位位控制控制T0。1)GATE門控位門控位。 0:僅由運行控制位僅由運行控制位TRx(x = 0,1)來控制定時器)來控制定時器/計數器運行。計數器運行。 1:用外中斷引腳(用外中斷引腳( 或或 )上的電平與運行控制位)上的電平與運行控制位TRx共同來共同來控制定時器控制定時器/計數器運行。計數器運行。2)M1、M0工作方式選擇位工作方式選擇位M1
5、、M0共有共有4種編碼種編碼,對應于,對應于4種工作方式種工作方式的選擇的選擇3)C/ 計數器模式和定時器模式選擇位計數器模式和定時器模式選擇位0:為定時器工作模式,對單片機的晶體振蕩器為定時器工作模式,對單片機的晶體振蕩器12分頻后的脈沖分頻后的脈沖進行計數。進行計數。1:為計數器工作模式,計數器對外部輸入引腳為計數器工作模式,計數器對外部輸入引腳T0(P3.4)或)或T1(P3.5)的外部脈沖(負跳變)計數。)的外部脈沖(負跳變)計數。T1.2 定時器定時器/計數器控制寄存器計數器控制寄存器TCONu字節(jié)地址為字節(jié)地址為88H,可位尋址,位地址為,可位尋址,位地址為88H8FH。1)TF1
6、、TF0計數溢出標志位。計數溢出標志位。當計數器計數溢出時,該位置當計數器計數溢出時,該位置“1”。使用查詢方式時,此位作為狀態(tài)位供使用查詢方式時,此位作為狀態(tài)位供CPU查詢,但應注意查詢查詢,但應注意查詢有效后,應使用軟件及時將該位清有效后,應使用軟件及時將該位清“0”。使用中斷方式時,此位作為中斷請求標志位,進入中斷服務程使用中斷方式時,此位作為中斷請求標志位,進入中斷服務程序后由硬件自動清序后由硬件自動清“0”。2)TR1、TR0計數運行控制位。計數運行控制位。TR1位(或位(或TR0位)位)= 1,啟動定時器,啟動定時器/計數器工作的必要條件。計數器工作的必要條件。TR1位(或位(或T
7、R0位)位) = 0,停止定時器,停止定時器/計數器工作。計數器工作。該位可由軟件置該位可由軟件置“1”或清或清“0”。2.1 方式方式0uM1、M0=00時,被設置為工作方式時,被設置為工作方式0。u13位位計數器,由計數器,由TLx(x = 0,1)低低5位位和和THx高高8位位構成。構成。TLx低低5位溢出則向位溢出則向THx進位,進位,THx計數溢出則把計數溢出則把TCON中的溢出標中的溢出標志位志位TFx置置“1”。uC/ 位位控制的電子開關決定了定時器控制的電子開關決定了定時器/計數器的兩種工作模式。計數器的兩種工作模式。1)C/ =0,電子開關打在上面位置,電子開關打在上面位置,
8、T1(或(或T0)為定時器工)為定時器工作模式,把時鐘振蕩器作模式,把時鐘振蕩器12分頻后的脈沖作為計數信號。分頻后的脈沖作為計數信號。2)C/ =1,電子開關打在下面位置,電子開關打在下面位置,T1(或(或T0)為計數器工)為計數器工作模式,計數脈沖為作模式,計數脈沖為P3.4(或(或P3.5)引腳上的外部輸入脈沖,)引腳上的外部輸入脈沖,當引腳上發(fā)生負跳變時,計數器加當引腳上發(fā)生負跳變時,計數器加1。TTTuGATE位狀態(tài)位狀態(tài)決定定時器決定定時器/計數器的運行控制取決計數器的運行控制取決TRx一個條一個條件件還是還是TRx和和 x(x = 0,1)引腳狀態(tài))引腳狀態(tài)兩個條件兩個條件。1)
9、 GATE = 0,A點電位恒為點電位恒為1,B點電位點電位僅取決于僅取決于TRx狀態(tài)狀態(tài)。TRx = 1,B點為高電平,控制端控制電子開關閉合,允許點為高電平,控制端控制電子開關閉合,允許T1(或(或T0)對脈沖計數。)對脈沖計數。TRx = 0,B點為低電平,電子開關斷開,點為低電平,電子開關斷開,禁止禁止T1(或(或T0)計數。)計數。2) GATE = 1,B點電位由點電位由 (x = 0,1)的輸入電平和)的輸入電平和TRx的狀態(tài)這兩個條件來確定。當的狀態(tài)這兩個條件來確定。當TRx = 1,且,且 =1時,時,B點才點才為為1,控制端控制電子開關閉合,允許,控制端控制電子開關閉合,允
10、許T1(或(或T0)計數。故這)計數。故這種情況下計數器是否計數是由種情況下計數器是否計數是由TRx和和 兩個條件兩個條件來共同控制來共同控制的。的。INTINTxINTxINTx2.2 方式方式1u當當M1、M0=01時,定時器時,定時器/計數器工作于計數器工作于方式方式1。u方式方式1為為16位計數器位計數器,由,由THx高高8位和位和TLx低低8位構成(位構成(x = 0,1),),有關控制狀態(tài)位的含義(有關控制狀態(tài)位的含義(GATE、C/ 、TFx、TRx)與方式)與方式0相相同。同。T2.3 方式方式2u方式方式0和方式和方式1的最大特點是計數溢出后,計數器為全的最大特點是計數溢出后
11、,計數器為全0。因此。因此在循環(huán)定時或循環(huán)計數應用時就在循環(huán)定時或循環(huán)計數應用時就存在用指令反復裝入計數初值存在用指令反復裝入計數初值的的問題問題。這不僅影響定時精度,也給程序設計帶來麻煩。這不僅影響定時精度,也給程序設計帶來麻煩。u方式方式2就是針對此問題而設置的。就是針對此問題而設置的。u當當M1、M0為為10時,定時器時,定時器/計數器處于工作方式計數器處于工作方式2。u定時器定時器/計數器的計數器的方式方式2為自動恢復初值為自動恢復初值(初值自動裝入)的(初值自動裝入)的8位位定時器定時器/計數器計數器。uTLx(x = 0,1)作為常數緩沖器,當)作為常數緩沖器,當TLx計數溢出時,
12、在溢出計數溢出時,在溢出標志標志TFx置置“1”的同時,還的同時,還自動將自動將THx中的初值送至中的初值送至TLx,使,使TLx從初值開始重新計數。從初值開始重新計數。方式方式2工作過程工作過程u該方式可省去用戶軟件中重裝初值的該方式可省去用戶軟件中重裝初值的指令執(zhí)行時間,簡化定時初值的計算方指令執(zhí)行時間,簡化定時初值的計算方法,可以法,可以相當精確地確定相當精確地確定定時時間定時時間。2.4 方式方式3為為增加一個增加一個8位定時器位定時器/計數器計數器而設,使而設,使AT89S51單片機具有單片機具有3個個定時器定時器/計數器。計數器。方式方式3只適用于只適用于T0,T1不能工作在方式不
13、能工作在方式3。T1處于方式處于方式3時相當時相當于于TR1= 0,停止計數(此時,停止計數(此時T1可用來作為串行口波特率產生器)??捎脕碜鳛榇锌诓ㄌ芈十a生器)。1工作方式工作方式3下的下的T0TMOD的低的低2位為位為11時,時,T0的工作方式被選為方式的工作方式被選為方式3。定時器定時器/計數器計數器T0分為兩個獨立的分為兩個獨立的8位計數器位計數器TL0和和TH0,TL0使用使用T0的狀態(tài)控制位的狀態(tài)控制位C/ 、GATE、TR0、TF0 。TH0被被固定為一個固定為一個8位定時器位定時器(不能作為外部計數模式),并(不能作為外部計數模式),并使用定時器使用定時器T1的狀態(tài)控制位的狀
14、態(tài)控制位TR1和和TF1,同時占用定時器,同時占用定時器T1的的中斷請求源中斷請求源TF1。T 2T0工作在方式工作在方式3時時T1的各種工作方式的各種工作方式一般情況下,一般情況下,當當T1用作串行口的波特率發(fā)生器時,用作串行口的波特率發(fā)生器時,T0才工作才工作在方式在方式3。T0處于工作方式處于工作方式3時,時,T1可定為方式可定為方式0、方式、方式1和方式和方式2,用來作為串行口的波特率發(fā)生器,或不需要中斷的場合。,用來作為串行口的波特率發(fā)生器,或不需要中斷的場合。1)T1工作在方式工作在方式0T1的控制字中的控制字中M1、M0 = 00時,時,T1工作在方式工作在方式0。 T0工作在方
15、式工作在方式3時時T1為方式為方式0的工作示意圖的工作示意圖2)T1工作在方式工作在方式1當當T1的控制字中的控制字中M1、M0 = 01時,時,T1工作在方式工作在方式1。 T0工作在方式工作在方式3時時T1為方式為方式1的工作示意圖的工作示意圖3)T1工作在方式工作在方式2當當T1的控制字中的控制字中M1、M0 = 10時,時,T1的工作方式為方式的工作方式為方式2。 T0工作在方式工作在方式3時時T1為方式為方式2的工作示意圖的工作示意圖4)T1設置在方式設置在方式3當當T0設置在方式設置在方式3,再把,再把T1也設成方式也設成方式3,此時,此時T1停止計數停止計數。3. 對外部輸入的計
16、數信號的要求對外部輸入的計數信號的要求u當定時器當定時器/計數器工作在計數器模式時,計數器工作在計數器模式時,計數脈沖來自外部輸入計數脈沖來自外部輸入引腳引腳T0或或T1。u當輸入信號產生當輸入信號產生負跳變負跳變時,計數器的值增時,計數器的值增1。u每個機器周期每個機器周期的的S5P2期間,都期間,都對外部輸入引腳對外部輸入引腳T0或或T1進行采進行采樣。如在第一個機器周期中采得的值為樣。如在第一個機器周期中采得的值為1,而在下一個機器周期,而在下一個機器周期中采得的值為中采得的值為0,則在緊跟著的再下一個機器周期,則在緊跟著的再下一個機器周期S3P1期間,計期間,計數器加數器加1。由于。由
17、于確認一次確認一次負跳變負跳變要花要花2個個機器周期機器周期,因此,因此,外部輸外部輸入的計數脈沖的入的計數脈沖的最高頻率最高頻率為系統振蕩器頻率的為系統振蕩器頻率的1/24。 u對于外部輸入信號的對于外部輸入信號的占空比占空比并沒有什么限制并沒有什么限制,但為了確保給定,但為了確保給定電平在變化之前能被采樣一次,則這一電平電平在變化之前能被采樣一次,則這一電平至少要保持一個機器至少要保持一個機器周期周期。Tcy為機器周期為機器周期4. 定時器定時器/計數器的編程和應用計數器的編程和應用u 4種方式,方式種方式,方式0與方式與方式1基本相同,只是計數位數不同?;鞠嗤皇怯嫈滴粩挡煌?。u 方
18、式方式0初值計算復雜,初值計算復雜,一般不用方式一般不用方式0,而,而用方式用方式1。方式方式1的應用的應用例:例:假設系統時鐘頻率采用假設系統時鐘頻率采用6MHz,在在P1.0引腳上輸出一個引腳上輸出一個周期周期為為2ms的的方波方波。基本思想基本思想:方波周期:方波周期T0確定,確定,T0每隔每隔1ms計數溢出計數溢出1次,即次,即T0每每隔隔1ms產生一次中斷,產生一次中斷,CPU響應中斷后,在中斷服務子程序中對響應中斷后,在中斷服務子程序中對P1.0取反取反。為此要做如下幾步工作。為此要做如下幾步工作。 P1.0引腳上輸出周期為引腳上輸出周期為2ms的方波的方波1)計算計數初值)計算計
19、數初值X機器周期機器周期 = 2 s = 2 106s設需要設需要裝入裝入T0的的初值為初值為X,則有:,則有:(216X) 2 106=1 103 216X=500 X=65036X化為十六進制數,即:化為十六進制數,即: 65036 = FE0CH 。T0的的初值初值為為TH0 =FEH,TL0 = 0CH。2)初始化程序設計)初始化程序設計采用定時器采用定時器中斷方式中斷方式工作。包括定時器初始化和中斷系統初始化,工作。包括定時器初始化和中斷系統初始化,主要是對主要是對寄存器寄存器IP、IE、TCON、TMOD的相應位進行正確的設的相應位進行正確的設置,并將計數初值送入定時器中。置,并將
20、計數初值送入定時器中。3)程序設計)程序設計中斷服務子程序除了完成所要求的中斷服務子程序除了完成所要求的產生方波產生方波的工作之外,還要注的工作之外,還要注意將計數意將計數初值重新裝入定時器初值重新裝入定時器,為下一次產生中斷做準備。,為下一次產生中斷做準備。 ORG 0000H ;程序入口;程序入口RESET: AJMP MAIN ;轉主程序;轉主程序 ORG 000BH ;T0中斷入口中斷入口 AJMP IT0P ;轉;轉T0中斷處理程序中斷處理程序IT0P ORG 0100H ;主程序入口;主程序入口MAIN: MOV SP,#60H ;設堆棧指針;設堆棧指針 MOV TMOD,#01H
21、 ;設置;設置T0為方式為方式1定時定時 ACALL PT0M0 ;調用初始化子程序;調用初始化子程序PT0M0HERE: AJMP HERE ;原地循環(huán),等待中斷;原地循環(huán),等待中斷PT0M0: MOV TL0,#0CH;T0初始化,裝初值的低初始化,裝初值的低8位位 MOV TH0,#0FEH ;裝初值的高;裝初值的高8位位 SETB ET0;允許;允許T0中斷中斷 SETB EA ;總中斷允許;總中斷允許 SETB TR0;啟動;啟動T0 RETIT0P: MOV TL0,#0CH;中斷子程序,;中斷子程序,T0重裝初值重裝初值 MOV TH0,#0FEH CPL P1.0 ;P1.0的
22、狀態(tài)取反的狀態(tài)取反 RETI程序說明:程序說明:u當單片機復位時,從程序入口當單片機復位時,從程序入口0000H跳向主程序跳向主程序MAIN處執(zhí)行。其中處執(zhí)行。其中調用了調用了T0初始化子程序初始化子程序PT0M0。u子程序返回后,子程序返回后,程序執(zhí)行程序執(zhí)行“AJMP HERE”指令,則循環(huán)等待。指令,則循環(huán)等待。當當響應響應T0定時中斷定時中斷時,則跳向時,則跳向T0中斷入口,再從中斷入口,再從T0中斷入口跳向中斷入口跳向IT0P標標號處執(zhí)行號處執(zhí)行T0中斷服務子程序。中斷服務子程序。u當當執(zhí)行完中斷返回的指令執(zhí)行完中斷返回的指令“RETI”后,又返回斷點處繼續(xù)執(zhí)行循環(huán)后,又返回斷點處繼
23、續(xù)執(zhí)行循環(huán)指令指令“AJMP HERE”。u在程序中,在程序中,“AJMP HERE” 是一段主程序。當下一次定時器是一段主程序。當下一次定時器T0的的1ms定時中斷發(fā)生時,再跳向定時中斷發(fā)生時,再跳向T0中斷入口,重復執(zhí)行上述過程。中斷入口,重復執(zhí)行上述過程。u如如CPU不做其他工作,不做其他工作,也可用查詢方式也可用查詢方式進行控制,程序要簡單得多。進行控制,程序要簡單得多。查詢方式參考程序:查詢方式參考程序: MOV TMOD,#01H ;設置;設置T0為方式為方式1LOOP:MOV TH0,#0FEH ;T0置初值置初值 MOV TL0,# 0CH SETB TR0 ;接通;接通T0L
24、OOP1: JNB TF0,LOOP1 ;查;查TF0,TF0 =0, T0未溢出;未溢出; ;TF0 =1, T0溢出,溢出, CLR TR0 ;T0溢出,溢出, 關斷關斷T0 CPL P1.0 ;P1.0的狀態(tài)求反的狀態(tài)求反 SJMP LOOP查詢查詢程序雖簡單程序雖簡單,但,但CPU必須要不斷查詢必須要不斷查詢TF0標志,工作標志,工作效率低效率低。例例: 系統時鐘為系統時鐘為6MHz,編寫定時器,編寫定時器T0產生產生1s定時的程序。定時的程序?;舅枷耄夯舅枷耄翰捎枚〞r器模式。因采用定時器模式。因定時時間較長定時時間較長,首先確定,首先確定采用采用哪一種工作方式哪一種工作方式。時鐘
25、為。時鐘為6MHz的條件下,定時器各種工作方的條件下,定時器各種工作方式最長可定時時間:式最長可定時時間:方式方式0最長可定時最長可定時16.384ms;方式方式1最長可定時最長可定時131.072ms;方式方式2最長可定時最長可定時512 s??煽蛇x選方式方式1,每隔,每隔100ms中斷一次中斷一次,中斷中斷10次次為為1s。1)計算計數初值)計算計數初值X(216 X) 2 106 = 101X = 15536 = 3CB0H因此因此 TH0 = 3CH,TL0 = B0H。2)10次計數的實現次計數的實現對于中斷對于中斷10次的計數,采用次的計數,采用B寄存器寄存器作為作為中斷次數計數器
26、中斷次數計數器。3)程序設計)程序設計ORG0000H;程序運行入口;程序運行入口RESET: LJMP MAIN ;跳向主程序入口;跳向主程序入口MAIN ORG000BH ;T0的中斷入口的中斷入口 LJMP IT0P;轉;轉T0中斷處理子程序中斷處理子程序IT0P ORG1000H;主程序入口;主程序入口MAIN: MOVSP,#60H;設堆棧指針;設堆棧指針 MOVB,#0AH;設循環(huán)次數;設循環(huán)次數10次次 MOVTMOD,#01H;設置;設置T0工作在方式工作在方式1定時定時 MOV TL0,#0B0H ;給;給T0設初值設初值 MOV TH0,#3CH SETBET0;允許;允許
27、T0中斷中斷 SETBEA ;總中斷允許;總中斷允許 SETBTR0;啟動;啟動T0HERE: SJMPHERE;原地循環(huán),等待中斷;原地循環(huán),等待中斷IT0P: MOVTL0,#0B0H ;T0中斷子程序,中斷子程序,T0重裝初值重裝初值 MOVTH0,#3CH DJNZB,RTURN;B中斷次數計數,減中斷次數計數,減1非非0則則;中斷返回;中斷返回 CLRTR0 ;1s定時時間到,停止定時時間到,停止T0工作工作SETBF0;1s定時時間到標志定時時間到標志F0置置1RTURN:RETI程序說明:程序說明:u不論不論1s定時時間是否已到,都返回到定時時間是否已到,都返回到“SJMP HE
28、RE”指令處。指令處。u“SJMP HERE”指令實際是一段主程序。在這段主程序中指令實際是一段主程序。在這段主程序中再通過對再通過對F0標志標志的的判定判定,可知,可知1s定時是否到,再進行具體處理。定時是否到,再進行具體處理。方式方式2的應用的應用u方式方式2是一個可以是一個可以自動重新裝載初值自動重新裝載初值的的8位計數器位計數器/定時器??啥〞r器??墒∪ナ∪ブ匮b初值指令。重裝初值指令。u當某個定時器當某個定時器/計數器不使用時,可計數器不使用時,可擴展一個擴展一個負跳沿觸發(fā)負跳沿觸發(fā)的的外外中斷源中斷源。例例:擴展一個擴展一個負跳沿觸發(fā)的外部中斷源負跳沿觸發(fā)的外部中斷源,把定時器,把定
29、時器/計數器計數器T0腳腳作為作為外部中斷請求輸入端外部中斷請求輸入端,溢出標志,溢出標志TF0作為外中斷請求標志。作為外中斷請求標志。基本思想:基本思想:設為方式設為方式2(自動裝入常數方式)計數模式,(自動裝入常數方式)計數模式,TH0、TL0初值初值均為均為0FFH。當。當T0腳發(fā)生負跳變時,腳發(fā)生負跳變時,T0計數溢出,計數溢出,TF0置置“1”,單片機發(fā)出中斷請求。,單片機發(fā)出中斷請求。初始化程序:初始化程序: ORG0000H AJMP IINI;跳到初始化程序;跳到初始化程序 ORG000BH AJMP IT0P;跳到外中斷處理程序;跳到外中斷處理程序IINI:MOV TMOD,
30、#06H;設置;設置T0為方式為方式2 MOV TL0,#0FFH ;設;設T0初值初值 MOV TH0,#0FFH SETB ET0;允許;允許T0中斷中斷 SETB EA;總中斷允許;總中斷允許 SETB TR0;啟動;啟動T0 IT0P: 外中斷處理程序段外中斷處理程序段 程序說明:程序說明:u當連接在當連接在P3.4(T0腳)的外部中斷請求輸入腳電平發(fā)生負跳腳)的外部中斷請求輸入腳電平發(fā)生負跳變時,變時,TL0加加1,產生溢出,產生溢出,TF0置置“1”,向單片機發(fā)出中斷請,向單片機發(fā)出中斷請求,同時求,同時TH0的內容的內容0FFH送送TL0,即,即TL0恢復初值恢復初值0FFH。u
31、P3.4腳相當于一個腳相當于一個負跳沿負跳沿觸發(fā)的觸發(fā)的外中斷請求源外中斷請求源輸入輸入。對。對P3.5也也可做類似的處理??勺鲱愃频奶幚?。例例: 當當T0(P3.4)引腳上發(fā)生負跳變時,作為)引腳上發(fā)生負跳變時,作為P1.0引腳產生方波引腳產生方波的啟動信號。開始從的啟動信號。開始從P1.0腳腳上輸出一個上輸出一個周期為周期為1ms的的方波方波(系統(系統時鐘時鐘6MHz)。)?;舅枷耄夯舅枷耄簎T0設為設為方式方式1計數計數,初值初值為為FFFFH。當外部計數輸入端。當外部計數輸入端T0發(fā)生發(fā)生一次負跳變一次負跳變時,時,T0加加1且且溢出溢出,溢出標志,溢出標志TF0置置“1”,向,
32、向CPU發(fā)出中斷請求,此時發(fā)出中斷請求,此時T0相當于一個相當于一個負跳沿觸發(fā)負跳沿觸發(fā)的外部中斷源。的外部中斷源。u進入進入T0中斷程序后,中斷程序后,F0標志置標志置“1”,說明,說明T0引腳上已接收過引腳上已接收過負跳變信號。負跳變信號。uT1定義為定義為方式方式2定時定時。在。在T0引腳產生一次負跳變后,啟動引腳產生一次負跳變后,啟動T1每每500 s產生一次中斷產生一次中斷,在,在中斷服務子程序中斷服務子程序中對中對P1.0求反求反,使,使P1.0產生產生周期周期1ms的方波。由于省去重新裝初值指令,所以可產生的方波。由于省去重新裝初值指令,所以可產生精精確確的定時時間。的定時時間。
33、2)計算)計算T1的初值的初值設設T1的初值為的初值為x,則,則(28 x) 2 106 = 5 104 x = 28 250 = 6 = 06H3)程序設計)程序設計 ORG 0000H;程序入口;程序入口RESET:LJMP MAIN ;跳向主程序;跳向主程序MAIN ORG 000BH;T0的中斷入口的中斷入口 LJMP IT0P ;轉;轉T0中斷服務程序中斷服務程序 ORG 001BH;T1的中斷入口的中斷入口 LJMP IT1P ; 轉轉T1中斷服務程序中斷服務程序 ORG 0100H;主程序入口;主程序入口MAIN:MOV SP,#60H;設堆棧指針;設堆棧指針 ACALL PT0
34、M2;調用對;調用對T0,T1初始化子程序初始化子程序LOOP:MOV C,F0 ;T0是否產生過中斷,若產生過,是否產生過中斷,若產生過,F0置置1 JNC LOOP;T0未產生中斷,未產生中斷,C=0,則跳到,則跳到LOOP,;等待;等待T0中斷中斷 SETB ET1 ;允許;允許T1產生定時中斷產生定時中斷 SETB TR1 ;啟動;啟動T1HERE:AJMP HEREPT0M2: MOV TMOD,#25H ;對;對T0,T1初始化,初始化,T0方式方式1計數,計數,;T1方式方式2定時定時 MOV TL0,#0FFH ;T0置初值置初值 MOV TH0,#0FFH SETB ET0;
35、允許;允許T0中斷中斷 MOV TL1,#06H;T1置初值置初值 MOV TH1,#06H CLR F0;把;把T0已發(fā)生中斷標志已發(fā)生中斷標志F0清清0 SETB EA;總中斷允許;總中斷允許 SETB TR0;啟動;啟動T0 RETIT0P: CLRTR0 ;T0中斷服務程序中斷服務程序,停止,停止T0計數計數 SETBF0 ;把;把T0引腳接收過負脈沖標志引腳接收過負脈沖標志F0置置1,;即接收過負跳變;即接收過負跳變 RETIIT1P: CPL P1.0;T1中斷服務程序中斷服務程序,P1.0位取反位取反 RETI程序說明:程序說明:u當單片機復位時,從當單片機復位時,從0000H跳
36、向主程序跳向主程序MAIN處執(zhí)行程序。其處執(zhí)行程序。其中調用了對中調用了對T0,T1初始化子程序初始化子程序PT0M2。u子程序返回后執(zhí)行標號子程序返回后執(zhí)行標號LOOP處指令,循環(huán)等待處指令,循環(huán)等待T0引腳上負引腳上負脈沖的到來。脈沖的到來。u由于負脈沖到來的標志位由于負脈沖到來的標志位F0的復位初始值為的復位初始值為0,所以程序就在,所以程序就在標號標號LOOP處循環(huán)等待。處循環(huán)等待。方式方式3的應用的應用u方式方式3下的下的T0和和T1大不相同大不相同。T0工作在方式工作在方式3,TL0和和TH0被被分成兩個獨立的分成兩個獨立的8位定時器位定時器/計數器。其中,計數器。其中,TL0可作
37、為可作為8位的定位的定時器時器/計數器,而計數器,而TH0只能作為只能作為8位的定時器位的定時器。此時。此時T1只能工作只能工作在方式在方式0、1或或2。u一般情況下,當一般情況下,當T1用作用作串行口波特率發(fā)生器串行口波特率發(fā)生器時,時,T0才設置為才設置為方式方式3。常把定時器。常把定時器T1設置為設置為方式方式2,用作波特率發(fā)生器。,用作波特率發(fā)生器。例:例:假設某假設某AT89S51單片機應用系統的兩個外部中斷源已被占用,單片機應用系統的兩個外部中斷源已被占用,設置設置T1工作在方式工作在方式2,用作波特率發(fā)生器,用作波特率發(fā)生器?,F。現要求增加一個要求增加一個外部外部中斷源中斷源,并
38、,并控制控制P1.0引腳輸出一個引腳輸出一個5kHz(周期為(周期為200 s)的)的方波方波。設時鐘為設時鐘為12MHz?;舅枷耄夯舅枷耄涸O置設置TL0工作在方式工作在方式3計數模式,計數模式,TL0的初值設為的初值設為0FFH,當,當檢測到檢測到T0腳信號出現腳信號出現負跳變負跳變時,時,TL0溢出,同時向溢出,同時向CPU申請中斷,這里申請中斷,這里T0腳作為一個負跳沿觸發(fā)的外部中斷請腳作為一個負跳沿觸發(fā)的外部中斷請求輸入端求輸入端。在中斷處理子程序中,啟動。在中斷處理子程序中,啟動TH0,TH0事先被設置事先被設置為為方式方式3的的100 s定時定時,從而,從而控制控制P1.0輸出
39、周期為輸出周期為200 s的方波的方波信號信號。(1)初值)初值X計算計算 TL0的的初值初值設為設為0FFH。 5kHz方波方波的的周期為周期為200 s,因此,因此TH0的定時時間為的定時時間為100 s。 初值初值X計算:計算:(28 X) 1 106 = 1 104 X = 28 100 = 156 = 9CH(2)程序設計)程序設計ORG 0000H LJMP MAIN ORG 000BH ;TL0中斷入口,中斷入口,TL0使用使用T0的中斷的中斷 LJMP TL0INT ;跳向跳向TL0中斷服務程序,中斷服務程序, TL0占用占用T0中斷中斷 ORG 001BH ;TH0中斷入口,
40、中斷入口,T0為方式為方式3時,時,TH0 ;使用了;使用了T1的中斷的中斷LJMP TH0INT;跳向;跳向TH0中斷服務程序中斷服務程序 ORG 0100H;主程序入口;主程序入口MAIN: MOV TMOD,#27H ;T0方式方式3,T1方式方式2定時作串定時作串 ;行口波特率發(fā)生器;行口波特率發(fā)生器 MOV TL0,#0FFH ;置;置TL0初值初值 MOV TH0,#9CH ;置;置TH0初值初值 MOV TL1,#datal ;TL1裝入串口波特率常數裝入串口波特率常數MOV TH1,#datah ;TH1裝入串口波特率常數裝入串口波特率常數 MOV TCON,#15H ;允許;
41、允許T0中斷中斷 MOV IE,#9FH;設置中斷允許,總中斷允許,;設置中斷允許,總中斷允許,;TH0、TL0中斷允許中斷允許HERE: AJMP HERE;循環(huán)等待;循環(huán)等待TL0INT: MOV TL0,#0FFH;TL0中斷服務處理子程序,中斷服務處理子程序,TL0 ;重新裝入初值;重新裝入初值 SETB TR1;開始啟動;開始啟動TH0定時定時 RETITH0INT:MOV TH0,#9CH;TH0中斷服務程序,中斷服務程序,TH0重新重新;裝入初值;裝入初值 CPLP1.0;P1.0位取反輸出位取反輸出 RETI u門控制位門控制位GATEx的應用的應用測量脈沖寬度測量脈沖寬度測量
42、測量 (P3.3)引腳上正脈沖的寬度。)引腳上正脈沖的寬度。INT1例:例:門控位門控位GATE1可使可使T1的啟動計數受的啟動計數受 的控制,當的控制,當GATE1 = 1,TR1=1時,時,只有只有 INT1*引腳輸入高電平時引腳輸入高電平時,T1才被允許計數才被允許計數。可測量。可測量 引腳引腳 (P3.3)上正脈沖的寬度。)上正脈沖的寬度。INT1INT1 ORG0000HRESET: AJMP MAIN ;復位入口轉主程序;復位入口轉主程序 ORG 0100H;主程序入口;主程序入口MAIN: MOV SP,#60H MOVTMOD,#90H;向;向TMOD寫控制字,寫控制字,T1為
43、方為方;式;式1定時,定時,GATE1 = 1 MOV TL1,#00H MOV TH1,#00HLOOP0: JB P3.3,LOOP0;等待;等待 降低降低 SETB TR1;如;如 為低,啟動為低,啟動T1INT1INT1LOOP1:JNB P3.3,LOOP1;等待;等待 升高升高LOOP2:JB P3.3,LOOP2 ; 為高,為高, 此時計數器計數,此時計數器計數, ;等待;等待 降低降低 CLR TR1 ;停止;停止T1計數計數 MOV A,TL1 ;T1計數值送計數值送A ;將;將T1計數值送顯示器計數值送顯示器 END執(zhí)行以上程序,使執(zhí)行以上程序,使 引腳上出現的引腳上出現的
44、正脈沖寬度正脈沖寬度以以機器周期機器周期數數的形式顯示在顯示器上。的形式顯示在顯示器上。將A中的T1計數值送到顯示器顯示INT1INT1INT1INT1u實時時鐘的設計實時時鐘的設計1實現實時時鐘的基本思想實現實時時鐘的基本思想最小計時單位是最小計時單位是秒秒,如何獲得,如何獲得1s的定時時間的定時時間呢呢?定時器?定時器方式方式1,最大定時時間也只能最大定時時間也只能131ms??蓪⒍〞r器的定時時間定為??蓪⒍〞r器的定時時間定為100ms,中斷方式進行溢出次數的累計,中斷方式進行溢出次數的累計,計滿計滿10次次,即得秒計時。,即得秒計時。片內片內RAM規(guī)定規(guī)定3個單元個單元為為秒、分、時秒、分、時單元單元:42H:“秒秒”單元;單元;41H:“分分”單元;單元;40H:“時時”單元單元從秒到分,從分到時從秒到分,從分到時是是通過軟件累加通過軟件累加并比較來實現。要求每滿并比較來實現。要求每滿1秒,則秒,則“秒秒”單元單元42H中的內容加中的內容加1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度車輛抵押給個人質押貸款合同:豪華轎車使用權協議
- 2025年度特種車輛拖車與吊裝作業(yè)服務合同
- 二零二五年度旅游居間協議合同服務項目解析
- 二零二五年度泳池安全知識培訓免責協議
- 二零二五年度空調銷售與節(jié)能改造升級合同
- 二零二五年度餐飲管理公司員工培訓與用工合同
- 高速公路排水溝施工合同(2025年度)包含臨時道路修復服務
- 2025年度銷售人員商業(yè)秘密保護及保密補償協議
- 二零二五年度傳媒行業(yè)勞動合同終止及競業(yè)限制協議范本
- 2025年度道路養(yǎng)護承包合同解除書
- 2025年江蘇揚州市儀征市眾鑫建設開發(fā)有限公司招聘筆試參考題庫附帶答案詳解
- 部編高教版2023·職業(yè)模塊 中職語文 2.《寧夏閩寧鎮(zhèn):昔日干沙灘今日金沙灘》 課件
- 安全環(huán)保職業(yè)健康法律法規(guī)清單2024年
- 2023年高考語文全國乙卷《長出一地的好蕎麥》解析
- (完整PPT)半導體物理與器件物理課件
- 大音希聲話古韻——古琴曲《流水》課件
- 浮針療法之頸椎病的治療ppt課件
- 金蝶K3 Cloud 產品安裝指南
- VISIO圖標大全(完整版)
- 醫(yī)療、預防、保健機構醫(yī)師聘用證明表(共1頁)
- 清鈴撳針介紹
評論
0/150
提交評論