ZigBee無線傳感器網(wǎng)絡(luò)設(shè)計實(shí)戰(zhàn)第二章_第1頁
ZigBee無線傳感器網(wǎng)絡(luò)設(shè)計實(shí)戰(zhàn)第二章_第2頁
ZigBee無線傳感器網(wǎng)絡(luò)設(shè)計實(shí)戰(zhàn)第二章_第3頁
ZigBee無線傳感器網(wǎng)絡(luò)設(shè)計實(shí)戰(zhàn)第二章_第4頁
ZigBee無線傳感器網(wǎng)絡(luò)設(shè)計實(shí)戰(zhàn)第二章_第5頁
已閱讀5頁,還剩77頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

ZigBee無線傳感器網(wǎng)絡(luò)設(shè)計實(shí)戰(zhàn)2PARTTWOCC2530單片機(jī)基礎(chǔ)開發(fā)CONTENT目錄3412實(shí)訓(xùn)2-1通用數(shù)字接口控制實(shí)訓(xùn)2-2配置時鐘實(shí)訓(xùn)2-3配置外部中斷實(shí)訓(xùn)2-4配置定時器實(shí)訓(xùn)簡介CC2530擁有21個數(shù)字I/O(輸入/輸出)引腳,可以配置為通用數(shù)字I/O,也可以作為外部I/O信號連接到ADC、定時器或USART等外部設(shè)備。這些I/O口的功能是通過一系列寄存器配置,由軟件實(shí)現(xiàn)的。I/O口具有如下重要特性:21個數(shù)字I/O引腳??梢耘渲脼橥ㄓ肐/O或外部設(shè)備I/O。輸入口具備上拉或下拉能力。具有外部中斷能力。這21個I/O引腳都可以用作外部中斷源輸入口。因此,如果需要,外部設(shè)備可以通過這些I/O產(chǎn)生中斷。外部中斷功能也可以從睡眠模式喚醒設(shè)備。實(shí)訓(xùn)目的1

了解CC2530I/O口的輸入輸出狀態(tài)。2

了解CC2530通用數(shù)字I/O口的使用及相關(guān)寄存器的配置。實(shí)訓(xùn)內(nèi)容編寫一個用SW2控制LED0閃爍的程序。1燒錄程序并進(jìn)行硬件上的驗(yàn)證。2知識鏈接1CC2530芯片的引腳CC2530芯片共有40個引腳,如下圖所示。CC2530實(shí)物及引腳圖其中包括:

21個I/O引腳(P0_0~P0_7、P1_0~P1_7、P2_0~P2_4)。

2個2V~3.6V數(shù)字電源引腳(DVDD1~DVDD2)。

1個1.8V內(nèi)部數(shù)字電源引腳(DCOUPL)。

6個2V~3.6V模擬電源引腳(AVDD1~AVDD6)。

4個GND引腳(GND為接地引腳)。

2個32MHz外部晶振引腳(XOSC_Q1和XOSC_Q2)。

1個數(shù)字輸入復(fù)位引腳(RESET_N)。

2個射頻天線輸入輸出引腳(RF_N和RF_P)。

