單片機部分內功能部件介紹_第1頁
單片機部分內功能部件介紹_第2頁
單片機部分內功能部件介紹_第3頁
單片機部分內功能部件介紹_第4頁
單片機部分內功能部件介紹_第5頁
已閱讀5頁,還剩183頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、1 定時器定時器/ /計數器計數器 可編程計數器陣列可編程計數器陣列 UART UART通信接口通信接口 SMBus SMBus SPI SPI總線總線 2v定時和計數功能最終都是通過定時和計數功能最終都是通過計數實現計數實現的,若計數的事件源是的,若計數的事件源是周期固定的脈沖,則可以實現周期固定的脈沖,則可以實現定時功能定時功能,否則只能實現,否則只能實現計數功能計數功能。因此可以將定時和計數功能由一個部件實現。因此可以將定時和計數功能由一個部件實現。v實現定時和計數的方法一般實現定時和計數的方法一般有軟件、專用硬件電路和可編程定有軟件、專用硬件電路和可編程定時器時器/ /計數器計數器三種

2、方法。三種方法。采用軟件只能定時,且占用采用軟件只能定時,且占用CPUCPU時間,降低了時間,降低了CPUCPU的使用效率。的使用效率。專用硬件電路可實現精確的定時和計數,但參數調節不便。專用硬件電路可實現精確的定時和計數,但參數調節不便。可編程定時器計數器,不占用可編程定時器計數器,不占用CPUCPU時間,能與時間,能與CPUCPU并行工作,實現精確并行工作,實現精確的定時和計數,又可以通過編程設置其工作方式和其它參數,因此使用方的定時和計數,又可以通過編程設置其工作方式和其它參數,因此使用方便便。 3vC8051F020C8051F020內部有內部有T T0 0T T4 4共共5 5個個1

3、616位定時器位定時器/ /計數器計數器,其中,其中T T0 0T T2 2與與MCS-51MCS-51中的定時器中的定時器/ /計數器兼容,還有兩個計數器兼容,還有兩個1616位自動重裝初值的位自動重裝初值的定時器定時器T T3 3 和和T T4 4既可以作為通用定時器使用,也可以用于既可以作為通用定時器使用,也可以用于ADCADC和和SMBusSMBus。 表表4-1 C8051F0204-1 C8051F020定時器定時器/ /計數器的工作方式計數器的工作方式 4方式選擇方式選擇計數器計數器定時器定時器啟啟/ /停控制停控制執行機構執行機構減減1 1計數:如計數:如Intel 8253I

4、ntel 8253加加1 1計數:如計數:如T0T0T4T4溢出標志溢出標志查詢查詢中斷中斷5vT TMAXMAX=2=2n nT T計數計數 式中式中n n由工作方式決定由工作方式決定,T T計數計數為定時器為定時器/ /計數器的計數器的計數脈沖周計數脈沖周期時間期時間,由,由C8051FC8051F的主脈沖或主脈沖經的主脈沖或主脈沖經1212分頻提供,是否需要分頻提供,是否需要1212分頻取決于對時鐘控制寄存器分頻取決于對時鐘控制寄存器CKCONCKCON的設定(提供的設定(提供1212分頻選項是分頻選項是為了與標準為了與標準80518051兼容)。兼容)。 vT0T0T4T4均為加均為加

5、1 1計數器計數器6v位位7 7:未用。讀:未用。讀=0b=0b,寫,寫= =忽略。忽略。v位位6-36-3:T4M-T0MT4M-T0M:T4T4到到T0T0的時鐘選擇(不包含的時鐘選擇(不包含T3T3,T3T3的時鐘選的時鐘選擇由擇由T3T3控制寄存器控制寄存器TMR3CNTMR3CN的第的第0 0位位T3XCLKT3XCLK決定)。決定)。 0 0:定時器按系統時鐘的:定時器按系統時鐘的1212分頻計數分頻計數 1 1:定時器按系統時鐘頻率計數:定時器按系統時鐘頻率計數v位位2-02-0:保留。讀:保留。讀=000b=000b,寫入值必須是,寫入值必須是000b000b。 7v定時方式:

6、定時方式:每一個計數周期每一個計數周期(T(T計數計數) )計數器加計數器加1 1,直至,直至計滿溢出計滿溢出( (從全從全1 1到全到全0)0)產生中斷請求。對于一個產生中斷請求。對于一個N N位的加位的加1 1計數器,若計數器,若T T計數計數是已知的,則從初值是已知的,則從初值a a開始加開始加1 1計數至溢出所占用的時間為:計數至溢出所占用的時間為:)(計數計數aTTn 2v當當N=8N=8、a=0a=0時,時,最大定時時間最大定時時間為:為: T=256T=256T T計數計數v計數方式:計數方式:外部輸入信號的外部輸入信號的下降沿觸發計數下降沿觸發計數,計數器在每個時,計數器在每個

7、時鐘周期或時鐘周期的鐘周期或時鐘周期的1212分頻采樣外部輸入信號,若一個周期的采分頻采樣外部輸入信號,若一個周期的采樣值為樣值為1 1,下一個周期的采樣值為,下一個周期的采樣值為0 0,則計數器加,則計數器加1 1,故識別一個,故識別一個從從1 1到到0 0的跳變需的跳變需2 2個周期,所以,對外部輸入信號最高的計數速個周期,所以,對外部輸入信號最高的計數速率是時鐘頻率的率是時鐘頻率的1 12 2或或1/241/24(取決于是否(取決于是否1212分頻)。同時,外部分頻)。同時,外部輸入信號的高電平與低電平保持時間均需大于一個周期。輸入信號的高電平與低電平保持時間均需大于一個周期。8v對定時

8、器對定時器/ /計數器計數器T0T0和和T1T1的訪問和控制是通過操作的訪問和控制是通過操作SFRSFR實現的。實現的。vT0T0和和T1T1都是都是1616位的加位的加1 1計數器計數器,訪問時以兩個字節的,訪問時以兩個字節的形式出現:形式出現:TL0+TH0TL0+TH0、TL1+TH1TL1+TH1vTCONTCON用于允許用于允許/ /禁止定時器禁止定時器0 0和定時器和定時器1 1并指示它們的并指示它們的工作狀態。工作狀態。vT0T0和和T1T1都有都有四種工作方式四種工作方式,可以,可以TMODTMOD中的方式選擇位中的方式選擇位M1-M0M1-M0進行選擇。進行選擇。9T0M0T

9、0M1C/T0GATE0T1M0T1M1C/ T1GATE1TMOD字節字節地址地址89H D7 D6 D5 D4 D3 D2 D1 D0控制控制T0T0控制控制T1T1方式選擇方式選擇0000:方式:方式0 00101:方式:方式1 11010:方式:方式2 21111:方式:方式3 3定時定時/ /計數選擇計數選擇0 0:定時器:定時器1 1:計數器:計數器門控位門控位10IT0IE0IT1IE1TR0TF0TR1TF1TCON字節字節地址地址88H88H D7 D6 D5 D4 D3 D2 D1 D0控制外部中斷控制外部中斷控制控制T1T1、T0T0啟啟/ /停控制停控制GATE=0GA

10、TE=0時時O O:停停1 1:啟啟溢出標志溢出標志1 1:溢出溢出0 0:不溢出不溢出11表表4-2 4-2 定時器定時器T0T0、T1T1的工作方式的工作方式1213位計位計數器數器啟啟/停控制停控制TR0=1TR0=1啟動計數啟動計數GATE0=0GATE0=0時:時:GATE0=1GATE0=1時:時: TR0=1TR0=1且且INT0=1INT0=1啟動計數啟動計數時基選擇時基選擇定時定時/計數選擇計數選擇13v若若T0T0工作于方式工作于方式0 0的定時器模式,計數初值為的定時器模式,計數初值為a a,則,則T0T0從初值從初值a a加加1 1計數至溢出所需的時間為:計數至溢出所需

11、的時間為: 式中式中f fOSCOSC為系統時鐘頻率,為系統時鐘頻率,T0MT0M為為T0T0的時鐘選擇位。的時鐘選擇位。v如果如果f fOSCOSC12MHz12MHz,則,則T0M=0T0M=0時,時,T T(2(21313a)a)s s;T0M=1T0M=1時,時,T T(2(21313a)/12a)/12s s。14v和方式和方式0 0的差別僅僅在于計數器的位數不同,方式的差別僅僅在于計數器的位數不同,方式1 1為為1616位位的定時器計數器。的定時器計數器。vT0T0工作于方式工作于方式1 1時,由時,由TH0TH0作為高作為高8 8位,位,TL0TL0作為低作為低8 8位位,構成一

12、個構成一個1616位計數器。位計數器。v若若T0T0工作于方式工作于方式1 1定時,計數初值為定時,計數初值為a a,f fOSCOSC12MHz12MHz,則則T0T0從計數初值從計數初值a a加加1 1計數到溢出的定時時間為:計數到溢出的定時時間為: T T( (2 21616a)s a)s 或或 T T( (2 21616a)/12sa)/12s。158位自動重裝初值位自動重裝初值16v適用于需要適用于需要重復定時或計數的場合重復定時或計數的場合。v定時精度比較高,但定時時間較短。定時精度比較高,但定時時間較短。v定時時間可用下式計算:定時時間可用下式計算: 17v只適用于只適用于T0T

13、0,若,若T1T1設置為方式設置為方式3 3,則停止計數。,則停止計數。 兩個獨立兩個獨立8位計數器位計數器借用借用T1的資源的資源18v初始化步驟初始化步驟 初始化初始化TMOD根據需要初始化根據需要初始化CKCON裝入初值裝入初值中斷設置(中斷設置(IE、IP)啟動定時啟動定時/計數器(計數器(TCON)v計數器方式初值的計算計數器方式初值的計算 TC=MTC=MC C 為計數器的模,與工作方式有關為計數器的模,與工作方式有關 ,C為需要的計數值為需要的計數值v定時器方式初值的計算定時器方式初值的計算T=(MT=(MTC)TC)T T計數計數 T T計數計數= =CLKCLK或或1212C

14、LKCLK TC=MTC=MT/TT/T計數計數 19v最大定時時間(最大定時時間(f fOSCOSC12MHz12MHz、T0M=0T0M=0 ):):方式方式0 0:T TMAX MAX = 2= 213131 1s s = 8.192ms= 8.192ms方式方式1 1:T TMAXMAX = 2 = 216161 1s s = 65.536ms= 65.536ms方式方式2 2、3 3: T TMAXMAX = 2 = 28 81 1s s = 0.256ms= 0.256ms20v例例4.14.1 若若f fOSCOSC=12MHz=12MHz,用系統時鐘的十二分頻作為計,用系統時鐘

15、的十二分頻作為計數源,請計算定時數源,請計算定時2ms2ms所需的初值,并給出初始化程序。所需的初值,并給出初始化程序。v解:解: f fOSCOSC= 12MHz= 12MHz,用系統時鐘的十二分頻作為計,用系統時鐘的十二分頻作為計數源時,方式數源時,方式2 2、3 3的最大定時時間只有的最大定時時間只有0.256ms0.256ms,因此,因此要想獲得要想獲得2ms2ms的定時時間,的定時時間,必須用方式必須用方式0 0或方式或方式1 1。v方式方式0 0TC=2TC=213132ms/1us=6192=1830H2ms/1us=6192=1830H 即:即:TH0=0C1HTH0=0C1H

16、;TL0=10HTL0=10H(高三位為(高三位為0 0) v方式方式1 1TC=2TC=216162ms/1us=63536=2ms/1us=63536=F830HF830H 即:即:TH0=0F8HTH0=0F8H;TL0=30HTL0=30H21v初始化程序初始化程序 void T0_mode1_2ms_init()void T0_mode1_2ms_init() CKCON&=0 xf7;CKCON&=0 xf7;/T0/T0計數源選擇系統脈沖的計數源選擇系統脈沖的1212分頻分頻TMOD=0 x01; TMOD=0 x01; /T0/T0,方式,方式1 1 TH0=0

17、 xf8; TH0=0 xf8; /初值初值 TL0=0 x30;TL0=0 x30; TCON|=0 x10; TCON|=0 x10; /啟動啟動T0T0,可用可用TR0=1TR0=1代替代替 22v給定時器賦初值的語句給定時器賦初值的語句也可以采用如下方法也可以采用如下方法: TH0=(65536-2000)/256;TH0=(65536-2000)/256; TL0=(65536-2000)%256; TL0=(65536-2000)%256;或或 TH0=-2000/256;TH0=-2000/256; TL0=-2000%256; TL0=-2000%256;23v例例4.24.2

18、 若若f fOSCOSC=12MHz=12MHz,T1T1工作于方式工作于方式1 1,產生,產生50ms50ms的定時中斷,的定時中斷,TF1TF1為高級中斷源。試編寫主程序和中斷服務程序,使為高級中斷源。試編寫主程序和中斷服務程序,使P1.0P1.0產生產生周期為周期為1s1s的方波的方波。 v解:解:讓讓P1.0P1.0每每500ms500ms取反一次取反一次即可實現。定時器的單次定時時即可實現。定時器的單次定時時間不可能達到間不可能達到500ms500ms,可讓定時器,可讓定時器多次定時產生多次定時產生500ms500ms的定時時間,的定時時間,如讓如讓T1T1工作在方式工作在方式1 1

19、,單次定時時間為,單次定時時間為50ms50ms,那么,那么T1T1中斷中斷1010次就次就是是500ms500ms的時間。的時間。 v(1 1)確定定時常數)確定定時常數假設使用假設使用f fOSCOSC的的1212分頻作為計數源,則分頻作為計數源,則T T計數計數12/ f12/ fOSCOSC 12/12/(121210106 6)1s1s由公式由公式TC=MTC=MT/TT/T計數計數,可知,可知TC=2TC=21616-50-5010103 315536=3CB0H15536=3CB0HTH1=0 x3cTH1=0 x3c,TL0=0 xb0TL0=0 xb0。 24v(2 2)初始

20、化程序)初始化程序 包括包括T1T1初始化和中斷系統初始化,主要是對初始化和中斷系統初始化,主要是對IPIP、IEIE、CKCONCKCON、TCONTCON、TMODTMOD的相應位進行正確的設置,并將時間常數送入的相應位進行正確的設置,并將時間常數送入T1T1。本例中將初始化操作放在主程序中完成,當程序規模較大時,本例中將初始化操作放在主程序中完成,當程序規模較大時,應編寫單獨的初始化程序,以利于程序的模塊化設計。應編寫單獨的初始化程序,以利于程序的模塊化設計。v(3 3)中斷服務程序)中斷服務程序 中斷服務程序除了完成要求的方波產生這一工作之外,還中斷服務程序除了完成要求的方波產生這一工

21、作之外,還要注意將時間常數重新送入要注意將時間常數重新送入T1T1中,為下一次產生中斷作準備。中,為下一次產生中斷作準備。25#include #include sbit P1_0 = P10;sbit P1_0 = P10;int count=10;int count=10;/10/10次次T1T1中斷為中斷為500ms500msvoid main( void )void main( void ) CKCON&=0 xef; CKCON&=0 xef; /T1/T1的計數源選擇系統脈沖的的計數源選擇系統脈沖的1212分頻分頻 TMOD=0 x10; TMOD=0 x10; /

22、T1/T1方式方式1 1 P1_0=0;P1_0=0; TH1=0 x3c; TH1=0 x3c; /初值初值 TL1=0 xb0; TL1=0 xb0; IE|=0 x88; IE|=0 x88; /允許允許T1T1中斷中斷 IP|=0 x08; IP|=0 x08; /TF1/TF1中斷為高級中斷中斷為高級中斷 TCON|=0 x20; TCON|=0 x20; /啟動啟動T1 T1 while(1); while(1); /死循環,等待中斷,產生方波死循環,等待中斷,產生方波 26void Timer1_ISR (void) void Timer1_ISR (void) interrup

23、t 3interrupt 3 TH1=0 x3c; TH1=0 x3c; /重裝初值重裝初值 TL1|=0 xb0;TL1|=0 xb0; count count-; ; /中斷計數中斷計數 if (countif (count=0) 0) /500ms/500ms到,重賦計數初值,到,重賦計數初值,P1.0P1.0取反取反 count=10; P1_0=!P1_0; count=10; P1_0=!P1_0; 問題:問題:為什么用為什么用TL1|=0 xb0;TL1|=0 xb0;而非而非TL1=0 xb0TL1=0 xb0?27v#include #include sbit P1_0= P

24、10;sbit P1_0= P10;void main( )void main( ) int count=10;int count=10; /10/10次次T1T1中斷為中斷為500ms500msCKCON&=0 xef;CKCON&=0 xef;/T1/T1的計數源選擇系統脈沖的的計數源選擇系統脈沖的1212分頻分頻TMOD=0 x10; TMOD=0 x10; /T1/T1方式方式1 1P1_0=0;P1_0=0;TR1=1;TR1=1;/啟動啟動T1T128 For(; ;) For(; ;) /死循環,產生方波死循環,產生方波 TH1=-50000/256; TH1=-

25、50000/256; /T1/T1初值初值 TL1=-50000%256;TL1=-50000%256; Do while(!TF1); Do while(!TF1); /查詢等待查詢等待TF1TF1置位,置位, TF1=0;TF1=0; If (count!=0) count If (count!=0) count-; ; else count=10;P1_0=!P1_0; else count=10;P1_0=!P1_0; 29vT2T2為為1616位位定時定時/ /計數器,由計數器,由TL2TL2(低字節)和(低字節)和TH2TH2(高字節)組(高字節)組成。成。vC/T2=0(C/T2

26、=0(定時定時) )時,系統時鐘作為定時器的輸入(由時,系統時鐘作為定時器的輸入(由CKCONCKCON的的T2MT2M位指定不分頻或位指定不分頻或1212分頻)。分頻)。C/T2 =1C/T2 =1(計數)(計數)時,時,T2T2輸入引腳上輸入引腳上的負跳變使計數器加的負跳變使計數器加“1 1”。vT2T2還可以用于啟動還可以用于啟動ADCADC數據轉換。數據轉換。 v三種工作方式三種工作方式(由(由T2CONT2CON中的配置位選擇):自動重裝初值的中的配置位選擇):自動重裝初值的1616位定時器位定時器/ /計數器方式、帶捕捉的計數器方式、帶捕捉的1616位定時器位定時器/ /計數器方式

27、和波計數器方式和波特率發生器方式。特率發生器方式。30v位位7 7(TF2TF2):):T2T2溢出標志位溢出標志位T2T2溢出時由硬件置位。允許溢出時由硬件置位。允許T2T2中斷時,使中斷時,使CPUCPU轉向轉向T2T2的中斷的中斷服務程序。不能由硬件自動清服務程序。不能由硬件自動清0 0,必須用軟件清必須用軟件清0 0。RCLK0RCLK0或或TCLK0TCLK0為為1 1時(波特率發生器方式),時(波特率發生器方式),TF2TF2不會被置不會被置1 1。v位位6 6(EXF2EXF2):):T2T2外部中斷標志位外部中斷標志位EXEN2EXEN2為為“1 1”時,當時,當T2EXT2E

