SOC單片機(jī)原理及應(yīng)用教學(xué)課件第4章-C8051F單片機(jī)的片內(nèi)功能部件_第1頁
SOC單片機(jī)原理及應(yīng)用教學(xué)課件第4章-C8051F單片機(jī)的片內(nèi)功能部件_第2頁
SOC單片機(jī)原理及應(yīng)用教學(xué)課件第4章-C8051F單片機(jī)的片內(nèi)功能部件_第3頁
SOC單片機(jī)原理及應(yīng)用教學(xué)課件第4章-C8051F單片機(jī)的片內(nèi)功能部件_第4頁
SOC單片機(jī)原理及應(yīng)用教學(xué)課件第4章-C8051F單片機(jī)的片內(nèi)功能部件_第5頁
已閱讀5頁,還剩211頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第4章 SOC單片機(jī)的片內(nèi)功能部件 4.1 定時器/計數(shù)器 4.2 可編程計數(shù)器陣列 4.3 UART通信接口 4.4 SMBus 4.5 SPI總線 第1頁,共216頁。4.1 定時器/計數(shù)器 定時和計數(shù)功能最終都是通過計數(shù)實(shí)現(xiàn)的,若計數(shù)的事件源是周期固定的脈沖,則可以實(shí)現(xiàn)定時功能,否則只能實(shí)現(xiàn)計數(shù)功能。因此可以將定時和計數(shù)功能由一個部件實(shí)現(xiàn)。實(shí)現(xiàn)定時和計數(shù)的方法一般有軟件、專用硬件電路和可編程定時器/計數(shù)器三種方法。采用軟件只能定時,且占用CPU時間,降低了CPU的使用效率。專用硬件電路可實(shí)現(xiàn)精確的定時和計數(shù),但參數(shù)調(diào)節(jié)不便。可編程定時器計數(shù)器,不占用CPU時間,能與CPU并行工作,實(shí)現(xiàn)精

2、確的定時和計數(shù),又可以通過編程設(shè)置其工作方式和其它參數(shù),因此使用方便。 第2頁,共216頁。4.1 定時器/計數(shù)器C8051F020內(nèi)部有T0T4共5個16位定時器/計數(shù)器T0T2與MCS-51中的定時器/計數(shù)器兼容T3 和T4 為兩個16位自動重裝初值的定時器,既可以作為通用定時器使用,也可以用于ADC和SMBus中。 5個定時器/計數(shù)器的工作方式如表4-1所示。 第3頁,共216頁。表4-1 C8051F020定時器/計數(shù)器的工作方式 定時器工作方式T0/T1 T2/T4 T3 方式013位定時器/計數(shù)器 自動重裝載的16位定時器/計數(shù)器自動重裝載的16位計數(shù)器/定時器方式116位定時器/

3、計數(shù)器帶捕捉的16位定時器/計數(shù)器方式28位自動重裝載的定時器/計數(shù)器UART0/ UART1的波特率發(fā)生器方式3兩個8位定時器/計數(shù)器(只限于定時器0)第4頁,共216頁。4.1.1 定時器的一般結(jié)構(gòu)和工作原理 模式選擇計數(shù)器定時器啟/停控制執(zhí)行機(jī)構(gòu)減1計數(shù):如Intel 8253加1計數(shù):如T0T4溢出標(biāo)志查詢中斷第5頁,共216頁。最大定時時間TMAX=2nT計數(shù) 式中n由工作方式?jīng)Q定,T計數(shù)為定時器/計數(shù)器的計數(shù)脈沖周期時間,由C8051F的主脈沖或主脈沖經(jīng)12分頻提供,是否需要12分頻取決于對時鐘控制寄存器CKCON的設(shè)定(提供12分頻選項是為了與標(biāo)準(zhǔn)8051兼容)。 第6頁,共21

4、6頁。時鐘控制寄存器CKCON位7:未用。讀=0b,寫=忽略。位6-3:T4M-T0M:T4到T0的時鐘選擇(不包含T3,T3的時鐘選擇由T3控制寄存器TMR3CN的第0位T3XCLK決定)。 0:定時器按系統(tǒng)時鐘的12分頻計數(shù) 1:定時器按系統(tǒng)時鐘頻率計數(shù)位2-0:保留。讀=000b,寫入值必須是000b。 第7頁,共216頁。定時、計數(shù)方式 定時方式:每一個計數(shù)周期(T計數(shù))計數(shù)器加1,直至計滿溢出(從全1到全0)產(chǎn)生中斷請求。對于一個N位的加1計數(shù)器,若T計數(shù)是已知的,則從初值a開始加1計數(shù)至溢出所占用的時間為:當(dāng)N=8、a=0時,最大定時時間為: T=256T計數(shù)計數(shù)方式:外部輸入信號

5、的下降沿觸發(fā)計數(shù),計數(shù)器在每個時鐘周期或時鐘周期的12分頻采樣外部輸入信號,若一個周期的采樣值為1,下一個周期的采樣值為0,則計數(shù)器加1,故識別一個從1到0的跳變需2個周期,所以,對外部輸入信號最高的計數(shù)速率是時鐘頻率的12或1/24(取決于是否12分頻)。同時,外部輸入信號的高電平與低電平保持時間均需大于一個周期。第8頁,共216頁。4.1.2 定時器/計數(shù)器T0和T1 對T0和T1的訪問和控制是通過操作SFR實(shí)現(xiàn)的。T0和T1都是16位的加1計數(shù)器,訪問時以兩個字節(jié)的形式出現(xiàn):TL0+TH0、TL1+TH1。TCON用于允許/禁止定時器0和定時器1并指示它們的工作狀態(tài)。TMOD中的方式選擇

6、位M1、M0設(shè)置為四種工作方式(方式0 方式3)之一, T1設(shè)置為方式3將停止計數(shù)。第9頁,共216頁。1、方式寄存器TMOD T0M0T0M1C/T0GATE0T1M0T1M1C/ T1GATE1TMOD字節(jié)地址89H D7 D6 D5 D4 D3 D2 D1 D0控制T0控制T1方式選擇00:方式001:方式110:方式211:方式3定時/計數(shù)選擇0:定時器1:計數(shù)器門控位第10頁,共216頁。2、控制寄存器TCON IT0IE0IT1IE1TR0TF0TR1TF1TCON字節(jié)地址88H D7 D6 D5 D4 D3 D2 D1 D0控制外部中斷控制T1、T0啟/??刂艷ATE=0時O:停