1個模擬I/O參考電流的外部精密偏置電阻引腳(RBIAS1)。2未使用的I/O引腳未使用的I/O引腳應(yīng)當(dāng)定義電平,不能懸空。一種方法是:使引腳不連接任何元器件,將其配置為具有上拉電阻的通用I/O輸入。這也是所有引腳復(fù)位后的狀態(tài)(只有P1.0和P1.1沒有上拉/下拉功能)。此外,這些引腳也可以配置為通用I/O輸出。為了避免過多的功耗,無論引腳配置為輸入口還是輸出口,都不應(yīng)該直接與VDD或GND連接。3低I/O電壓在實(shí)際應(yīng)用中,當(dāng)數(shù)字I/O電源電壓引腳DVDD1和DVDD2低于2.6V時,寄存器位PICTL.PADSC應(yīng)當(dāng)置為1,以獲得DC特性表中規(guī)定的輸出直流特性。4通用I/O當(dāng)用作通用I/O時,引腳可以組成3個8位端口,端口0、端口1和端口2表示為P0、P1和P2。其中,P0和P1是完全的8位端口,而P2僅有5位可用。所有的端口均可以位尋址,或通過特殊功能寄存器由P0、P1和P2字節(jié)尋址。每個端口引腳都可以單獨(dú)設(shè)置為通用I/O或外部設(shè)備I/O。除了兩個高驅(qū)動輸出口P1.0和P1.1各具備20mA的輸出驅(qū)動能力之外,所有的輸出口均具備4mA的驅(qū)動能力。寄存器PxSEL(其中x為端口的標(biāo)號0~2)用來設(shè)置每個端口引腳為通用I/O或者是外部設(shè)備I/O信號。作為缺省的情況,每當(dāng)復(fù)位之后,所有的數(shù)字輸入/輸出引腳都設(shè)置為通用輸入引腳。在任何時候,要改變一個端口引腳的方向,使用寄存器PxDIR來設(shè)置每個端口引腳為輸入或輸出即可。只要設(shè)置PxDIR中的指定位為1,其對應(yīng)的引腳口就被設(shè)置為輸出了。當(dāng)讀取端口寄存器P0、P1和P2的值時,不管引腳配置如何,輸入引腳上的邏輯值都被返回。這在執(zhí)行讀—修改—寫指令期間不適用。讀—修改—寫指令為:ANL,ORL,XRL,JBC,CPL,INC,DEC,DJNZ,MOV,CLR和SETB。在一個端口寄存器上操作,以下是正確的:當(dāng)目標(biāo)是端口寄存器P0、P1或P2中一個獨(dú)立的位時,寄存器的值(不是引腳上的值)被讀取、修改并寫回端口寄存器。用作輸入時,通用I/O端口引腳可以設(shè)置為上拉、下拉或三態(tài)操作模式。作為缺省的情況,復(fù)位之后,所有的端口均設(shè)置為帶上拉的輸入。要取消輸入的上拉或下拉功能,就要將PxINP中的對應(yīng)位設(shè)置為1。I/O端口引腳P1.0和P1.1沒有上拉/下拉功能。在電源模式PM1、PM2和PM3下,I/O引腳保留在進(jìn)入PM1、PM2、PM3時設(shè)置的I/O模式和輸出值(如果可用的話)。通用I/O引腳設(shè)置為輸入后,可以用于產(chǎn)生中斷。中斷可以設(shè)置在外部信號的上升或下降沿觸發(fā)。P0、P1和P2端口都有中斷使能位,對位于IEN1和IEN2寄存器內(nèi)的端口所有的位都是公共的,如下:5通用I/O中斷IEN1.P0IE:P0中斷使能。IEN2.P1IE:P1中斷使能。IEN2.P2IE:P2中斷使能。除了這些公共中斷使能外,每個端口的位都有位于SFR寄存器P0IEN、P1IEN和P2IEN的單獨(dú)的中斷使能。即使配置為外設(shè)I/O或通用輸出的I/O引腳使能時都有中斷產(chǎn)生。當(dāng)中斷條件發(fā)生在任意一個I/O引腳上,P0-P2中斷標(biāo)志寄存器中相應(yīng)的中斷狀態(tài)標(biāo)志P0IFG、P1IFG或P2IFG將被置為1。不管引腳是否設(shè)置了它的中斷使能位,中斷狀態(tài)標(biāo)志都被設(shè)置。當(dāng)中斷已經(jīng)執(zhí)行,中斷狀態(tài)標(biāo)志被清除,該標(biāo)志寫入0。這個標(biāo)志必須在清除CPU端口中斷標(biāo)志(PxIF)之前被清除。I/O端口的寄存器如下:P0:端口0。P1:端口1。P2:端口2。PERCFG:外設(shè)控制寄存器。APCFG:模擬外設(shè)I/O配置。P0SEL:端口0功能選擇寄存器。 P1SEL:端口1功能選擇寄存器。

