




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、430單片機(jī)個(gè)人總結(jié)一 時(shí)鐘部分(msp430f149單片機(jī))1、關(guān)于XT2XT2Sx=11、XT2OFF=0時(shí),XT2來(lái)源于外部時(shí)鐘信號(hào),也就是可以直接在XT2IN管腳上施加一個(gè)時(shí)鐘信號(hào),而不需要在XT2IN和XT2OUT上加時(shí)鐘源 圖12、關(guān)于XT1當(dāng)LFXT1Sx=11、OSCOFF=0時(shí),XIN和XOUT之間可以不加晶振,只需在XIN管腳上施加一個(gè)時(shí)鐘信號(hào)既可當(dāng)在XIN和XOUT兩端加高頻晶振時(shí),晶振之間需要配置電容當(dāng)在XIN和XOUT兩端加低頻晶振時(shí),晶振之間可以不加電容,而通過(guò)單片機(jī)內(nèi)部給其配置電容 圖23、關(guān)于MCLKPUC信號(hào)之后,MCLK來(lái)源于DCO時(shí)鐘信號(hào)(可以不設(shè)置,系統(tǒng)
2、PUC之后會(huì)有一個(gè)默認(rèn)值),如果要設(shè)置MCLK來(lái)源于XT1或者XT2,步驟如下:1、打開需要的晶體振蕩器;(作為MCLK的時(shí)鐘源,而不是默認(rèn)的DCO)2、清除OFIFG標(biāo)志位;3、延時(shí)50us;4、測(cè)試OFIFG標(biāo)志位。若OFIFG=0,說(shuō)明設(shè)置成功;若OFIFG=1,設(shè)置未成功,重復(fù)23步驟;程序如下 BCSCTL1 &=XT2OFF; / XT2 is on do IFG1 &=OFIFG; / clear OSCFault flag for(i=255;i>0;i-); / time for flag to set while(IFG1 & OFIFG);
3、BCSCTL2 |=SELM_2+DIVM_3; /f(mclk)=f(XT2)/8;二 IO口部分(msp430f149單片機(jī))430單片機(jī)的IO口都是復(fù)用的,除了做普通IO口用外,還可以作為片內(nèi)外設(shè)用,圖3所示為 msp430g2553單片機(jī)的P1.6、P1.7管腳說(shuō)明,可以發(fā)現(xiàn)P1.6管腳除了作為普通的IO之外,還可以作為TA0.1、TCLK等用,那么應(yīng)該如何選擇這些管腳的功能呢?1、 給寄存器PxSEL(圖4)賦值,確定管腳是作為IO用,還是作為片內(nèi)外設(shè)用,當(dāng)PxSEL=0時(shí),用作IO,當(dāng)PxSEL=1時(shí),用作片內(nèi)外設(shè);2、給寄存器PxDIR(圖5)賦值,確定管腳的輸出方向(作為IO時(shí)
4、,用來(lái)設(shè)置是input還是output;作為片內(nèi)外設(shè)時(shí),用來(lái)設(shè)置是輸出的片內(nèi)外設(shè)還是輸入的片內(nèi)外設(shè),如P1.6管腳用作片內(nèi)外設(shè)時(shí),TA0.1是輸出,CA6是輸入),當(dāng)PxDIR=0時(shí),用作輸入,當(dāng)PxDIR=1時(shí),用作輸出; 圖3 圖4三 中斷函數(shù)標(biāo)準(zhǔn)中斷函數(shù)的格式為;#pragam vector=中斷向量_interrupt void ISR(void)用戶程序;四 低功耗模式進(jìn)入低功耗程序模式為(以進(jìn)入低功耗LPM0模式為例):_EINT();LPM0;以上兩句程序等價(jià)為:_BIS_SR(LPM0_bits + GIE);那么退出低功耗程序?yàn)椋篖PM0_EXIT;五 Flash操作(msp
5、430f149單片機(jī))Flash被劃分成main memory和information memory,兩者沒(méi)有太大區(qū)別,只是兩者的容量和物理地址不同。CPU:中央處理器(center processing unit),是一臺(tái)計(jì)算機(jī)的運(yùn)算核心和控制核心。它的功能是解釋處理指令。主要由運(yùn)算器(算術(shù)邏輯運(yùn)算單元ALU,arithmetic logic unit)、高速緩沖存儲(chǔ)器(cache)、數(shù)據(jù)總線(data bus)、控制總線(control bus)、地址總線(address bus)組成。它與內(nèi)部存儲(chǔ)器(memory,程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器)和輸入/輸出(I/O)設(shè)備合稱為電子計(jì)算機(jī)三大核心
6、部件。Flash就是memory的一種。對(duì)flash進(jìn)行操作時(shí),其頻率需在257kHz476KHz之間,同時(shí)單片機(jī)的供電電壓不能低于2.7V。對(duì)flash的操作有三種:讀、寫和擦除;默認(rèn)方式是讀。擦除操作:對(duì)flash進(jìn)行擦除操作時(shí),需要進(jìn)行一個(gè)假寫入,假寫入的目的是啟動(dòng)flash時(shí)鐘發(fā)生器和啟動(dòng)擦除操作,若果假寫入的地址不在需要擦除的段內(nèi),該假寫入不能啟動(dòng)該段的擦除。 擦除flash所需的時(shí)間是固定的,并不取決于需要擦擦除的flash的數(shù)量,mass擦除的時(shí)間t= 10593/fFTG,segment擦除的時(shí)間t=4819/fFTG,色寫入flash步驟:1、關(guān)閉看門狗電路和總中斷;2、設(shè)置
7、FCTL2(FCTL2寄存器用來(lái)設(shè)置flash timing);3、設(shè)置指針指向需要寫入段的首地址;4、設(shè)置FCTL1、FCTL3(FCTL1用來(lái)控制flash的操作方式是寫操作還是擦除操作,默認(rèn)是讀操作;FCTL3用來(lái)控制能否對(duì)flash進(jìn)行操作),需要首先設(shè)置FCTL1控制flash為擦除操作(在寫入之前需要先擦除);5、假寫入(用來(lái)啟動(dòng)擦除操作,若是從flash中啟動(dòng)擦除操作(?),那么在擦除過(guò)程中,CPU將會(huì)停止運(yùn)行;擦除完成后,CPU繼續(xù)執(zhí)行后面的代碼);怎么理解從flash中啟動(dòng)擦除操作?個(gè)人理解:就是通過(guò)上位機(jī)下載到單片機(jī)的程序保存在flash中,而沒(méi)有保存到RAM中。擦除指令代
8、碼也是保存在flash中。6、擦除操作完成后,設(shè)置FCTL1(設(shè)置Flash為寫入模式);7、寫入flash程序;8、寫入完成后,設(shè)置FCLT1、FCTL3(FCTL1設(shè)置flash為默認(rèn)模式;FCTL3鎖存flash,讓程序無(wú)法對(duì)flash進(jìn)行操作)c語(yǔ)言程序如下:void main(void) uchar *Flash_ptr; / flash pointer uint i,value; /value為需要寫入的數(shù)值; WDTCTL=WDTPW + WDTHOLD; /關(guān)閉看門狗; FCTL2=FWKEY + FSSEL0+FN0; /設(shè)置flash timing value=0; Fla
9、sh_ptr=(uchar *) 0x1080; /設(shè)置flash pointer為需要寫入的flash段的首地址 FCTL1=FWKEY+ERASE; /設(shè)置flash為擦除模式; FCTL3= FWKEY; /打開flash操作,默認(rèn)為讀模式,用戶不能對(duì)flash進(jìn)行其他操作 *Flash_ptr=2; /假寫入一個(gè)數(shù)值(假寫入的目的是啟動(dòng)擦除操作) FCTL1=FWKEY+WRT; /設(shè)置flash為寫模式 for(i=0;i<128;i+) /寫入程序 *Flash_ptr+=value; FCTL1=FWKEY; /關(guān)閉寫入模式 FCTL3=FWKEY+LOCK; /關(guān)閉fla
10、sh,用戶不能對(duì)flash寫/擦除操作,只能讀如何理解從flash啟動(dòng)對(duì)flash的操作、從RAM啟動(dòng)flash的操作?回答:對(duì)flash進(jìn)行的這段代碼存放在哪里,就是從哪里啟動(dòng)flash的操作,如果該段代碼放在RAM中,那么即是從RAM啟動(dòng)flash的操作;如果這段代碼放在flash中,即是從flash啟動(dòng)flash操作。如何判斷程序是存放在Flash中還是RAM中?回答:x86架構(gòu)的PC機(jī)cpu在運(yùn)行時(shí),程序是存儲(chǔ)在RAM中的,PC機(jī)在運(yùn)行程序的時(shí)候?qū)⒊绦驈耐獯妫ㄓ脖P)調(diào)入到RAM中運(yùn)行,CPU從RAM中讀取程序和數(shù)據(jù);而單片機(jī)等嵌入式系統(tǒng)則是存放在flash中的,單片機(jī)程序是固化在fla
11、sh中,CPU運(yùn)行時(shí)直接從flash中讀取程序,從RAM中讀取數(shù)據(jù)。造成以上差別的原因在于:x86架構(gòu)的CPU是基于馮.諾依曼體系的,即數(shù)據(jù)和程序存儲(chǔ)在一起的,而且pc機(jī)的RAM資源相當(dāng)豐富,客觀上能夠有承受大量的程序數(shù)據(jù);單片機(jī)的架構(gòu)大多是哈佛體系的,即程序和數(shù)據(jù)分開存儲(chǔ),而且單片機(jī)的片內(nèi)RAM資源是相當(dāng)有限的,內(nèi)部的RAM過(guò)大會(huì)帶來(lái)成本的大幅度提高。馮.諾依曼結(jié)構(gòu)(又稱普林斯頓結(jié)構(gòu))和哈佛結(jié)構(gòu)的區(qū)別?回答:兩者的區(qū)別在于程序空間和數(shù)據(jù)空間是否是一體的。馮諾依曼結(jié)構(gòu)是將程序空間和數(shù)據(jù)空間合在一起的存儲(chǔ)器結(jié)構(gòu)。程序指令存儲(chǔ)地址和數(shù)據(jù)存儲(chǔ)地址指向同一個(gè)存儲(chǔ)的不同物理地址,因此程序指令和數(shù)據(jù)指令的
12、寬度相同。取指令和取操作數(shù)都在同一條總線上,通過(guò)分時(shí)復(fù)用的方式進(jìn)行的,缺點(diǎn)是在高速運(yùn)行時(shí),不能達(dá)到同時(shí)取指令和取操作數(shù),從而形成了傳輸過(guò)程的瓶頸。常見的微控制器和中央處理器有:Intel公司的x86微處理器、Intel公司的其他中央處理器、安謀公司的ARM7、MIPS公司的mips處理器。哈佛體系的內(nèi)部程序空間和數(shù)據(jù)空間是分開的,這樣就可以同時(shí)去指令和操作數(shù),從而大大提高了運(yùn)算能力。常見的微控制器和中央處理器有:microchip公司的PIC系列芯片、摩托羅拉的MC68系列、zilog公司的Z8系列。Atmel公司的AVR系列、安謀公司的ARM9、ARM10和ARM11、51單片機(jī)。在通用計(jì)算
13、機(jī)系統(tǒng)中(PC機(jī)),應(yīng)用軟件的多樣性是的計(jì)算機(jī)要不斷地變化所執(zhí)行的代碼的內(nèi)容,并且頻繁地對(duì)數(shù)據(jù)域代碼占有的存儲(chǔ)器進(jìn)行重新分配,這種請(qǐng)款下,馮諾依曼結(jié)構(gòu)占有絕對(duì)優(yōu)勢(shì),因?yàn)橥痪幹房梢宰畲笙薅鹊乩觅Y源,而哈佛結(jié)構(gòu)的計(jì)算機(jī)應(yīng)用在這種請(qǐng)款下會(huì)對(duì)存儲(chǔ)器資源產(chǎn)生理論上最大可達(dá)50%的浪費(fèi);但是再嵌入式應(yīng)用中,系統(tǒng)要執(zhí)行的任務(wù)相對(duì)單一,程序一般是固化在硬件里。當(dāng)然這時(shí)使用馮諾依曼結(jié)構(gòu)液可以,代碼區(qū)和數(shù)據(jù)區(qū)在編譯時(shí)一次性分配好了而已,但是其靈活性得不到體現(xiàn),所以現(xiàn)在大量單片機(jī)還是使用的哈佛結(jié)構(gòu)。為什么說(shuō)哈佛結(jié)構(gòu)在嵌入式計(jì)算機(jī)中占有優(yōu)勢(shì)呢?回答:嵌入式計(jì)算機(jī)在工作時(shí)與通用計(jì)算機(jī)有著一些區(qū)別:嵌入式計(jì)算機(jī)在工作
14、期間的絕大部分時(shí)間是無(wú)人值守的,而通用計(jì)算機(jī)工作期間一般是有人操作的;嵌入式計(jì)算機(jī)的故障可能會(huì)導(dǎo)致災(zāi)難性的后果,而通用計(jì)算機(jī)一般就是死死機(jī),重新啟動(dòng)集合,這兩點(diǎn)決定了對(duì)嵌入式計(jì)算機(jī)的一個(gè)基本要求:可靠性。使用馮諾依曼機(jī)構(gòu)的計(jì)算機(jī),程序空間不封閉,其程序空間的數(shù)據(jù)在運(yùn)行期理論上可以被修改,此外程序一旦跑飛也有可能運(yùn)行到數(shù)據(jù)區(qū)。雖然都是一些不常見的特殊情況,但是看看哈佛機(jī)構(gòu)的計(jì)算機(jī)在這些情況下是怎樣的:程序只能在密閉的代碼區(qū)中運(yùn)行,不可能跑飛到數(shù)據(jù)區(qū)??偨Y(jié)馮諾依曼原理:程序只是一種特殊的數(shù)據(jù),它可以像數(shù)據(jù)一樣被處理,因此可以和數(shù)據(jù)一起存儲(chǔ)在同一個(gè)存儲(chǔ)器中,數(shù)據(jù)總線和地址總線復(fù)用。哈佛結(jié)構(gòu)是一種并行
15、結(jié)構(gòu),程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器是兩個(gè)獨(dú)立的存儲(chǔ)器,每個(gè)存儲(chǔ)器獨(dú)立編址、獨(dú)立訪問(wèn),與兩個(gè)存儲(chǔ)器對(duì)應(yīng)的是系統(tǒng)的4條總線:程序的數(shù)據(jù)總線和地址總線、數(shù)據(jù)的數(shù)據(jù)總線和地址總線六 UART通信(msp430f149單片機(jī))UART通信又稱串行異步通信,串行同步/異步收發(fā)器通過(guò)RXD/TXD管腳將430單片機(jī)和外部系統(tǒng)相連。如果RXD/TXD管腳沒(méi)有接受/發(fā)送數(shù)據(jù),則RXD/TXD管腳一致保持高電平狀態(tài)。UART的數(shù)據(jù)幀結(jié)構(gòu)為:1位停止位、8位數(shù)據(jù)位、1位奇偶校驗(yàn)位、1位停止位,在實(shí)際數(shù)據(jù)發(fā)送過(guò)程中,串口是以字符為基本單位來(lái)發(fā)送的。 收發(fā)步驟(UART初始化設(shè)置): 1、設(shè)置IO口為RXD、TXD; 2、設(shè)
16、置SWRST=1(正常情況時(shí),一個(gè)PUC(上電復(fù)位)信號(hào)后,SWRST自動(dòng)設(shè)置=1,因此可以不用設(shè)置SWRST); 3、設(shè)置相關(guān)寄存器(RXD/TXD使能、數(shù)據(jù)格式、波特率的時(shí)鐘源、波特率大?。?; 4、清除SWRST(即設(shè)置SWRST=0),這樣USART模塊才能工作; 5、打開接收、發(fā)送中斷(?);6、接收/發(fā)送處理程序部分;void uart_init() /uart初始化函數(shù) P3SEL |=BIT4+BIT5; /set P3.4 as TXD,P3.5 as RXD ME1 |=UTXE0+URXE0; /Enable USART0 transmit and recieve UCTL
17、0 |=CHAR; /8 bit character UTCTL0 |=SSEL0; / UCLK = ACLK UBR00 =0x0D; /32768/2400 UBR10 =0x00; UMCTL0 =0x6B; UCTL0 &=SWRST; / 初始化UART0狀態(tài)機(jī) IE1 |=URXIE0; /enable RXD interrupt 發(fā)送程序處理部分: 先判斷UxTXBUF是否空閑;若空閑,則將要發(fā)送的數(shù)據(jù)送入到UxTXBUF中;程序如下所示: while(?。↖FG1 & UTXIFG0);TXBUF0 =value; (value為要發(fā)送的變量)七 上電復(fù)位(P
18、OR)和上電清除(PUC)PUC信號(hào)是上電清除信號(hào)。POR(Power-On-Reset)是上電復(fù)位信號(hào),它只在以下兩個(gè)事件發(fā)生時(shí)產(chǎn)生:1、芯片上電。2、RST/NMI設(shè)置成復(fù)位模式,在RST/NMI引腳上出現(xiàn)低電平信號(hào)。POR信號(hào)的產(chǎn)生總會(huì)產(chǎn)生PUC(Power-UP-Clear)信號(hào),但PUC信號(hào)的發(fā)生不會(huì)產(chǎn)生POR信號(hào)。PUC信號(hào)是上電清除信號(hào),產(chǎn)生它的事件為:1、發(fā)生POR信號(hào)。2、處于看門狗模式下,看門狗定時(shí)時(shí)間到。3、看門狗定時(shí)器寫入錯(cuò)誤的安全鍵值。4、RST/NMI設(shè)置成NMI模式,在RST/NMI引腳上出現(xiàn)低電平信號(hào),5、FLASH存儲(chǔ)器寫入錯(cuò)誤的安全鍵值。八 WDT+模塊(m
19、sp430g2553單片機(jī))WDT+模塊通過(guò)WDTCTL寄存器中的WDTTMSEL位來(lái)進(jìn)行對(duì)應(yīng)的功能選擇,可以設(shè)置為watchdog模式,也可以設(shè)置為internal timer模式。Watchdog模式:什么是看門狗?回答:在由單片機(jī)構(gòu)成的微型計(jì)算機(jī)系統(tǒng)中,由于單片機(jī)的工作常常會(huì)受到來(lái)自外界電磁場(chǎng)的干擾,造成程序的跑飛,而陷入死循環(huán),程序的正常運(yùn)行被打斷,由單片機(jī)控制的系統(tǒng)無(wú)法繼續(xù)工作,會(huì)造成整個(gè)系統(tǒng)陷入停滯狀態(tài),發(fā)生不可預(yù)料的后果,所以出于對(duì)單片機(jī)運(yùn)行狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)測(cè)的考慮,便產(chǎn)生了一種專門用于檢測(cè)單片機(jī)程序運(yùn)行的芯片,俗稱“看門狗”。Internal timer模式:簡(jiǎn)單來(lái)說(shuō)就是定時(shí)器模
20、式。九 比較器comparator_A+(msp430g2553單片機(jī))Comparator_A+是一個(gè)模擬電壓比較器,所有msp430x2xx系列的單片機(jī)均有此模塊。操作步驟:1. 使能比較器模塊,即設(shè)置CAON位;2. 參考電壓大小選擇,即設(shè)置CAREFx位;3. 參考電壓方向選擇(參考電壓是接入到比較器的+端還是-端),即設(shè)置CAEX位和CARSEL位;4. 待比較的電壓輸入位選擇,即是選擇CA0、還是CA1、還是CA2等;5. 因?yàn)榈谒牟街性O(shè)置了比較電壓輸入位,而這些位是與IO口復(fù)用,因此需要設(shè)置P口的功能選擇位PxSEL以及方向位PxDIR;十 定時(shí)器(msp430g2553單片機(jī))
21、MSP430有兩個(gè)16位定時(shí)器Timer_A和Timer_B,兩者基本相同。在430單片機(jī)的定時(shí)器模塊,經(jīng)常會(huì)看見“Timer_A3、Timer_B3”和“Timer_B7”,這里的“3”和“7”是指Timer_A、Timer_B模塊分別具有3個(gè)或7個(gè)捕獲/比較寄存器。Timer_A大致可分為四個(gè)功能模塊:計(jì)數(shù)器、比較/捕獲寄存器0、比較/捕獲寄存器1、比較/捕獲寄存器2。比較模式和捕獲模式在單片機(jī)內(nèi)部有不同的硬件電路。Timer_A模塊將定時(shí)器和捕獲/比較模塊集成到了一起。對(duì)定時(shí)器的處理均是通過(guò)中斷方式進(jìn)行的。在Timer_A模塊中,具有兩個(gè)中斷向量,分別是TACCR0中斷向量和TAIV中斷
22、向量。TACCR0模塊單獨(dú)對(duì)應(yīng)TACCR0中斷向量,是一個(gè)單源中斷,TACCR1、TACCR2、TAIFG對(duì)應(yīng)TAIV中斷向量,是一個(gè)多源中斷。因此2個(gè)中斷向量實(shí)際上對(duì)應(yīng)了4個(gè)中斷。Msp430g2553有兩個(gè)Timer_A模塊,分別是Timer0_A3、Timer1_A3。Timer0_A3中用的很多寄存器都采用簡(jiǎn)寫的方式,且容易理解記憶,而Timer1_A3中很多寄存器沒(méi)有采用簡(jiǎn)寫的方式,并且其書寫方式與Timer0_A3中寄存器的書寫方式不一樣,因此在實(shí)際編程使用時(shí),需重點(diǎn)注意!因?yàn)橐粋€(gè)Timer_A模塊具有2個(gè)中斷向量,因此2553單片機(jī)具有4個(gè)定時(shí)器中斷向量,Timer0_A3對(duì)應(yīng)的
23、中斷向量為TIMER0_A0_VECTOR、TIMER0_A1_VECTOR;Timer1_A3對(duì)應(yīng)的中斷向量為TIMER1_A0_VECTOR、TIMER1_A1_VECTOR。前者的優(yōu)先級(jí)均高于后者的優(yōu)先級(jí)。Timer0_A3的CCR0對(duì)應(yīng)TIMER0_A0_VECTOR中斷,Timer0_A3的CCR1、CCR2、定時(shí)器溢出對(duì)應(yīng)TIMER0_A1_VECTOR中斷。對(duì)于中斷過(guò)程的理解計(jì)數(shù)器是主體,它是一個(gè)可開啟和關(guān)閉的定時(shí)器。如果開啟它就是一直在循環(huán)計(jì)數(shù),會(huì)有一個(gè)溢出中斷。如在連續(xù)計(jì)數(shù)模式時(shí),當(dāng)從0計(jì)數(shù)到0xffff時(shí)就會(huì)產(chǎn)生一個(gè)中斷。那么如何實(shí)現(xiàn)定時(shí)功能呢?這需要靠3個(gè)比較/捕獲寄存器
24、(下用CCRx表示)。當(dāng)計(jì)數(shù)器寄存器TAR中的值增加到與CCR0或CCR1或CCR2寄存器中的值相等時(shí),會(huì)分別觸發(fā)對(duì)應(yīng)的CCRx中斷,這樣可以通過(guò)定時(shí)器A得到3個(gè)定時(shí)時(shí)間。CCRx有3個(gè)中斷,再加上計(jì)數(shù)器本身的溢出中斷,因此Timer_A模塊共有4個(gè)中斷CCR0比較特殊,通過(guò)它可以改變計(jì)數(shù)器的最大計(jì)數(shù)值,當(dāng)計(jì)數(shù)器計(jì)數(shù)到CCR0的值時(shí)自動(dòng)將計(jì)數(shù)器清零,但是需要設(shè)置相應(yīng)的工作模式,模式列表如下:MCxMode說(shuō)明00停止定時(shí)器暫停01增計(jì)數(shù)計(jì)數(shù)器計(jì)數(shù)到CCR0,再清零計(jì)數(shù)10連續(xù)計(jì)數(shù)計(jì)數(shù)器計(jì)數(shù)到0xffff,再清零計(jì)數(shù)11增減計(jì)數(shù)增計(jì)數(shù)到CCR0,再減計(jì)數(shù)到0范例:Description:采用Ti
25、mer0_A3定時(shí)器,連續(xù)計(jì)數(shù)模式,利用定時(shí)器溢出中斷在P2.1產(chǎn)生頻率約為 的方波信號(hào),利用CCR0比較中斷(初值設(shè)為40000)在P2.2產(chǎn)生頻率約為 的方波信號(hào)(SMCLK默認(rèn)約為1MHz)。void main() WDTCTL =WDTPW+WDTHOLD; /stop watchdog P2DIR |=0xff; /set P2 as output TACCTL0 =CCIE; / enable CCRx interrupt TACCR0 =50000; / CCR0初值 TACTL =TASSEL_2+TACLR+MC_2+TAIE; /定時(shí)器A的時(shí)鐘源為SMCLK,計(jì)數(shù)器清零,連
26、續(xù)計(jì)數(shù)模式,溢出中斷允許 _EINT(); LPM0;#pragma vector=TIMER0_A0_VECTOR_interrupt void Timer_A0(void) P2OUT =BIT2; /P2.2取反 CCR0 +=50000; /CCR0置入計(jì)數(shù)值#pragma vector=TIMER0_A1_VECTOR_interrupt void Timer_A1(void) switch(TAIV) case 2:break; /CCR1中斷未用 case 4:break; /CCR2中斷未用 case 10:P2OUT =BIT1; /p2.1 取反 break; 如何理解比較
27、和捕獲?比較:CCR0中開始時(shí)有一個(gè)初始值,計(jì)數(shù)器在時(shí)鐘的觸發(fā)下,不斷的計(jì)數(shù),當(dāng)計(jì)數(shù)器中的值等于CCR0中的值時(shí),觸發(fā)產(chǎn)生一個(gè)中斷。因此,比較模式一般是用在定時(shí)功能的。是定時(shí)器的默認(rèn)模式。捕獲:外部輸入信號(hào)觸發(fā)中斷,讀取計(jì)時(shí)器的計(jì)數(shù)值,就可以測(cè)量信號(hào)脈寬、周期等參數(shù)。捕獲的方式有上升沿捕獲、下降沿捕獲、上升/下降沿捕獲。在捕獲模式,當(dāng)滿足捕獲條件,硬件自動(dòng)將計(jì)數(shù)器TAR數(shù)據(jù)寫入相應(yīng)的寄存器CCRx。如測(cè)量某窄脈沖(高電平)的脈沖長(zhǎng)度,可定義上升沿和下降沿都捕獲。在上升沿捕獲一個(gè)定時(shí)器數(shù)據(jù);再等待下降沿的到來(lái),在下降沿又捕獲到一個(gè)定時(shí)器數(shù)據(jù)。那么兩次捕獲的定時(shí)器數(shù)據(jù)差就是窄脈沖的寬度(時(shí)間)。根
28、據(jù)下表來(lái)確定捕獲模式的輸入信號(hào)源。Timer0_A3 signal connectionsInput pin numberDevice input signalModule input nameModule blockModule output signalOutput pin numberPW20,N20PW28RHB32PW20,N20PW28RHB32P1.0-2P1.0-2P1.0-31TACLKTACLKTimerNAACLKACLKSMCLKSMCLKPinOscPinOscPinOscTACLKINCLKP1.1-3P1.1-3P1.1-1TA0.0CCI0ACCR0TA0P1.
29、1-3P1.1-3P1.1-1ACLKCCI0BP1.5-7P1.5-7P1.5-5VssGNDP3.4-15P3.4-13VccVccP1.2-4P1.2-4P1.2-2TA0.1CCI1ACCR1TA1P1.2-4P1.2-4P1.2-2CAOUTCCI1BP1.6-14P1.6-22P1.6-21VssGNDP2.6-19P2.6-27P2.6-26VccVccP3.5-19P3.5-18P3.0-19P3.0-17TA0.2CCI2ACCR2TA2P3.0-19P3.0-17PinOscPinOscPinOscTA0.2CCI2BP3.6-20P3.6-19VssGNDVccVcc注釋
30、:上表中的“Px.x-x”的意義,“Px.x”代表P口,“x”代表對(duì)應(yīng)封裝中的第x號(hào)管腳;“PW20,N20”、“PW28”、“RHB32”代表封裝;“TAx.x”中第一個(gè)“x”代表定時(shí)器模塊x(2553單片機(jī)有兩個(gè)Timer_A模塊,分別是Timer0_A3和Timer1_A3,因此這里的“x”只能取0和1),第2個(gè)“x”代表定時(shí)器模塊中的第x個(gè)捕獲比較寄存器(2553單片機(jī)的兩個(gè)定時(shí)器模塊都具有3個(gè)捕獲比較寄存器,因此這里的“x”可取值0,1,2)如何用Timer的比較/捕獲方式來(lái)軟件模擬UART通信?接收過(guò)程: 上圖所示為一個(gè)3位數(shù)據(jù)幀的時(shí)序。首先確定起始位,用來(lái)進(jìn)行幀同步。利用Time
31、r的捕獲模式來(lái)捕獲起始位的下降沿。定義Timer的CAP位為1,則進(jìn)入捕獲模式,如圖所示,在A點(diǎn)捕獲到起始位,系統(tǒng)將此刻的定時(shí)器值T存放到CCRx中,并由于捕獲而產(chǎn)生中斷。在中斷處理程序中,對(duì)A點(diǎn)所產(chǎn)生中斷的處理非常重要,一進(jìn)入中斷就將捕獲功能轉(zhuǎn)換為比較功能。另外設(shè)置TACTL中的MC0=1,啟動(dòng)定時(shí)器的增計(jì)數(shù)模式,并將1.5位的時(shí)間間隔(1.5T)加到CCRx中,即CCRx=1.5T。同時(shí)將單片機(jī)內(nèi)部的計(jì)數(shù)器TAR清零。這樣當(dāng)單片機(jī)內(nèi)部的計(jì)數(shù)器TAR的值達(dá)到1.5T(B點(diǎn))時(shí),就會(huì)由此比較功能觸發(fā)中斷,這樣就實(shí)現(xiàn)了1.5位時(shí)間間隔的精確定時(shí)。由于1.5T的時(shí)間跳過(guò)了起始位,剛好是在第一位數(shù)據(jù)位的中間,這時(shí)的數(shù)據(jù)位是最穩(wěn)定的,沒(méi)有電平的突變,在中斷處理程序中可以讀取輸入引腳的狀態(tài),從而接收到Bit1的信息。同時(shí)重新設(shè)定CCRx的值,將其設(shè)定為一位數(shù)據(jù)位T的時(shí)間,TAR清零重新開始計(jì)數(shù),當(dāng)TAR計(jì)數(shù)達(dá)到CCRx的值時(shí),又產(chǎn)生一次中斷,這時(shí)剛好是在第二位的數(shù)據(jù)位的中間部分,中斷服務(wù)程序中可以讀取Bit2的信息。如此重復(fù)8次,就可以完成一個(gè)字節(jié)數(shù)據(jù)的接收。收完一個(gè)字符后,再重復(fù)上述過(guò)程,可以連續(xù)接收多個(gè)字符。發(fā)送過(guò)程:先利用比較功能產(chǎn)生一個(gè)間隔為1位時(shí)間(T)的時(shí)序,相當(dāng)于一個(gè)波
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年C語(yǔ)言編程與算法結(jié)合試題及答案
- 2025年計(jì)算機(jī)二級(jí)Web考試全面認(rèn)知試題及答案
- 財(cái)務(wù)視角下的2025年邏輯難點(diǎn)試題及答案
- C語(yǔ)言計(jì)算思維發(fā)展試題及答案2025年
- 2025年計(jì)算機(jī)二級(jí)C語(yǔ)言核心題試題及答案
- 計(jì)算機(jī)四級(jí)經(jīng)典試題及答案匯編
- 財(cái)經(jīng)與公共管理系學(xué)科建設(shè)與發(fā)展規(guī)劃
- 2025年計(jì)算機(jī)VFP考試優(yōu)化方法試題及答案
- 社會(huì)工作者-社會(huì)工作法規(guī)與政策(中級(jí))真題庫(kù)-15
- 裝車合同協(xié)議書模板圖片
- 幼兒園中班音樂(lè)《小雨沙沙》微課件
- 西鐵計(jì)202119號(hào) 中國(guó)鐵路西安局集團(tuán)有限公司關(guān)于印發(fā)《西安局集團(tuán)公司地方涉鐵工程建設(shè)管理辦法》的通知2021-01-25
- 光伏發(fā)電項(xiàng)目試驗(yàn)計(jì)劃
- 2023年全國(guó)青少年航天知識(shí)大賽題庫(kù)
- 《一棵小桃樹》閱讀
- 病理檢驗(yàn)技術(shù)試題+答案
- 髖臼及股骨骨缺損的分型及評(píng)價(jià)-課件
- 施工單位關(guān)鍵崗位人員到崗履職檢查記錄表
- 上海市華師大二附中2022-2023高二下學(xué)期期中政治試卷
- 加工中心點(diǎn)檢表
- 國(guó)開電大本科《管理英語(yǔ) 4》 形考任務(wù)(單元自測(cè) 1 至 8) 試題及答案
評(píng)論
0/150
提交評(píng)論