7、1:啟溢出標(biāo)志1:溢出0:不溢出第11頁,共216頁。3T0和T1的交叉開關(guān)配置第12頁,共216頁。4T0和T1的工作方式和計數(shù)器結(jié)構(gòu) 表4-2 定時器T0、T1的工作方式M1M0工作方式功 能 說 明00013位定時器計數(shù)器01116位定時器計數(shù)器102自動重裝初值的8位定時器計數(shù)器113僅適用于T0,分為兩個獨(dú)立的8位計數(shù)器,T1停止計數(shù)第13頁,共216頁。(1)工作方式0 13位計數(shù)器啟/??刂芓R0=1啟動計數(shù)GATE0=0時:GATE0=1時:TR0=1且INT0=1啟動計數(shù)時基選擇定時/計數(shù)模式選擇第14頁,共216頁。(1)工作方式0若T0工作于方式0的定時器模式,計數(shù)初值為

8、a,則T0從初值a加1計數(shù)至溢出所需的時間為: 式中fOSC為系統(tǒng)時鐘頻率,T0M為T0的時鐘選擇位。例:如果fOSC12MHz,則T0M=0時,T(213a)s;T0M=1時,T(213a)/12s。第15頁,共216頁。(2)工作方式1與方式0的差別僅僅在于計數(shù)器的位數(shù)不同,方式1為16位的定時器計數(shù)器。T0工作于方式1時,由TH0作為高8位,TL0作為低8位,構(gòu)成一個16位計數(shù)器。若T0工作于方式1定時,計數(shù)初值為a,fOSC12MHz,則T0從計數(shù)初值a加1計數(shù)到溢出的定時時間為: T(216a)s 或 T(216a)/12s。第16頁,共216頁。(3)工作方式28位自動重裝初值第1

9、7頁,共216頁。(3)工作方式2適用于需要重復(fù)定時或計數(shù)的場合。定時精度比較高,但定時時間較短。定時時間可用下式計算: 第18頁,共216頁。(4)工作方式3只適用于T0,若T1設(shè)置為方式3,則停止計數(shù)。 兩個獨(dú)立8位計數(shù)器借用T1的資源第19頁,共216頁。5T0和T1的初始化 初始化步驟 初始化TMOD根據(jù)需要初始化CKCON裝入初值中斷設(shè)置(IE、IP)啟動定時/計數(shù)器(TCON)計數(shù)器方式初值的計算 TC=MC 為計數(shù)器的模,與工作方式有關(guān) ,C為需要的計數(shù)次數(shù)定時器方式初值的計算T=(MTC)T計數(shù) T計數(shù)=CLK或12CLK TC=MT/T計數(shù) 第20頁,共216頁。5T0和T1

10、的初始化最大定時時間(fOSC12MHz、T0M=0 ):方式0:TMAX = 2131s = 8.192ms方式1:TMAX = 2161s = 65.536ms方式2、3: TMAX = 281s = 0.256ms第21頁,共216頁。6T0和T1的應(yīng)用舉例 例4.1 若fOSC=12MHz,請分別計算T0M=0和T0M=1兩種情況下,定時2ms所需的初值,并給出T0的初始化程序。解: T0M=0 時: fOSC= 12MHz,方式2、3的最大定時時間只有0.256ms,因此要想獲得2ms的定時時間,必須用方式0或方式1。方式0TC=2132ms/1us=6192=1830H=00011

11、00000110000B 即:TH0=0C1H;TL0=10H(高三位為0) 方式1TC=2162ms/1us=63536=F830H 即:TH0=0F8H;TL0=30H第22頁,共216頁。6T0和T1的應(yīng)用舉例T0M=1 時:要達(dá)到2ms的定時時間,只能使用方式1。根據(jù)公式可算出此時的定時器初值為:TC=2ms12MHz=212103=41536=A240H即,TH0=0A2H,TL0=40H。第23頁,共216頁。初始化程序 void T0_mode1_2ms_init() CKCON &= 0 xf7;/T0計數(shù)源選擇系統(tǒng)脈沖的12分頻TMOD=0 x01; /T0方式1定時 TH0

12、=0 xf8; /初值 TL0=0 x30; TCON |= 0 x10; /啟動T0,可用TR0=1代替 6T0和T1的應(yīng)用舉例 ?第24頁,共216頁。6T0和T1的應(yīng)用舉例給定時器賦初值的語句也可以采用如下方法: TH0=(65536-2000)/256; TL0=(65536-2000)%256;或 TH0=-2000/256; TL0=-2000%256;或 TH0=-20008; TL0=-2000;/-2000超出TL0的表示范圍,將高位截去第25頁,共216頁。6T0和T1的應(yīng)用舉例例4.2 若fOSC=12MHz,T1工作于方式1,產(chǎn)生50ms的定時中斷,TF1為高級中斷源。

13、試編寫主程序和中斷服務(wù)程序,使P1.0產(chǎn)生周期為1s的方波。 解:讓P1.0每500ms取反一次即可實(shí)現(xiàn)。定時器的單次定時時間不可能達(dá)到500ms,但可通過多次定時產(chǎn)生500ms的定時時間,如讓T1工作在方式1,單次定時時間為50ms,那么T1中斷10次就是500ms的時間。 (1)確定定時常數(shù)假設(shè)使用fOSC的12分頻作為計數(shù)源,則T計數(shù)12/fOSC 12/(12106)1s由公式TC=MT/T計數(shù),可知TC=216-5010315536=3CB0HTH1=0 x3c,TL0=0 xb0。 第26頁,共216頁。6T0和T1的應(yīng)用舉例(2)初始化程序 包括T1初始化和中斷系統(tǒng)初始化,主要是

14、對IP、IE、CKCON、TCON、TMOD的相應(yīng)位進(jìn)行正確的設(shè)置,并將時間常數(shù)送入T1。本例中將初始化操作放在主程序中完成,當(dāng)程序規(guī)模較大時,應(yīng)編寫單獨(dú)的初始化程序,以利于程序的模塊化設(shè)計。(3)中斷服務(wù)程序 中斷服務(wù)程序除了完成要求的方波產(chǎn)生這一工作之外,還要注意將時間常數(shù)重新送入T1中,為下一次產(chǎn)生中斷作準(zhǔn)備。第27頁,共216頁。程序清單如下(主程序): #include sbit P1_0 = P10;int count=10;/10次T1中斷為500msvoid main( void ) CKCON&=0 xef; /T1的計數(shù)源選擇系統(tǒng)脈沖的12分頻 TMOD=0 x10; /T