P2SEL:端口2功能選擇寄存器。

P0DIR:端口0方向寄存器。

P1DIR:端口1方向寄存器。

P2DIR:端口2方向寄存器。P0INP:端口0輸入模式寄存器。P1INP:端口1輸入模式寄存器。P2INP:端口2輸入模式寄存器。P0IFG:端口0中斷狀態(tài)標(biāo)志寄存器。P1IFG:端口1中斷狀態(tài)標(biāo)志寄存器。P2IFG:端口2中斷狀態(tài)標(biāo)志寄存器。PICTL:中斷邊緣寄存器。P0IEN:端口0中斷掩碼寄存器。P1IEN:端口1中斷掩碼寄存器。P2IEN:端口2中斷掩碼寄存器。PMUX:掉電信號Mux寄存器。OBSSEL0:觀察輸出控制寄存器0。OBSSEL1:觀察輸出控制寄存器1。

OBSSEL2:觀察輸出控制寄存器2。

OBSSEL3:觀察輸出控制寄存器3。

OBSSEL4:觀察輸出控制寄存器4。

OBSSEL5:觀察輸出控制寄存器5。實(shí)施步驟啟動IAR軟件,新建一個工程“GPIO_SET”,具體步驟參見“實(shí)訓(xùn)1-2新建與調(diào)試ZigBee工程”。代碼部分參照書中描述。1實(shí)訓(xùn)源碼1)宏定義2實(shí)訓(xùn)部分代碼解析//定義控制燈的端口#defineLED0P1_0 //定義LED_1為P10口控制#defineLED1P1_1 //定義LED_2為P11口控制//按鍵控制口#defineKEY1P0_0 //定義按鍵為P00口控制#defineKEY2P0_1 //定義按鍵為P01口控制#defineKEY_11#defineKEY_222)LED初始化voidInitLed(void){P1DIR|=0x13; /*P10、P11定義為輸出*/

LED0=1;LED1=1;}3)KEY初始化voidInitKey(void){P0SEL&=~0X03;P0DIR&=~0X03; /*按鍵在P00、P01口,設(shè)置為輸入模式*/}4)按鍵掃描函數(shù)ucharkeyval=0;ucharkey_ct1=0;ucharKeyScan(void){if(KEY1==0) //低電平有效

{ //抖動處理

if(key_ct1<10)key_ct1++;elsekey_ct1=5;if(key_ct1==2)keyval|=0x01;elsekeyval&=~0x01;}else{key_ct1=0;keyval&=~0x01;}return(keyval);}5)延時函數(shù)voidDelay(uintn){uinti;for(i=0;i<n;i++);for(i=0;i<n;i++);for(i=0;i<n;i++);for(i=0;i<n;i++);for(i=0;i<n;i++);}6)主函數(shù)voidmain(void){InitLed(); //初始化LEDInitKey(); //初始化按鍵控制I/O口

while(1){if(KeyScan()&0x01) //讀取按鍵動作

{

LED0=!LED0;}LED1=!LED1;Delay(5000);}}成果檢驗(yàn)自我考核SW2按下后是否能改變LED(D8)的亮和滅。02查看LED(D9)是否閃爍。01修改程序,實(shí)現(xiàn)用KEY1和KEY2分別控制LED0和LED1的亮與滅。CONTENT目錄3412實(shí)訓(xùn)2-1通用數(shù)字接口控制實(shí)訓(xùn)2-2配置時鐘實(shí)訓(xùn)2-3配置外部中斷實(shí)訓(xùn)2-4配置定時器實(shí)訓(xùn)簡介時鐘是一個系統(tǒng)設(shè)備的心臟,沒有了時鐘,一切都無法運(yùn)作。CC2530設(shè)備有一個內(nèi)部系統(tǒng)時鐘(或稱為主時鐘)。該系統(tǒng)時鐘的源既可以用16MHzRC振蕩器(內(nèi)部RC),也可以采用32MHz晶體振蕩器(外部晶振)。時鐘的控制可以通過配置CLKCONCMDSFR寄存器執(zhí)行。CC2530還有一個32MHz時鐘源,可以是RC振蕩器或晶振,也由CLKCONCMD寄存器控制。CLKCONSTA寄存器是一個只讀寄存器,用于獲取當(dāng)前時鐘狀態(tài)。設(shè)備的振蕩器可以選擇高精度的晶體振蕩器,也可以選擇低功耗的高頻RC振蕩器。如果設(shè)備運(yùn)行RF收發(fā)器,必須使用32MHz晶體振蕩器。實(shí)訓(xùn)目的2了解CC2530時鐘功能的運(yùn)用。1了解CC2530時鐘寄存器的配置。實(shí)訓(xùn)內(nèi)容2燒錄程序并實(shí)施驗(yàn)證。1通過配置CC2530的時鐘寄存器實(shí)現(xiàn)LED閃爍。知識鏈接1振蕩器