28、X輸入引腳發生輸入引腳發生負跳變負跳變時,由硬件置時,由硬件置位。允許位。允許T2T2中斷時,使中斷時,使CPUCPU轉向轉向T2T2的中斷服務程序。不能由硬的中斷服務程序。不能由硬件自動清件自動清0 0,必須用軟件清,必須用軟件清0 0。CP/RL2C/T2TR2EXEN2TCLK0RCLK0EXF2TF2字節字節地址地址C8HC8H D7 D6 D5 D4 D3 D2 D1 D031v位位5 5(RCLK0RCLK0):UART0UART0接收時鐘選擇標志位接收時鐘選擇標志位0 0:T1T1溢出作為接收時鐘。溢出作為接收時鐘。1 1:T2T2溢出作為接收時鐘。溢出作為接收時鐘。v位位4 4

29、(TCLK0TCLK0):UART0UART0發送時鐘選擇標志位發送時鐘選擇標志位0 0:T1T1溢出作為發送時鐘。溢出作為發送時鐘。1 1:T2T2溢出作為發送時鐘。溢出作為發送時鐘。v位位3 3(EXEN2EXEN2):T2T2外部允許標志位外部允許標志位0 0:T2EXT2EX上的負跳變被忽略。上的負跳變被忽略。1 1:T2EXT2EX上的負跳變導致一次捕捉或重載上的負跳變導致一次捕捉或重載。v位位2 2(TR2TR2):T2T2啟啟/ /停控制位停控制位0 0:停止。:停止。1 1:啟動。:啟動。32v位位1 1(C/T2C/T2):定時器:定時器/ /計數器功能選擇位計數器功能選擇位