15、1方式1 XBR2=0 x40; /并行端口輸出使能 P1_0=0; TH1=0 x3c; /初值 TL1=0 xb0; IE|=0 x88; /允許T1中斷 IP|=0 x08; /TF1中斷為高級中斷 TCON|=0 x40; /啟動T1 While(1); /死循環(huán),等待中斷,產(chǎn)生方波第28頁,共216頁。程序清單如下(中斷服務(wù)程序):void Timer1_ISR (void) interrupt 3 TH1=0 x3c; /重裝初值 TL1|=0 xb0; count-; /中斷計數(shù) if (count=0) /500ms到,重賦計數(shù)初值,P1.0取反 count=10; P1_0=

16、!P1_0; 問題:為什么用TL1|=0 xb0;而非TL1=0 xb0?第29頁,共216頁。程序清單如下(查詢式程序):#include sbit P1_0= P10;void main( ) int count=10;/10次T1中斷為500ms CKCON&=0 xef;/T1的計數(shù)源選擇系統(tǒng)脈沖的12分頻 XBR2=0 x40; TMOD=0 x10; /T1方式1 P1_0=0; TR1=1; /啟動T1第30頁,共216頁。程序清單如下(查詢式程序): For(; ;) /死循環(huán),產(chǎn)生方波 TH1=-50000/256; /T1初值 TL1=-50000%256; Do whil

17、e(!TF1); /查詢等待TF1置位, TF1=0; count-; If (count=0) count=10;P1_0=!P1_0; 第31頁,共216頁。4.1.3 定時器/計數(shù)器T2和T4 T2和T4為16位定時/計數(shù)器,T2由TL2(低字節(jié))和TH2(高字節(jié))組成。 T4由TL4(低字節(jié))和TH4(高字節(jié))組成。唯一區(qū)別是在作波特率發(fā)生器使用時,T2用作UART0的波特率發(fā)生器,而T4用作UART1的波特率發(fā)生器。 以下以T2為例。C/T2=0時,工作在定時方式,由CKCON的T2M位指定不分頻或12分頻。C/T2 =1時,工作在計數(shù)方式, T2輸入引腳上的負(fù)跳變使計數(shù)器加“1”。

18、T2還可以用于啟動ADC數(shù)據(jù)轉(zhuǎn)換。T4還可以用于觸發(fā)DAC的輸出更新。 有三種工作方式(由T2CON中的配置位選擇):自動重裝初值的16位定時器/計數(shù)器方式、帶捕捉的16位定時器/計數(shù)器方式和波特率發(fā)生器方式。第32頁,共216頁。表4-4 定時器/計數(shù)器T2和T4的特殊功能寄存器 特殊功能寄存器符號地址尋址方式復(fù)位值定時器T2控制寄存器T2CON0 xC8字節(jié)、位0 x00定時器T2重裝/捕捉寄存器低字節(jié)RCAP2L0 xCA字節(jié)0 x00定時器T2重裝/捕捉寄存器高字節(jié)RCAP2H0 xCB字節(jié)0 x00定時器T2低字節(jié)TL20 xCC字節(jié)0 x00定時器T2高字節(jié)TH20 xCD字節(jié)0

19、x00定時器T4控制寄存器T4CON0 xC9字節(jié)0 x00定時器T4重裝/捕捉寄存器低字節(jié)RCAP4L0 xE4字節(jié)0 x00定時器T4重裝/捕捉寄存器高字節(jié)RCAP4H0 xE5字節(jié)0 x00定時器T4低字節(jié)TL40 xF4字節(jié)0 x00定時器T4高字節(jié)TH40 xF5字節(jié)0 x00第33頁,共216頁。1T2控制寄存器T2CON 位7(TF2):T2溢出標(biāo)志位T2溢出時由硬件置位。允許T2中斷時,使CPU轉(zhuǎn)向T2的中斷服務(wù)程序。不能由硬件自動清0,必須用軟件清0。RCLK0或TCLK0為1時(波特率發(fā)生器方式),TF2不會被置1。位6(EXF2):T2外部中斷標(biāo)志位EXEN2為“1”時,

20、當(dāng)T2EX輸入引腳發(fā)生負(fù)跳變時,由硬件置位。允許T2中斷時,使CPU轉(zhuǎn)向T2的中斷服務(wù)程序。不能由硬件自動清0,必須用軟件清0。CP/RL2C/T2TR2EXEN2TCLK0RCLK0EXF2TF2字節(jié)地址C8H D7 D6 D5 D4 D3 D2 D1 D0第34頁,共216頁。1T2控制寄存器T2CON位5(RCLK0):UART0接收時鐘選擇標(biāo)志位0:T1溢出作為接收時鐘。1:T2溢出作為接收時鐘。位4(TCLK0):UART0發(fā)送時鐘選擇標(biāo)志位0:T1溢出作為發(fā)送時鐘。1:T2溢出作為發(fā)送時鐘。位3(EXEN2):T2外部允許標(biāo)志位0:T2EX上的負(fù)跳變被忽略。1:T2EX上的負(fù)跳變導(dǎo)

21、致一次捕捉或重載,并置位EXF2。位2(TR2):T2啟/??刂莆?:停止。1:啟動。第35頁,共216頁。1T2控制寄存器T2CON位1(C/T2):定時器/計數(shù)器功能選擇位0:定時器功能,由T2M(CKCON.5)定義的時鐘加“1”。1:計數(shù)器功能,由外部輸入引腳(T2)的負(fù)跳變加“1”。位0(CP/RL2):捕捉/重載選擇位EXEN2必須為1才能使T2EX上的負(fù)跳變能夠被識別并觸發(fā)捕捉和重載。當(dāng)RCLK0或TCLK0為“1”時,該位被忽略,T2將工作在自動重裝載方式。0:T2溢出或T2EX上發(fā)生負(fù)跳變時將自動重裝載1:T2EX發(fā)生負(fù)跳變時捕捉。第36頁,共216頁。2定時器2的交叉開關(guān)配

22、置第37頁,共216頁。3T2的工作方式和計數(shù)器結(jié)構(gòu) (1)方式0:自動重裝初值的16位定時器/計數(shù)器方式原理框圖如圖4-7所示。表4-5 T2的方式選擇 RCLK0TCLK0CP/RL2工作方式000自動重裝載的16位定時器/計數(shù)器 001帶捕捉的16位定時器/計數(shù)器 01UART0的發(fā)送波特率發(fā)生器方式10UART0的接收波特率發(fā)生器方式11UART0的接收和發(fā)送波特率發(fā)生器方式第38頁,共216頁。(1)方式0:16位自動重裝初值方式 自動重裝初值兩中斷標(biāo)志為0時忽略T2EX負(fù)跳變,不產(chǎn)生EXF2中斷第39頁,共216頁。(2)方式1:16位帶捕捉方式 RCLK0=0、TCLK0=0、C