1)高頻振蕩器32MHz晶體振蕩器16MHzRC振蕩器

2)低頻振蕩器32kHz晶體振蕩器32kHzRC振蕩器32kHz晶體振蕩器運(yùn)行在32.768kHz,并為系統(tǒng)需要的時間精度提供一個穩(wěn)定的時鐘信號。校準(zhǔn)時,32kHzRC振蕩器運(yùn)行在32.753kHz。校準(zhǔn)只能發(fā)生在32MHz晶體振蕩器使能的時候,32kHzRC振蕩器可以用于降低成本和電源消耗。2系統(tǒng)時鐘系統(tǒng)時鐘是從所選的主系統(tǒng)時鐘源獲得的,主系統(tǒng)時鐘源可以是32MHz晶體振蕩器或16MHzRC振蕩器。CLKCONCMD.OSC位用來選擇主系統(tǒng)時鐘源。要使用RF收發(fā)器,必須選擇高速且穩(wěn)定的32MHz晶體振蕩器。332kHz振蕩器CC2530設(shè)備中有兩個32kHz振蕩器(即32kHz晶體振蕩器和32kHzRC振蕩器)作為32kHz時鐘的時鐘源。默認(rèn)情況下,當(dāng)復(fù)位后,32kHzRC振蕩器使能,被選為32kHz時鐘源。所選的32kHz時鐘源驅(qū)動睡眠定時器,為看門狗定時器產(chǎn)生標(biāo)記,且當(dāng)計算睡眠定時器的睡眠時間時用作定時器2的一個選通脈沖。選擇哪個振蕩器作為32kHz時鐘源,是通過CLKCONCMD.OSC32K寄存器位執(zhí)行的。實(shí)施步驟啟動IAR軟件,新建一個工程“TIMER_SET”,具體步驟參見“實(shí)訓(xùn)1-2新建與調(diào)試ZigBee工程”。代碼部分參照書中描述。1實(shí)訓(xùn)源碼1)宏定義2實(shí)訓(xùn)部分代碼解析#defineDISABLE_ALL_INTERRUPTS()(IEN0=IEN1=IEN2=0x00)2)時鐘配置#defineSET_MAIN_CLOCK_SOURCE(source)\do{if(source){CLKCONCMD|=0x40;if(TICKSPD==0){CLKCONCMD|=0x08;}SLEEPCMD|=0x04;}else{SLEEPCMD&=~0x04;asm("NOP");CLKCONCMD&=~0x47;SLEEPCMD|=0x04;}}while(0)3)功能實(shí)現(xiàn)while(1){SET_MAIN_CLOCK_SOURCE(RC);for(i=0;i<20;i++){UINT16timeOut=0xFFFF;while(timeOut--);LED1=!LED1; //LED閃爍

}