30、0 0:定時器功能,由:定時器功能,由T2M(CKCON.5)T2M(CKCON.5)定義的時鐘加定義的時鐘加“1 1”。1 1:計數器功能,由外部輸入引腳:計數器功能,由外部輸入引腳(T2)(T2)的負跳變加的負跳變加“1 1”。v位位0 0(CP/RL2CP/RL2):捕捉:捕捉/ /重載選擇位重載選擇位EXEN2EXEN2必須為必須為1 1才能使才能使T2EXT2EX上的負跳變能夠被識別并觸發捕捉上的負跳變能夠被識別并觸發捕捉和重載。當和重載。當RCLK0RCLK0或或TCLK0TCLK0為為“1 1”時,該位被忽略,時,該位被忽略,T2T2將工作將工作在自動重裝載方式。在自動重裝載方式

31、。0 0:T2T2溢出或溢出或T2EXT2EX上發生負跳變時將自動重裝載上發生負跳變時將自動重裝載1 1:T2EXT2EX發生負跳變時捕捉發生負跳變時捕捉。33v(1 1)方式)方式0 0:自動重裝初值的自動重裝初值的1616位定時器位定時器/ /計數器方式計數器方式原理框圖如原理框圖如圖圖4-54-5所示。所示。TH2TH2、TL2TL2構成構成1616位加位加“1 1”計數器。計數器。RCAP2HRCAP2H、RCAP2LRCAP2L構成構成1616位初值寄存器,位初值寄存器,EXEN2=1EXEN2=1時,當時,當T2EXT2EX上有負跳變或上有負跳變或T2T2溢出時,將溢出時,將RCA