23、P/RL2=1時,T2工作在此方式EXEN2=1時為允許捕捉方式,T2EX引腳上的負(fù)跳變將TH2、TL2的當(dāng)前值捕捉到RCAP2H、RCAP2L寄存器,同時置EXF2=1,發(fā)出中斷請求。EXEN2=0時,RCAP2H、PCAP2L不起作用,此時T2與T0、T1的方式1完全相同。即:C/T20時為16位定時器方式,C/T21時為16位計數(shù)器方式,計數(shù)溢出時TF21,發(fā)送中斷請求信號。 原理框圖如圖4-8所示。 第40頁,共216頁。(2)方式1:16位帶捕捉方式是否捕捉捕捉并產(chǎn)生EXF2中斷第41頁,共216頁。(3)方式2:波特率發(fā)生器方式 RCLK或TCLK置1時,T2工作于波特率發(fā)生器方式

24、。 與自動重裝載方式相似。但不置位TF2,也不產(chǎn)生中斷。溢出事件用作UART0的移位時鐘輸入。 T2溢出可用于產(chǎn)生獨(dú)立的發(fā)送或接收波特率,也可同時產(chǎn)生發(fā)送和接收波特率,取決于T2CON的設(shè)置。 T2的計數(shù)源可以是系統(tǒng)時鐘的二分頻,也可以是T2引腳上的輸入,取決于C/T2的設(shè)置。 如果EXEN2為1,則T2EX 引腳上的負(fù)跳變將置位EXF2標(biāo)志,并產(chǎn)生一個T2中斷(如果允許)。因此,T2EX 輸入可以被用作額外的外部中斷源。原理框圖如圖4-9所示。第42頁,共216頁。(3)方式2:波特率發(fā)生器方式做UART0波特率發(fā)生器T1作UART0波特率發(fā)生器產(chǎn)生外部中斷時基選擇第43頁,共216頁。(3

25、)方式2:波特率發(fā)生器方式當(dāng)選擇系統(tǒng)時鐘的二分頻作計數(shù)源時,T2 為UART0提供的波特率可以用如下公式計算:當(dāng)選擇外部引腳T2上的輸入作為時基時,T2為UART0提供的波特率可以用如下公式計算: 第44頁,共216頁。4.1.4 定時器/計數(shù)器T31. 定時器T3的結(jié)構(gòu) 16位定時/計數(shù)器,由TMR3L(低字節(jié))和TMR3H(高字節(jié))組成。 T3的時鐘輸入可以通過程序選擇為外部振蕩器的8分頻、系統(tǒng)時鐘或系統(tǒng)時鐘的12分頻。 T3只有自動重裝初值一種工作方式,初值保存在TMR3RLL(低字節(jié))和TMR3RLH(高字節(jié))兩個SFR中,T3沒有計數(shù)器方式。 除作為通用定時/計數(shù)器使用外,T3還可以

26、用于啟動ADC數(shù)據(jù)轉(zhuǎn)換、SMBus定時等。 與T3相關(guān)的SFR如表4-6所示,原理框圖如圖4-8所示。第45頁,共216頁。表4-6 定時器T3的特殊功能寄存器特殊功能寄存器符號地址尋址方式復(fù)位值定時器3控制寄存器TMR3CN0 x91字節(jié)0 x00定時器3重載寄存器低字節(jié)TMR3RLL0 x 92字節(jié)0 x00定時器3重載寄存器高字節(jié)TMR3RLH0 x 93字節(jié)0 x00定時器3低字節(jié)TMR3L0 x 94字節(jié)0 x00定時器3高字節(jié)TMR3H0 x 95字節(jié)0 x00第46頁,共216頁。1. 定時器T3的結(jié)構(gòu)時基選擇僅此一種方式啟動ADC第47頁,共216頁。2定時器3控制寄存器TMR

27、3CN 位7(TF3):T3溢出標(biāo)志位溢出時置1,不能由硬件自動清0,必須用軟件清0 位2(TR3):T3運(yùn)行控制位 0:停止。1:啟動。位1(T3M):T3時鐘選擇位 0:T3使用系統(tǒng)時鐘的12分頻。1:T3使用系統(tǒng)時鐘。位0(T3XCLK):T3外部時鐘選擇位 0:由T3M定義。1:外部振蕩器輸入的8分頻。 T3XCLKT3MTR3-TF3字節(jié)地址C8H D7 D6 D5 D4 D3 D2 D1 D0第48頁,共216頁。3T3應(yīng)用舉例 例 4.3 假設(shè)C8051F020的并行口P2、P3連接16個共陽極LED指示燈,試編寫程序使P3口所接的LED燈循環(huán)點(diǎn)亮,P2口所接的LED燈實(shí)現(xiàn)走馬燈

28、效果。(實(shí)驗(yàn)四) 解:要實(shí)現(xiàn)題目要求的效果,只需要定期更新P2、P3口的狀態(tài)即可。這里可以使用T3定時器再加軟件計數(shù)的方法達(dá)到所要求的時間,假設(shè)T3定時0.1秒產(chǎn)生中斷,則軟件計數(shù)器每0.1秒加1,讓計數(shù)器加到5時,改變P2、P3口的狀態(tài),就可以實(shí)現(xiàn)每秒2次刷新LED燈的狀態(tài)。第49頁,共216頁。3T3應(yīng)用舉例#include sfr16 TMR3RL = 0 x92; /16位SFR sfr16 TMR3 = 0 x94; #define SYSCLK 2000000 /系統(tǒng)時鐘使用2MHz/函數(shù)聲明void PORT_Init(void); void Timer3_Init(int co

29、unts);void Timer3_ISR(void);/P2口8個LED (共陰極)產(chǎn)生走馬燈效果所需的數(shù)據(jù) unsigned int xdata p2led=0 x7f,0 xbf,0 xdf,0 xef,0 xf7, 0 xfb,0 xfd,0 xfe; 第50頁,共216頁。3T3應(yīng)用舉例void main (void) WDTCN = 0 xde; /禁止看門狗定時器 WDTCN = 0 xad;PORT_Init(); /端口初始化 Timer3_Init(SYSCLK/12/10); /T3初始化,產(chǎn)生0.1秒的定時中斷 EA = 1; /開中斷 while (1) ; /循環(huán)等