SET_MAIN_CLOCK_SOURCE(CRYSTAL);for(i=0;i<20;i++){UINT16timeOut=0xFFFF;while(timeOut--);LED1=!LED1; //LED閃爍

}}成果檢驗(yàn)自我考核認(rèn)真觀察閃爍的頻率是否有規(guī)律地變化(一會慢閃一會快閃)。02查看LED1(D9)是否閃爍。01修改程序,實(shí)現(xiàn)通過按鍵來修改不同頻率模式下的工作。CONTENT目錄3412實(shí)訓(xùn)2-1通用數(shù)字接口控制實(shí)訓(xùn)2-2配置時鐘實(shí)訓(xùn)2-3配置外部中斷實(shí)訓(xùn)2-4配置定時器實(shí)訓(xùn)簡介所謂中斷,是指CPU在正常執(zhí)行程序的過程中,由于內(nèi)部或外部事件的觸發(fā)或由程序的預(yù)先安排,引起CPU暫時中斷當(dāng)前正在運(yùn)行的程序,而轉(zhuǎn)去執(zhí)行為內(nèi)部或外部事件或程序預(yù)先安排的事件的服務(wù)子程序。待中斷服務(wù)子程序執(zhí)行完畢后,CPU再返回到被暫時中斷的程序處(斷點(diǎn))繼續(xù)執(zhí)行原來的程序。CC2530有18個中斷源。每個中斷源都有它自己的位于一系列SFR寄存器中的中斷請求標(biāo)志。相應(yīng)標(biāo)志位請求的每個中斷可以分別使能或禁用。實(shí)訓(xùn)目的2了解CC2530外部中斷功能的運(yùn)用。1了解CC2530外部中斷的配置。實(shí)訓(xùn)內(nèi)容2燒錄程序并進(jìn)行硬件上的驗(yàn)證。1用中斷編寫一個使用SW1按鍵控制LED亮滅的程序。通用I/O引腳在設(shè)置為輸入后,可以用于產(chǎn)生中斷。中斷可以設(shè)置在外部信號的上升或下降沿觸發(fā)。P0、P1和P2端口都有中斷使能位,對位于IENl、IEN2寄存器內(nèi)的端口所有的位都是公共的。如下:1通用I/O中斷IEN1.P0IE:P0中斷使能。IEN2.P1IE:P1中斷使能。IEN2.P2IE:P2中斷使能。知識鏈接除了這些公共中斷使能之外,每個端口的位都有位于SFR寄存器P0IEN、P1IEN和P2IEN的單獨(dú)的中斷使能。即使配置為外設(shè)I/O或通用輸出的I/O引腳使能時,也能產(chǎn)生中斷。當(dāng)中斷條件發(fā)生在任意一個I/O引腳上時,P0~P2中斷標(biāo)志寄存器P0IFG、P1IFG或P2IFG中相應(yīng)的中斷狀態(tài)標(biāo)志將設(shè)置為1。不管引腳是否設(shè)置了它的中斷使能位,中斷狀態(tài)標(biāo)志都被設(shè)置。當(dāng)中斷已經(jīng)執(zhí)行,中斷狀態(tài)標(biāo)志被清除,該標(biāo)志寫入0。這個標(biāo)志必須在清除CPU端口中斷標(biāo)志(PxIF)之前被清除。用于中斷的SFR寄存器總結(jié)如下:

P0IEN:P0中斷使能。

P1IEN:P1中斷使能。

P2IEN:P2中斷使能。

PICTL:P0、P1和P2觸發(fā)沿設(shè)置。

P0IFG:P0中斷標(biāo)志。

P1IFG:P1中斷標(biāo)志。