32、P2HRCAP2H、RCAP2LRCAP2L中預置的中預置的初值自動重新裝入初值自動重新裝入TH2TH2、TL2TL2,T2T2重新開始計數,并置位中斷標志重新開始計數,并置位中斷標志EXF2EXF2或或TF2TF2,向,向CPUCPU申請中斷。申請中斷。EXEN2=0EXEN2=0時,時,T2EXT2EX上的負跳變被忽略,只有當上的負跳變被忽略,只有當T2T2溢溢出時才重載初值并向出時才重載初值并向CPUCPU申請中斷。申請中斷。 表表4-3 T24-3 T2的方式選擇的方式選擇 RCLK0+TCLK0CP/RL2工作方式工作方式00自動重裝載的自動重裝載的16位定時器位定時器/計數器計數器

33、 01帶捕捉的帶捕捉的16位定時器位定時器/計數器計數器 1UART0波特率發生器方式波特率發生器方式34自動重裝初值自動重裝初值兩中斷標志兩中斷標志為為0時忽略時忽略T2EX負跳變,負跳變,不產生不產生EXF2中斷中斷35vRCLK0=0RCLK0=0、TCLK0=0TCLK0=0、CP/RL2=1CP/RL2=1時,時,T2T2工作在此方式工作在此方式vEXEN2=1EXEN2=1時為允許捕捉方式,時為允許捕捉方式,T2EXT2EX引腳上的負跳變將引腳上的負跳變將TH2TH2、TL2TL2的當前值捕捉到的當前值捕捉到RCAP2HRCAP2H、RCAP2LRCAP2L寄存器,同寄存器,同時置

34、時置EXF2=1EXF2=1,發出中斷請求。,發出中斷請求。vEXEN2=0EXEN2=0時,時,RCAP2HRCAP2H、PCAP2LPCAP2L不起作用,此時不起作用,此時T2T2與與T1T1、T0T0的方式的方式1 1完全相同。即:完全相同。即:C/T2C/T20 0時為時為1616位定時器方位定時器方式,式,C/T2C/T21 1時為時為1616位計數器方式,計數溢出時位計數器方式,計數溢出時TF2TF21 1,發送中斷請求信號。發送中斷請求信號。 v原理框圖如原理框圖如圖圖4-64-6所示。所示。 36是否捕捉是否捕捉捕捉并產生捕捉并產生EXF2中斷中斷37vRCLKRCLK或或TC

35、LKTCLK置置1 1時,時,T2T2工作于波特率發生器方式。工作于波特率發生器方式。 v與自動重裝載方式相似。但與自動重裝載方式相似。但不置位不置位TF2TF2,也不產生中斷。溢出,也不產生中斷。溢出事件用作事件用作UART0UART0的移位時鐘輸入。的移位時鐘輸入。 vT2T2溢出可用于產生獨立的發送或接收波特率溢出可用于產生獨立的發送或接收波特率, ,也可同時產生發也可同時產生發送和接收波特率,取決于送和接收波特率,取決于T2CONT2CON的設置。的設置。 vT2T2的計數源可以是系統時鐘的二分頻,也可以是的計數源可以是系統時鐘的二分頻,也可以是T2T2引腳上的輸引腳上的輸入,取決與入

36、,取決與C/T2C/T2的設置。的設置。 v如果如果EXEN2EXEN2為為1 1,則,則T2EX T2EX 引腳上的負跳變將置位引腳上的負跳變將置位EXF2EXF2標志,并標志,并產生一個產生一個T2T2中斷(如果允許)。因此,中斷(如果允許)。因此,T2EX T2EX 輸入可以被用作額輸入可以被用作額外的外部中斷源。外的外部中斷源。v原理框圖如原理框圖如圖圖4-74-7所示。所示。38做做UART0波特率發生器波特率發生器T1作作UART0波波特率發生器特率發生器產生外部中斷產生外部中斷時基選擇時基選擇39v當選擇系統時鐘的二分頻做計數源時,當選擇系統時鐘的二分頻做計數源時,T2 T2 為

37、為UART0UART0提提供的波特率可以用如下公式計算:供的波特率可以用如下公式計算:v當選擇外部引腳當選擇外部引腳T2T2上的輸入作為時基時,上的輸入作為時基時,T2T2為為UART0UART0提供的波特率可以用如下公式計算:提供的波特率可以用如下公式計算: 401. 1. 定時器定時器T3T3的結構的結構 v1616位定時位定時/ /計數器計數器 ,由,由TMR3LTMR3L(低字節)和(低字節)和TMR3HTMR3H(高字節)組(高字節)組成成 vT3T3的時鐘輸入可以通過程序選擇為外部振蕩器的的時鐘輸入可以通過程序選擇為外部振蕩器的8 8分頻、系統分頻、系統時鐘或系統時鐘的時鐘或系統時

38、鐘的1212分頻。分頻。 vT3T3只有自動重裝初值一種工作方式,只有自動重裝初值一種工作方式,初值初值保存在保存在TMR3RLLTMR3RLL(低(低字節)和字節)和TMR3RLHTMR3RLH(高字節)兩個(高字節)兩個SFRSFR中,中,T3T3沒有計數器方式。沒有計數器方式。 v除作為通用定時除作為通用定時/ /計數器使用外,計數器使用外,T3T3還可以用于啟動還可以用于啟動ADCADC數據轉數據轉換、換、SMBusSMBus定時等。定時等。 v原理框圖如原理框圖如圖圖4-8所示。所示。41時基選擇時基選擇僅此一種方式僅此一種方式啟動啟動ADC42v位位7 7(TF3TF3):):T3