30、待T3中斷,產(chǎn)生走馬燈效果 void PORT_Init (void) XBR2 = 0 x40; /使能交叉開關(guān)第51頁,共216頁。3T3應(yīng)用舉例void Timer3_Init (int counts) TMR3CN = 0 x00; TMR3RL = -counts; /T3賦初值,也可以采用8位SFR方式,向例4.2那樣 TMR3 = 0 xffff; /立即重載 EIE2 |= 0 x01; /開T3中斷 ,見P42 EIE2格式 TMR3CN |= 0 x04; /啟動T3第52頁,共216頁。3T3應(yīng)用舉例void Timer3_ISR (void) interrupt 14

31、static int count; static int i=9,j=0; static int led=0 xff; /P3口LED燈的初始狀態(tài) TMR3CN &= (0 x80); /清TF3 count+; if(count=5) /T3中斷5次更新一次LED燈狀態(tài) count=0; P3=led;P2=p2ledj; /查表led=led1; i-; j+; if(j=8) j=0; /P2口LED燈循環(huán)一個周期 if(i=0) i=9; led=0 xff; /P3口LED燈循環(huán)一個周期 為什么i=9,而不是i=8?因?yàn)檫€有全亮和全滅兩個狀態(tài),所以共10個狀態(tài)。第53頁,共216頁。

32、4.2 可編程計數(shù)器陣列 可編程計數(shù)器陣列 (Programmable Counter Array)提供了增強(qiáng)的定時器功能,與標(biāo)準(zhǔn)8051的定時器/計數(shù)器相比,需要的CPU干預(yù)更少。C8051F020內(nèi)部集成有一個可編程計數(shù)器陣列,稱為PCA0 。包含一個專用的16位定時器/計數(shù)器和5個16位捕捉/比較模塊。每個捕捉/比較模塊有自己的I/O線 (CEXn)。通過配置交叉開關(guān),可以將I/O線連接到并行I/O端口。定時/計數(shù)器有六個計數(shù)源(由PCA0MD中的CPS2-CPS0位選擇):系統(tǒng)時鐘、系統(tǒng)時鐘/4、系統(tǒng)時鐘/12、外部振蕩器時鐘源8分頻、定時器0溢出、ECI線上的外部時鐘信號。每個捕捉/

33、比較模塊可獨(dú)立工作在6種工作方式之一。第54頁,共216頁。4.2 可編程計數(shù)器陣列6種時鐘源捕捉/比較模塊第55頁,共216頁。4.2.1 PCA0交叉開關(guān)配置第56頁,共216頁。表4-7 PCA0的功能引腳與I/O端口的連接PCA0ME2(XBR0.5)PCA0ME12(XBR0.4)PCA0ME0(XBR0.3)連到I/O端口連接數(shù)000所有PCA0口都不配置I/O端口0001CEX01010CEX0、CEX12011CEX0、CEX1、CEX23100CEX0、CEX1、CEX2、CEX341CEX0、CEX1、CEX2、CEX3、CEX45第57頁,共216頁。4.2.2 PCA0

34、的特殊功能寄存器特殊功能寄存器符號地址尋址方式復(fù)位值PCA0控制寄存器PCA0CN0 xD8字節(jié)、位0 x00PCA0方式選擇寄存器PCA0MD0 x D9字節(jié)0 x00PCA0捕捉/比較寄存器PCA0CPMn0 x 8A字節(jié)0 x00PCA0定時器/計數(shù)器低字節(jié)PCA0L0 x E9字節(jié)0 x00PCA0定時器/計數(shù)器高字節(jié)PCA0H0 x F9字節(jié)0 x00PCA0捕捉模塊低字節(jié)PCA0CPLn0 x EA0 xEE字節(jié)0 x00PCA0捕捉模塊高字節(jié)PCA0CPHn0 x FA0 xFE字節(jié)0 x00第58頁,共216頁。4.2.2 PCA特殊功能寄存器 1、PCA控制寄存器PCA0CN

35、 CCF0CCF1CCF2CCF3CCF4-CRCF字節(jié)地址D8H D7 D6 D5 D4 D3 D2 D1 D0位7(CF):PCA定時器/計數(shù)器溢出標(biāo)志位PCA0定時/計數(shù)器溢出時由硬件置位。如允許CF中斷,將使CPU轉(zhuǎn)向CF中斷服務(wù)程序。不能由硬件自動清0,必須用軟件清0。 位6(CR):PCA0定時/計數(shù)器運(yùn)行控制位0:停止計數(shù) 1:啟動計數(shù)位5:未用。讀=0b,寫=忽略。位4-位0(CCF4- CCF0):PCA0模塊4-模塊0捕捉/比較標(biāo)志位匹配或捕捉時由硬件置位。允許CCF中斷時,將使CPU轉(zhuǎn)向CCF中斷服務(wù)程序。不能由硬件自動清0,必須用軟件清0。第59頁,共216頁。2、PC

36、A0方式選擇寄存器PCA0MD 位7(CIDL):PCA0定時/計數(shù)器等待控制位0:當(dāng)CPU處于等待方式時,PCA0繼續(xù)正常工作。1:當(dāng)CPU處于等待方式時,PCA0停止工作。位6-4:未用。讀=000b,寫=忽略。位3-1(CPS2-CPS0):PCA0定時器/計數(shù)器計數(shù)時鐘源選擇位這些位選擇PCA0計數(shù)器的計數(shù)時鐘源,如表4-5所示。位0(ECF)PCA0定時器/計數(shù)器溢出中斷允許位0:禁止CF中斷。 1:允許CF中斷。ECFCPS0CPS1CPS2-CIDL字節(jié)地址D9H D7 D6 D5 D4 D3 D2 D1 D0第60頁,共216頁。3、PCA0捕捉/比較寄存器PCA0CPMn P

37、CA0CPMn地址: PCA0CPM0=0 xDA (n=0)、PCA0CPMl=0 xDB (n=1) PCA0CPM2=0 xDC (n=2)、PCA0CPM3=0 xDD (n=3) PCA0CPM4=0 xDE (n=4)位7:PWMl6n:16位脈沖寬度調(diào)制允許位 當(dāng)工作在脈沖寬度調(diào)制方式時 (PWMn=1),該位選擇16位PWM方式。 0:選擇8位PWM。1:選擇16位PWM。ECCFnPWMnTOGnMATnCAPNnCAPPnECOMnPWM16n字節(jié)地址0DA-0DEH D7 D6 D5 D4 D3 D2 D1 D0第61頁,共216頁。位6(ECOMn):比較器功能允許位0