P2IFG:P2中斷標(biāo)志。每個中斷請求可以通過設(shè)置中斷使能SFR寄存器的中斷使能位IEN0、IEN1或IEN2使能或禁止。CPU的中斷使能相對應(yīng)的SFR寄存器。2中斷配置(1)清除中斷標(biāo)志。(2)如果有,則設(shè)置SFR寄存器中對應(yīng)的各中斷使能位為1。(3)設(shè)置寄存器IEN0、IEN1或IEN2中對應(yīng)的中斷使能位為1。(4)設(shè)置IEN0中的EA位為1使能全局中斷。(5)在中斷對應(yīng)的向量地址上,運(yùn)行該中斷的服務(wù)程序。為了使能任一中斷功能,應(yīng)當(dāng)采取下列步驟:實(shí)施步驟啟動IAR軟件,新建一個工程“EXINT_SET”,具體步驟參見“實(shí)訓(xùn)1-2新建與調(diào)試ZigBee工程”。代碼部分參照書中描述。1實(shí)訓(xùn)源碼1)KEY初始化2實(shí)訓(xùn)部分代碼解析voidInitKey(void){P0SEL&=~0X03;P0DIR&=~0X03; //按鍵在P00、P01口,設(shè)置為輸入模式

P0IEN|=0X02; //P01設(shè)置為中斷方式

PICTL|=0X01; //下降沿觸發(fā)

EA=1;IEN1|=0X20; //P0設(shè)置為中斷方式;P0IFG|=0x00; //初始化中斷標(biāo)志位}2)中斷處理函數(shù)#pragmavector=P0INT_VECTOR__interruptvoidP0_ISR(void){if(P0IFG>0) //按鍵中斷

{P0IFG=0;Delay(100);if(KEY2==0) //按鍵中斷

{KeyFlag=0;}}P0IF=0; //清中斷標(biāo)志

}3)功能實(shí)現(xiàn)while(1){if(KeyFlag==0){KeyFlag=!KeyFlag;LED1=!LED1;LED0=!LED0;}}成果檢驗(yàn)自我考核修改程序,實(shí)現(xiàn)不同按鍵中斷來控制不同LED的亮和滅。02修改程序,實(shí)現(xiàn)SW2按鍵的中斷來控制LED的亮和滅。01按下SW1后是否能改變LED(D8與D9)的亮和滅狀態(tài)。CONTENT目錄3412實(shí)訓(xùn)2-1通用數(shù)字接口控制實(shí)訓(xùn)2-2配置時鐘實(shí)訓(xùn)2-3配置外部中斷實(shí)訓(xùn)2-4配置定時器實(shí)訓(xùn)簡介定時器1是一個獨(dú)立的16位定時器,支持典型的定時/計數(shù)功能,比如輸入捕獲、輸出比較和PWM功能。該定時器擁有5個獨(dú)立的捕獲/比較通道。每個通道使用一個I/O引腳。定時器1用于范圍廣泛的控制和測量應(yīng)用,5個通道具備正計數(shù)/倒計數(shù)模式,允許諸如電機(jī)控制應(yīng)用的實(shí)現(xiàn)。綜上所述,定時器1的功能特征如下:

5個捕獲/比較通道 上升沿、下降沿或任何邊沿的輸入捕獲 設(shè)置、清除或切換輸出比較 自由運(yùn)行、?;蛘嫈?shù)/倒計數(shù)操作

1,8,32或128時鐘分頻 在每個捕獲/比較和最終計數(shù)上生成中斷請求