39、T3溢出標志位溢出標志位溢出時置溢出時置1 1,不能由硬件自動清,不能由硬件自動清0 0,必須用軟件清必須用軟件清0 0 v位位6-36-3:未用。讀:未用。讀=0000b=0000b,寫,寫= =忽略忽略 v位位2 2(TR3TR3):):T3T3運行控制位運行控制位 0 0:停止。:停止。1 1:啟動。:啟動。v位位1 1(T3MT3M):):T3T3時鐘選擇位時鐘選擇位 0 0:T3T3使用系統時鐘的使用系統時鐘的1212分頻。分頻。1 1:T3T3使用系統時鐘。使用系統時鐘。v位位0 0(T3XCLKT3XCLK):):T3T3外部時鐘選擇位外部時鐘選擇位 0 0:由:由T3MT3M定

40、義。定義。1 1:外部振蕩器輸入的:外部振蕩器輸入的8 8分頻。分頻。 T3XCLKT3MTR3-TF3字節字節地址地址C8HC8H D7 D6 D5 D4 D3 D2 D1 D043v例例 4.34.3 假設假設C8051F020C8051F020的并行口的并行口P2P2、P3P3連接連接1616個個LEDLED指示燈,試編寫程序使指示燈,試編寫程序使P3P3口所接的口所接的LEDLED燈循環點亮,燈循環點亮,P2P2口所接的口所接的LEDLED燈實現走馬燈效果。(燈實現走馬燈效果。(實驗四實驗四) v解:解:要實現題目要求的效果,只需要要實現題目要求的效果,只需要定期更新定期更新P2P2、

41、P3P3口的狀態口的狀態即可。這里可以使用即可。這里可以使用T3T3定時器再加軟件計數定時器再加軟件計數的方法達到所要求的時間,假設的方法達到所要求的時間,假設T3T3定時定時0.10.1秒產生中斷,秒產生中斷,則軟件計數器每則軟件計數器每0.10.1秒加秒加1 1,讓計數器加到,讓計數器加到5 5時,改變時,改變P2P2、P3P3口的狀態,就可以實現口的狀態,就可以實現每秒每秒2 2次刷新次刷新LEDLED燈的狀態。燈的狀態。 44#include sfr16 TMR3RL = 0 x92; /16位位SFR sfr16 TMR3 = 0 x94; #define SYSCLK 200000

42、0 /系統時鐘使用系統時鐘使用2MHz/函數聲明函數聲明void PORT_Init(void); void Timer3_Init(int counts);void Timer3_ISR(void);/P2口口8個個LED (共陰極)產生走馬燈效果所需的數據(共陰極)產生走馬燈效果所需的數據 unsigned int xdata p2led=0 x7f,0 xbf,0 xdf,0 xef,0 xf7, 0 xfb,0 xfd,0 xfe; 45void main (void) WDTCN = 0 xde; /禁止看門狗定時器禁止看門狗定時器 WDTCN = 0 xad;PORT_Init()

43、; /端口初始化端口初始化 Timer3_Init(SYSCLK/12/10); /T3初始化,產生初始化,產生0.1秒的定時中斷秒的定時中斷 EA = 1; /開中斷開中斷 while (1) ; /循環等待循環等待T3中斷,產生走馬燈效果中斷,產生走馬燈效果 void PORT_Init (void) XBR2 = 0 x40; /使能交叉開關使能交叉開關46void Timer3_Init (int counts) TMR3CN = 0 x00; TMR3RL = -counts; /T3賦初值,也可以采用賦初值,也可以采用8位位SFR方式,向例方式,向例4.2那樣那樣 TMR3 = 0

44、 xffff; /立即重載立即重載 EIE2 |= 0 x01; /開開T3中斷中斷 ,P42 EIE2格式格式 TMR3CN |= 0 x04; /啟動啟動T347void Timer3_ISR (void) interrupt 14 static int count; static int i=9,j=0; static int led=0 xff; /P3口口LED燈的初始狀態燈的初始狀態 TMR3CN &= (0 x80); /清清TF3 count+; if(count=5) /T3中斷中斷5次更新一次次更新一次LED燈狀態燈狀態 count=0; P3=led;P2=p2l

45、edj; /查表查表led=led1; i-; j+; if(j=8) j=0; /P2口口LED燈循環一個周期燈循環一個周期 if(i=0) i=9; led=0 xff; /P3口口LED燈循環一個周期燈循環一個周期 48v16位的定時器位的定時器/計數器,由計數器,由TL4(低字節)和(低字節)和TH4(高字節)組(高字節)組成。成。 vT4還可以用于啟動還可以用于啟動ADC 數據轉換。數據轉換。vT4與與T2的功能和結構類似,與的功能和結構類似,與T2有區別的是,有區別的是,T4可以作為可以作為UART1的波特率發生器。的波特率發生器。 UART1波特率發生器方式波特率發生器方式1帶捕

46、捉的帶捕捉的16位定時器位定時器/計數器計數器 10自動重裝載的自動重裝載的16位定時器位定時器/計數器計數器 00工作方式工作方式CP/RL4RCLK1+TCLK1表表4-4 定時器定時器T4的方式選擇的方式選擇 49v位位7(TF4):T4溢出標志位溢出標志位T4溢出時由硬件置位。允許溢出時由硬件置位。允許T4中斷時,使中斷時,使CPU轉向轉向T4的中的中斷服務程序。不能由硬件自動清斷服務程序。不能由硬件自動清0,必須用軟件清,必須用軟件清0。RCLK0或或TCLK0為為1時(波特率發生器方式),時(波特率發生器方式),TF4不會被不會被置置1。v位位6(EXF4):T4外部中斷標志位外部

47、中斷標志位EXEN4為為“1”時,當時,當T4EX輸入引腳發生負跳變時,由硬件輸入引腳發生負跳變時,由硬件置位。允許置位。允許T4中斷時,使中斷時,使CPU轉向轉向T4的中斷服務程序。不能的中斷服務程序。不能由硬件自動清由硬件自動清0,必須用軟件清,必須用軟件清0。CP/RL4C/T4TR4EXEN4TCLK1RCLK1EXF4TF4字節字節地址地址C9H D7 D6 D5 D4 D3 D2 D1 D050v位位5 5(RCLK1RCLK1):):UART1UART1接收時鐘選擇標志位接收時鐘選擇標志位0 0:T1T1溢出作為接收時鐘。溢出作為接收時鐘。1 1:T4T4溢出作為接收時鐘。溢出作