38、:禁止。1:允許。位5(CAPPn):正沿捕捉功能允許位0:禁止。1:允許。位4(CAPNn):負(fù)沿捕捉功能允許位0:禁止。1:允許。位3(MATn):匹配功能允許位0:禁止。1:允許。位2(TOGn):電平切換功能允許位 0:禁止。1:允許。位1(PWMn):脈寬凋制方式允許位 0:禁止。1:允許。位0(ECCFn):捕捉/比較標(biāo)志中斷允許位0:禁止CCFn中斷1:當(dāng)CCFn位置1時,允許捕捉/比較標(biāo)志的中斷請求。3、PCA0捕捉/比較寄存器PCA0CPMn 第62頁,共216頁。4.2.3 PCA定時器/計數(shù)器 16位PCA定時/計數(shù)器由PCA0L(低字節(jié))和PCA0H(高字節(jié))組成。在讀

39、PCA0L的同時自動鎖存PCA0H的值。讀PCA0H或PCA0L不影響計數(shù)器工作。原理框圖如圖4-10所示。PCA0MD寄存器中的CPS2-CPS0位用于選擇PCA定時/計數(shù)器的計數(shù)脈沖源,如下表所示。CPS2CPS1CPS0計數(shù)脈沖源000系統(tǒng)時鐘的12分頻001系統(tǒng)時鐘的4分頻010定時器0溢出011ECI負(fù)跳變(最大速率=系統(tǒng)時鐘頻率/4)100系統(tǒng)時鐘101外部振蕩源8分頻第63頁,共216頁。4.2.3 PCA定時器/計數(shù)器清除PCA0MD寄存器中的CIDL位則允許PCA在微控制器內(nèi)核處于等待方式時繼續(xù)正常工作。定時/計數(shù)器溢出時 (從0 xFFFF加1到0 x0000),PCA0M

40、D中的CF 置1,如果允許CF中斷,則可以產(chǎn)生一個中斷請求。PCA0MD中的ECF位置1即可允許CF中斷,但要使CF中斷得到響應(yīng),必須先總體允許PCA0中斷(通過將EA位 (IE.7) 和EPCA0位 (EIE1.3) 置1可總體允許PCA0中斷)。CF位不能由硬件自動清除,必須用軟件清0。PCA0中斷配置的詳細(xì)信息如圖4-11所示。第64頁,共216頁。4.2.3 PCA定時器/計數(shù)器讀PCA0L時鎖存PCA0H第65頁,共216頁。4.2.3 PCA定時器/計數(shù)器將PCA0MD中的ECF位置1即可允許CF中斷各模塊中斷控制總控開關(guān)第66頁,共216頁。4.2.4 PCA捕捉/比較模塊 5個

41、捕捉/比較模塊都可獨(dú)立工作在六種工作方式(由PCA0CPMn設(shè)置),如下表所示: PWM16ECOMCAPPCAPNMATTOGPWM工 作 方 式XX10000用CEXn的正沿觸發(fā)捕捉XX01000用CEXn的負(fù)沿觸發(fā)捕捉XX11000用CEXn的電平改變觸發(fā)捕捉X100100軟件定時(比較)器X100110高速輸出X100X11頻率輸出0100X018位脈沖寬度調(diào)制器1100X0116位脈沖寬度調(diào)制器第67頁,共216頁。1邊沿觸發(fā)的捕捉方式CEXn引腳上有效的電平變化(CEXn輸入信號的高、低電平至少要持續(xù)兩個系統(tǒng)時鐘周期)可以捕捉PCA0定時 /計數(shù)器的值,將其裝入到對應(yīng)模塊的16位捕

42、捉/比較寄存器 (PCA0CPHn和PCA0CPLn) 進(jìn)行比較。當(dāng)捕捉發(fā)生時,PCA0CN中的捕捉/比較標(biāo)志 (CCFn) 置1,如果允許CCF中斷,則可產(chǎn)生一個中斷請求。CCFn位不能由硬件自動清除,必須用軟件清0。原理框圖如圖4-12所示。 第68頁,共216頁。1邊沿觸發(fā)的捕捉方式正/負(fù)跳變捕捉中斷捕捉第69頁,共216頁。2軟件定時(比較)器方式 置1 PCA0CPMn寄存器中的ECOMn和MATn位可將PCA0設(shè)置在軟件定時(比較)器方式。該方式將PCA0定時/計數(shù)器與模塊的16位捕捉/比較寄存器 (PCA0CPHn和PCA0CPLn) 進(jìn)行比較。匹配時,PCA0CN中的捕捉/比較

43、標(biāo)志 (CCFn) 置1,如果允許CCF中斷,則可產(chǎn)生一個中斷請求。CCFn位不能由硬件自動清除,必須用軟件清0。注意:向PCA0的捕捉/比較寄存器寫入一個16位值時,應(yīng)先寫低字節(jié),后寫高字節(jié)。對PCA0CPLn的寫入操作將清ECOMn位;PCA0CPHn寫入時將置1 ECOMn位。 原理框圖如圖4-13所示。第70頁,共216頁。2軟件定時(比較)器方式寫PCA0CPLn 、 PCA0CPHn對ECOMn的影響匹配允許開關(guān)中斷比較第71頁,共216頁。3高速輸出方式 該方式下,每當(dāng)PCA的計數(shù)器與模塊的16位捕捉/比較寄存器 (PCA0CPHn和PCA0CPLn) 發(fā)生匹配時,模塊的CEXn

44、引腳上的邏輯電平將發(fā)生改變。置1 PCA0CPMn寄存器中的TOGn、MATn和ECOMn位可將PCA0設(shè)置為該方式。與軟件定時器方式一樣應(yīng)注意,當(dāng)向PCA0的捕捉/比較寄存器寫入一個16位數(shù)值時,應(yīng)先寫低字節(jié),后寫高字節(jié)。 原理框圖如圖4-14所示。第72頁,共216頁。3高速輸出方式同上設(shè)置此3位即為該方式匹配后電平發(fā)生改變第73頁,共216頁。4頻率輸出方式 該方式在對應(yīng)的CEXn引腳產(chǎn)生可編程頻率的方波。捕捉/比較寄存器的高字節(jié)保持著輸出電平改變前要計的PCA時鐘數(shù)。 所產(chǎn)生的方波的頻率由下式定義: FPCA是由PCA方式寄存器PCA0MD中的GPS2-0位選擇的PCA時鐘頻率。第74