DMA觸發(fā)功能實(shí)訓(xùn)目的2了解CC2530T1定時器功能的運(yùn)用。1了解CC2530T1定時器的相關(guān)寄存器配置。實(shí)訓(xùn)內(nèi)容2燒錄程序并進(jìn)行硬件上的驗(yàn)證。1用T1定時器控制LED1每秒鐘閃爍一次。CC2530有5個定時器,即定時器1(16位定時器)、定時器2(MAC定時器)、定時器3和定時器4(均為8位定時器)、睡眠定時器。1定時器簡介知識鏈接一個16位定時器,具有定時器/計數(shù)器/PWM功能。定時器1專門為支持IEEE802.15.4MAC或軟件中其他時槽的協(xié)議設(shè)計。定時器2(MAC定時器)兩個都是8位定時器,具有定時器/計數(shù)器/PWM功能。它們有一個可編程的分頻器、一個8位的周期值、一個可編程的計數(shù)器通道(具有一個8位的比較值)。每個計數(shù)器通道可以用作一個PWM輸出。定時器3和定時器4一個超低功耗的定時器,用于計算32kHz晶體振蕩器或32kHzRC振蕩器的周期。睡眠定時器在所有工作模式下(除了供電模式3)都可持續(xù)運(yùn)行。這一定時器的典型應(yīng)用是作為實(shí)時計數(shù)器,或作為喚醒定時器以跳出供電模式1或供電模式2。睡眠定時器定時器1包括一個16位計數(shù)器,在每個活動時鐘邊沿遞增或遞減。活動時鐘邊沿周期由寄存器位CLKCONCMD.TICKSPD定義,它設(shè)置全球系統(tǒng)時鐘的劃分,提供了從0.25MHz到32MHz的不同的時鐘標(biāo)簽頻率(可以使用32MHz晶體振蕩器作為時鐘源)。216位計數(shù)器這在定時器1中,由T1CTL.DIV設(shè)置的分頻器值進(jìn)一步劃分。這個分頻器值可以為1,8,32或128。因此,當(dāng)32MHz晶體振蕩器用作系統(tǒng)時鐘源時,定時器1可以使用的最低時鐘頻率是1953.125Hz,最高是32MHz。當(dāng)16MHzRC振蕩器用作系統(tǒng)時鐘源時,定時器1可以使用的最高時鐘頻率是16MHz。這個16位計數(shù)器可以作為一個自由運(yùn)行計數(shù)器、模計數(shù)器,或在中心對齊的PWM里使用的正計數(shù)/倒計數(shù)器運(yùn)行??梢酝ㄟ^兩個8位的SFR寄存器T1CNTH和T1CNTL讀取16位計數(shù)器的值,分別包含高位字節(jié)和低位字節(jié)。當(dāng)讀取T1CNTL時,計數(shù)器的高位字節(jié)在那時被緩沖到T1CNTH,以便高位字節(jié)可以從T1CNTH中讀出。因此,T1CNTL必須總是在讀取T1CNTH之前首先讀取。對T1CNTL寄存器的所有寫入訪問將復(fù)位16位計數(shù)器。當(dāng)達(dá)到最終計數(shù)值(溢出)時,計數(shù)器產(chǎn)生一個中斷請求。可以用T1CTL控制寄存器設(shè)置啟動和停止該計數(shù)器。當(dāng)一個不是00的值寫入到T1CTL.MODE時,計數(shù)器開始運(yùn)行。如果00寫入到T1CTL.MODE,計數(shù)器將停止在它現(xiàn)在的值上。一般來說,控制寄存器T1CTL用于控制定時器1的操作,狀態(tài)寄存器T1STAT保存中斷標(biāo)志。下面介紹一下各種操作模式。3定時器1的操作1)自由運(yùn)行模式在自由運(yùn)行操作模式下,計數(shù)器從0x0000開始,在每個活動時鐘邊沿增加1。當(dāng)計數(shù)器達(dá)到0xFFFF(溢出)時,計數(shù)器載入0x0000,繼續(xù)遞增它的值,如右圖所示。自由運(yùn)行模式當(dāng)達(dá)到最終計數(shù)值0xFFFF時,設(shè)置標(biāo)志IRCON.T1IF和T1STAT.OVFIF。如果設(shè)置了相應(yīng)的中斷屏蔽位TIMIF.OVFIM以及IEN1.T1EN,將產(chǎn)生一個中斷請求。自由運(yùn)行模式可以用于產(chǎn)生獨(dú)立的時間間隔和輸出信號頻率。2)模模式當(dāng)定時器運(yùn)行在模模式時,16位計數(shù)器從0x0000開始,在每個活動時鐘邊沿增加1。當(dāng)計數(shù)器達(dá)到T1CC0(溢出)即寄存器T1CC0H:T1CC0L保存的最終計數(shù)值時,計數(shù)器將復(fù)位到0

溫馨提示

  • 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

提交評論