48、為接收時鐘。v位位4 4(TCLK1TCLK1):):UART1UART1發送時鐘選擇標志位發送時鐘選擇標志位0 0:T1T1溢出作為發送時鐘。溢出作為發送時鐘。1 1:T4T4溢出作為發送時鐘。溢出作為發送時鐘。v位位3 3(EXEN2EXEN2):):T4T4外部允許標志位外部允許標志位0 0:忽:忽T2EXT2EX上的負跳變被略。上的負跳變被略。1 1:T2EXT2EX上的負跳變導致一次捕捉或重載。上的負跳變導致一次捕捉或重載。v位位2 2(TR4TR4):):T4T4運行控制位運行控制位0 0:禁止:禁止T4T4。1 1:允許:允許T4T4。51v位位1(C/T4):定時器):定時器/

49、計數器功能選擇位計數器功能選擇位0:定時器功能:定時器功能:T4由由T4M(CKCON.6)定義的時鐘加定義的時鐘加“1”。1:計數器功能:計數器功能:T4由外部輸入引腳由外部輸入引腳(T4)的負跳變加的負跳變加“1”。v位位0(CP/RL4):捕捉):捕捉/重載選擇位重載選擇位該位選擇該位選擇T4為捕捉還是自動重裝載方式。為捕捉還是自動重裝載方式。EXEN4必須為必須為1才能才能使使T4EX上的負跳變能夠被識別并觸發捕捉和重載。當上的負跳變能夠被識別并觸發捕捉和重載。當RCLK0或或TCLK0為為“1”時,時,T4將工作在自動重裝載方式。將工作在自動重裝載方式。0:當:當T4溢出或溢出或T4

50、EX上發生負跳變時將自動重裝載上發生負跳變時將自動重裝載1:在:在T4EX發生負跳變時捕捉。發生負跳變時捕捉。52v可編程計數器陣列可編程計數器陣列 (Programmable Counter Array)提供了增強提供了增強的定時器功能,與標準的定時器功能,與標準8051的定時器的定時器/計數器相比,需要的計數器相比,需要的CPU干預更少。干預更少。vC8051F020內部集成有一個可編程計數器陣列,稱為內部集成有一個可編程計數器陣列,稱為PCA0 。包含一個專用的包含一個專用的16位定時器位定時器/計數器和計數器和5個個16位位捕捉捕捉/比較模塊比較模塊。每個捕捉每個捕捉/比較模塊有自己的

51、比較模塊有自己的I/O線線 (CEXn)。通過配置交叉開關,。通過配置交叉開關,可以將可以將I/O線連接到并行線連接到并行I/O端口。端口。v定時定時/計數器有計數器有六個計數源:六個計數源:系統時鐘、系統時鐘系統時鐘、系統時鐘/4、系統時鐘、系統時鐘/12、外部振蕩器時鐘源、外部振蕩器時鐘源8分頻、定時器分頻、定時器0溢出、溢出、ECI線上的外部線上的外部時鐘信號。每個捕捉時鐘信號。每個捕捉/比較模塊可獨立工作在比較模塊可獨立工作在6種工作方式種工作方式之一。之一。536種時鐘源種時鐘源捕捕捉捉/比比較較模模塊塊54v1616位位PCAPCA定時定時/ /計數器由計數器由PCA0LPCA0L

52、(低字節)和(低字節)和PCA0HPCA0H(高字節)組(高字節)組成。在讀成。在讀PCA0LPCA0L的同時的同時自動鎖存自動鎖存PCA0HPCA0H的值。讀的值。讀PCA0HPCA0H或或PCA0LPCA0L不不影響計數器工作。原理框圖如影響計數器工作。原理框圖如圖圖4-104-10所示。所示。vPCA0MDPCA0MD寄存器中的寄存器中的CPS2-CPS0CPS2-CPS0位用于選擇位用于選擇PCAPCA定時定時/ /計數器的計計數器的計數脈沖源,如下表所示。數脈沖源,如下表所示。CPS2CPS1CPS0計數脈沖源計數脈沖源000系統時鐘的系統時鐘的12分頻分頻001系統時鐘的系統時鐘的