45、頁,共216頁。4頻率輸出方式捕捉/比較模塊的低字節(jié)與PCA0計數(shù)器的低字節(jié)比較,兩者匹配時,CEXn的電平發(fā)生改變,高字節(jié)中的偏移值加到PCA0CPLn。注意:在該方式下如果允許模塊匹配 (CCFn) 中斷,則發(fā)生中斷的速率為2fCEXn。置位PCA0CPMn寄存器中ECOMn、TOGn和PWMn位可將PCA0設(shè)置為頻率輸出方式。第75頁,共216頁。4頻率輸出方式匹配時,電平改變,PCA0CPHn加到PCA0CPLn第76頁,共216頁。58位脈寬調(diào)制器方式 該方式下,每個模塊都可以獨(dú)立地產(chǎn)生脈寬調(diào)制 (PWM)輸出。PWM的頻率取決于PCA0定時/計數(shù)器的計數(shù)時鐘源。使用模塊的捕捉/比較

46、寄存器PCA0CPLn可以改變PWM輸出信號的占空比。當(dāng)PCA0定時器/計數(shù)器的低字節(jié) (PCA0L)與PCA0CPLn中的值相等時,CEXn輸出高電平,當(dāng)PCA0L中的計數(shù)值溢出時,CEXn輸出低電平。當(dāng)定時器/計數(shù)器的低字節(jié)PCA0L溢出時(從0 xFF到0 x00),PCA0CPHn中的值自動裝入PCA0CPLn,不需軟件干預(yù)。置1 PCA0CPMn寄存器中的ECOMn和PWMn位可將PCA0設(shè)置為8位脈沖寬度調(diào)制器方式。第77頁,共216頁。58位脈寬調(diào)制器方式匹配時置1溢出時置0并將PCA0CPHn裝入PCA0CPLn第78頁,共216頁。58位脈寬調(diào)制器方式8位PWM方式的占空比由

47、下面方程給出: 可見,最大占空比為100% (PCA0CPHn=0),最小占空比為0.39% (PCA0CPHn =0 xFF)。可以通過清0 ECOMn位產(chǎn)生0%的占空比。 第79頁,共216頁。616位脈寬調(diào)制器方式16位方式,其余與8位方式相同第80頁,共216頁。4.2.5 PCA應(yīng)用舉例例4.4 PCA0模塊0工作在16位PWM方式驅(qū)動直流電機(jī)。1. 工作原理設(shè)置PCA0模塊0工作在16位PWM方式,從P0.0輸出方波脈沖驅(qū)動直流電機(jī),原理圖如圖4-22所示。改變方波的占空比,可以實(shí)現(xiàn)對直流電機(jī)的調(diào)速控制。第81頁,共216頁。4.2.5 PCA應(yīng)用舉例2. 相關(guān)特殊功能寄存器的配置

48、(1)I/O端口交叉開關(guān)寄存器XBR0 選擇PCA0ME=001B,CEX0連接到端口P0.0。XBR0=0 x08。(2)I/O端口交叉開關(guān)寄存器XBR2 選擇WEAKPUD=0,允許全局弱上拉;XBARE=1,使能交叉開關(guān)。XBR2=0 x40。CP0EECI0EPCA0ME2PCA0ME1PCA0ME0UART0ENSPI0ENSMB0EN00001000WEAKPUDXBARE-T4EXET4EUART1EEMIFLECNVSTE01000000第82頁,共216頁。4.2.5 PCA應(yīng)用舉例(3)PCA0方式選擇寄存器PCA0MD 選擇CIDL=0,系統(tǒng)空閑時,PCA0繼續(xù)工作;CP

49、S=100,使用系統(tǒng)時鐘為PCA0計數(shù)器時鐘源;ECF=1,允許PCA0定時器/計數(shù)器溢出中斷。PCA0MD=0 x09。(4)PCA0捕捉/比較模塊0寄存器PCA0CPM0 選擇PWM160=1,ECOM0=1,PWM0=1,使捕捉/比較模塊0工作在16位PWM方式;ECCF0=1,允許捕捉/比較標(biāo)志CCF0的中斷請求;MAT0=1,使能匹配功能。PCA0CPM0=0 xcb。 CIDL-CPS2CPS1CPS0ECF00001001PWM160ECOM0CAPP0CAPN0MAT0TOG0PWM0ECCF011001011第83頁,共216頁。4.2.5 PCA應(yīng)用舉例(5)PCA0捕捉模

50、塊0寄存器PCA0CPL0和 PCA0CPH0由前可知,16位PWM方式的占空比為: 占空比= 這里,模塊0的PCA0CPn由PCA0CPL0和 PCA0CPH0組成。PCA0CPL0和 PCA0CPH0的值由占空比決定,即占空比= 由該式可以計算出常用占空比與PCA0CPL0和PCA0CPH0的對應(yīng)關(guān)系如表4-11所示。 第84頁,共216頁。4.2.5 PCA應(yīng)用舉例PCA0CPH0PCA0CPL0占空比0 x800 x00(0 x1000-0 x8000)/0 x10000=1/20 xc00 x00(0 x1000-0 xc000)/0 x10000=1/40 xe00 x00(0 x

51、1000-0 xe000)/0 x10000=1/8表4-11 16位PWM方式的占空比與PCA0CPL0和PCA0CPH0的對應(yīng)關(guān)系第85頁,共216頁。4.2.5 PCA應(yīng)用舉例(6)內(nèi)部振蕩器控制寄存器OSCICN 選擇IFRDY=1,內(nèi)部振蕩器準(zhǔn)備好標(biāo)志,內(nèi)部振蕩器頻率按照IFCN位指定的速度運(yùn)行,這里IFCN=11,選擇16MHz。I0SCEN=1,使能內(nèi)部振蕩器。OSCICN=0 x17。MSCLKE-IFRDYCLKSLIOSCENIFCN1IFCN000010111第86頁,共216頁。4.2.5 PCA應(yīng)用舉例3. 程序清單#include /函數(shù)原型聲明void Port_

52、Init(void); /端口初始化程序void PCA0_Init(void); /PCA0初始化程序void PCA0_ISR(void); /PCA0中斷服務(wù)程序void main(void)WDTCN=0 xde; /關(guān)看門狗WDTCN=0 xad;Port_Init( );PCA0_Init( );EA=1;while(1); /等待中斷產(chǎn)生PWM波形第87頁,共216頁。4.2.5 PCA應(yīng)用舉例void Port_Init(void) /端口初始化程序XBR0=0 x08; /CEX0配置到端口P0.0XBR2=0 x40; /使能交叉開關(guān)和弱上拉void PCA0_Init(v

53、oid) /PCA0初始化程序EIE1=0 x08; /允許PCA0申請中斷OSCICN=0 x17; /采用內(nèi)部時鐘,頻率為16MHzPCA0MD=0 x09; /使用系統(tǒng)時鐘源,允許PCA0定時器/計數(shù)器溢出中斷PCA0L=0 x00; /定時器/計數(shù)器初值為0 x0000PCA0H=0 x00;PCA0CPM0=0 xcb; /PCA0模塊0為16位PWM方式,允許CCF0中斷PCA0CPL0=0 x00;PCA0CPH0=0 x80;PCA0CN=0 x40; /啟動PCA0定時器/計數(shù)器 第88頁,共216頁。4.2.5 PCA應(yīng)用舉例void PCA0_ISR(void) inte

54、rrupt 9 /PCA0中斷服務(wù)子程序CF=0; /清溢出中斷標(biāo)志CCF0=0; /清匹配中斷標(biāo)志 第89頁,共216頁。4.2.5 PCA應(yīng)用舉例例4.5 用PCA0邊沿觸發(fā)的捕捉方式測量方波的周期。1. 工作原理PCA0負(fù)邊沿觸發(fā)的捕捉方式測量方波周期的電路圖如圖4-23所示。將CEX0配置到P0.0端口,并將被測方波信號由P0.0輸入到C8051F020中的PCA0。 第90頁,共216頁。4.2.5 PCA應(yīng)用舉例輸入時鐘信號間隔T微妙后便產(chǎn)生1次負(fù)跳變并觸發(fā)中斷,產(chǎn)生捕捉。這時在t時間寬度內(nèi),兩次負(fù)跳變之間的計數(shù)值存放在16位寄存器PCA0CPH0和CPA0CPL0中,可以讀出。設(shè)

55、該計數(shù)值的數(shù)值為D,則或式中,T為被測方波的周期。16MHz是程序選定的振蕩器頻率,它作為PCA0計數(shù)器的計數(shù)時鐘源。為提高測量精度,可以選擇測量的時間寬度為100T,D為100T內(nèi)的計數(shù)值的總和,然后再取平均值可得到T:第91頁,共216頁。4.2.5 PCA應(yīng)用舉例2. 相關(guān)特殊功能寄存器的配置 1)I/O端口交叉開關(guān)寄存器XBR0和XBR2與例4.4相同,XBR0=0 x08,XBR2=0 x40。2)PCA0方式選擇寄存器(PCA0MD)與例4.4相同,PCA0MD=0 x09。3)PCA0捕捉/比較模塊0寄存器PCA0CPM0選擇CAPN0=1,使捕捉/比較模塊0工作在負(fù)邊沿觸發(fā)的捕

56、捉方式;ECCF0=1,允許捕捉/比較標(biāo)志CCF0的中斷請求。 PCA0CPM0=0 x11。4)內(nèi)部振蕩器控制寄存器OSCICN與例4.4相同,OSCICN=0 x17。第92頁,共216頁。4.2.5 PCA應(yīng)用舉例3. 程序清單#include /函數(shù)原型聲明void PORT_Init (void); /I/O端口初始化void PCA0_Init (void); /PCA0初始化void PCA0_ISR (void); /PCA0中斷服務(wù)子程序unsigned char i; /PCA0中斷次數(shù)計數(shù)器void main (void) float T,data0; /用于頻率計算 W

57、DTCN = 0 xde; /關(guān)看門狗 WDTCN = 0 xad; PORT_Init (); i=0; EA = 1; /開中斷 PCA0_Init (); /PCA0初始化 while (i0 x64) ; /等待PCA0 中斷100次 PCA0CN=0 x00; /禁止PCA0定時器/計數(shù)器 EIE1 = 0 x00; /禁止PCA0中斷 data0=(PCA0CPH0*256+PCA0CPL0); /處理來自PCA0CPH0和PCA0CPL0的數(shù)據(jù) data0=data0/16.0; T=data0/100.0; /計算被測波形的周期,以s為單位第93頁,共216頁。4.2.5 PC

58、A應(yīng)用舉例void PORT_Init (void) /端口初始化程序 XBR0 = 0 x08;/CEX0配置到端口P0.0 XBR2 = 0 x40; /使能交叉開關(guān)和弱上拉void PCA0_Init (void) /PCA0初始化程序EIE1 = 0 x08; /使能PCA0中斷OSCICN=0 x17; /采用內(nèi)部時鐘,頻率為16MHzPCA0MD = 0 x09; /使用系統(tǒng)時鐘源,允許PCA0定時器/計數(shù)器溢出中斷PCA0L = 0 x00;PCA0H = 0 x00;PCA0CPM0 = 0 x11; /PCA0負(fù)邊沿捕捉方式,允許輔捉/比較標(biāo)志的中斷申請PCA0CPL0 =

59、0 x00;PCA0CPH0 = 0 x00; PCA0CN=0 x40;/啟動PCA0定時器/計數(shù)器void PCA0_ISR (void) interrupt 9 /PCA0中斷服務(wù)子程序i+;/計中斷次數(shù)CCF0 = 0;/清匹配中斷標(biāo)志CCF0第94頁,共216頁。PCA應(yīng)用舉例void SYSCLK_Init (void) /時鐘初始化 int i; OSCXCN = 0 x67; /外部晶振22.1184MHz for (i=0; i 256; i+) ;/延時 while (!(OSCXCN & 0 x80) ;/等待外部晶振穩(wěn)定 OSCICN = 0 x88; /選擇外部晶振作

60、系統(tǒng)時鐘源,允許時鐘丟失檢測 void Init_PCA0(void) /PCA0初始化 PCA0MD=0 x08; /PCA0采用系統(tǒng)時鐘,禁止PCA0定時器溢出中斷EIE1|=0 x08; /允許PCA0中斷 PCA0CPM0=0 x21; /模塊0上升沿中斷允許 PCA0CPM1=0 x21; /模塊1 CR=0; /關(guān)PCA0第95頁,共216頁。4.3 UART通信接口 C8051F具有豐富的串行通信接口。包括2個UART通信接口、一個與I2C兼容的SMBus接口和一個SPI接口。UART串行接口是全雙工串行通信接口,即能同時進(jìn)行串行發(fā)送和接收。它可以作UART(通用異步接收和發(fā)送器

溫馨提示

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

最新文檔

評論

0/150

提交評論