53、4分頻分頻010定時器定時器0溢出溢出011ECI負跳變(最大速率負跳變(最大速率=系統時鐘頻率系統時鐘頻率/4)100系統時鐘系統時鐘101外部振蕩源外部振蕩源8分頻分頻55讀讀PCA0L時鎖存時鎖存PCA0H56v定時定時/ /計數器溢出時計數器溢出時 ( (從從0 xFFFF0 xFFFF加加1 1到到0 x0000)0 x0000),PCA0MDPCA0MD中的中的CF CF 置置1 1,如果允許,如果允許CFCF中斷,則可以產生一個中斷請求。中斷,則可以產生一個中斷請求。vPCA0MDPCA0MD中的中的ECFECF位置位置1 1即可允許即可允許CFCF中斷,但要使中斷,但要使CFC

54、F中斷得到響應,中斷得到響應,必須先必須先總體允許總體允許PCA0PCA0中斷中斷(通過將(通過將EAEA位位 (IE.7) (IE.7) 和和EPCA0EPCA0位位 (EIE1.3) (EIE1.3) 置置1 1可總體允許可總體允許PCA0PCA0中斷)。中斷)。CFCF位不能由硬件自動清除,位不能由硬件自動清除,必須用軟件清必須用軟件清0 0。PCA0PCA0中斷配置的詳細信息如中斷配置的詳細信息如圖圖4-114-11所示。所示。v清除清除PCA0MDPCA0MD寄存器中的寄存器中的CIDLCIDL位則允許位則允許PCAPCA在微控制器內核處于在微控制器內核處于等待方式時繼續正常工作。等

55、待方式時繼續正常工作。 57將將PCA0MDPCA0MD中的中的ECFECF位置位置1 1即可即可允許允許CFCF中斷中斷各模塊中斷控制各模塊中斷控制總控開關總控開關58v5 5個捕捉個捕捉/ /比較模塊都可獨立工作在六種工作方式(由比較模塊都可獨立工作在六種工作方式(由PCA0CPMnPCA0CPMn設置),如下表所示:設置),如下表所示: PWM16ECOMCAPPCAPNMATTOGPWM工工 作作 方方 式式XX10000用用CEXn的正沿觸發捕捉的正沿觸發捕捉XX01000用用CEXn的負沿觸發捕捉的負沿觸發捕捉XX11000用用CEXn的電平改變觸發捕捉的電平改變觸發捕捉X1001

56、00軟件定時器軟件定時器X100110高速輸出高速輸出X100X11頻率輸出頻率輸出0100X018位脈沖寬度調制器位脈沖寬度調制器1100X0116位脈沖寬度調制器位脈沖寬度調制器59vCEXn引腳上有效的電平變化(引腳上有效的電平變化(CEXn輸入信號的高、輸入信號的高、低電平至少要持續兩個系統時鐘周期)可以捕捉低電平至少要持續兩個系統時鐘周期)可以捕捉PCA0定時定時 /計數器的值,將其裝入到對應模塊的計數器的值,將其裝入到對應模塊的16位捕捉位捕捉/比比較寄存器較寄存器 (PCA0CPHn和和PCA0CPLn) 進行比較。進行比較。v當發生匹配時,當發生匹配時,PCA0CN中的捕捉中的

57、捕捉/比較標志比較標志 (CCFn) 置置1,如果允許,如果允許CCF中斷,則可產生一個中斷請求。中斷,則可產生一個中斷請求。CCFn位不能由硬件自動清除,必須用軟件清位不能由硬件自動清除,必須用軟件清0。v原理框圖如原理框圖如圖圖4-12所示。所示。 60正正/負跳變捕捉負跳變捕捉中斷中斷捕捉捕捉61v置置1 PCA0CPMn寄存器中的寄存器中的ECOMn和和MATn位可將位可將PCA0設設置在軟件定時器方式。置在軟件定時器方式。v該方式將該方式將PCA0定時定時/計數器與模塊的計數器與模塊的16位捕捉位捕捉/比較寄存器比較寄存器 (PCA0CPHn和和PCA0CPLn) 進行比較進行比較。

58、匹配時,。匹配時,PCA0CN中的中的捕捉捕捉/比較標志比較標志 (CCFn) 置置1,如果允許,如果允許CCF中斷中斷,則可產生一個,則可產生一個中斷請求。中斷請求。CCFn位不能由硬件自動清除,位不能由硬件自動清除,必須用軟件清必須用軟件清0。v注意注意:向:向PCA0的捕捉的捕捉/比較寄存器寫入一個比較寄存器寫入一個16位值時,位值時,應先寫應先寫低字節,后寫高字節低字節,后寫高字節。對。對PCA0CPLn的寫入操作將清的寫入操作將清ECOMn位;位;PCA0CPHn寫入時將置寫入時將置1 ECOMn位。位。 v原理框圖如原理框圖如圖圖4-13所示。所示。62寫寫PCA0CPLnPCA0

59、CPLn 、 PCA0CPHnPCA0CPHn對對ECOMnECOMn的影響的影響匹配允匹配允許開關許開關中斷中斷比較比較63v該方式下,每當該方式下,每當PCAPCA的計數器與模塊的的計數器與模塊的1616位捕捉位捕捉/ /比較比較寄存器寄存器 (PCA0CPHn(PCA0CPHn和和PCA0CPLn) PCA0CPLn) 發生匹配時發生匹配時,模塊的,模塊的CEXnCEXn引腳上的引腳上的邏輯電平將發生改變邏輯電平將發生改變。v置置1 PCA0CPMn1 PCA0CPMn寄存器中的寄存器中的TOGnTOGn、MATnMATn和和ECOMnECOMn位可將位可將PCA0PCA0設置為該方式。

60、設置為該方式。v與軟件定時器方式一樣應注意,當向與軟件定時器方式一樣應注意,當向PCA0PCA0的捕捉的捕捉/ /比比較寄存器寫入一個較寄存器寫入一個1616位數值時,位數值時,應先寫低字節,后寫應先寫低字節,后寫高字節高字節。 v原理框圖如原理框圖如圖圖4-14所示。所示。64同上同上設置此設置此3位即為位即為該方式該方式匹配后電平發生改變匹配后電平發生改變65v該方式在對應的該方式在對應的CEXn引腳產生可編程頻率的方波。引腳產生可編程頻率的方波。捕捉捕捉/比較寄存器的高字節保持著輸出電平改變前要計比較寄存器的高字節保持著輸出電平改變前要計的的PCA時鐘數。時鐘數。 v所產生的方波的頻率由下式定義:所產生的方波的頻率由下式定義: FPCA是

溫馨提示

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

評論

0/150

提交評論