第二章MSP430單片機(jī)的內(nèi)部資源_第1頁
第二章MSP430單片機(jī)的內(nèi)部資源_第2頁
第二章MSP430單片機(jī)的內(nèi)部資源_第3頁
第二章MSP430單片機(jī)的內(nèi)部資源_第4頁
第二章MSP430單片機(jī)的內(nèi)部資源_第5頁
已閱讀5頁,還剩181頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、羅小剛重慶大學(xué)TI 430有一系列型號(hào),代表不同配置第一位數(shù)字代表系列。內(nèi)核相同,指令相同,主要區(qū)別在于外部模塊與成本專用單片機(jī)系列: 430家族中還有針對(duì)熱門應(yīng)用而設(shè)計(jì)的一系列專用單片機(jī)。如MSP430FW4xx系列水表專用單片機(jī)、MSP430FG4xx系列醫(yī)療儀器專用單片機(jī)、MSP430FE4XX系列電能計(jì)量專用單片機(jī)等。這些專用單片機(jī)都是在同型號(hào)的通用單片機(jī)上增加專用模塊而構(gòu)成的。例如FW4xx系列在F4xx系列上增加了SCAN-IF無磁流量檢測(cè)模塊選擇最容易實(shí)現(xiàn)設(shè)計(jì)目標(biāo)且性能/價(jià)格比又高的型號(hào)在研制任務(wù)重,時(shí)間緊的情況下,首先選擇熟悉的型號(hào)欲選的型號(hào)在市場(chǎng)上要有穩(wěn)定充足的貨源I/O口是

2、單片機(jī)和外設(shè)之間連接和傳輸數(shù)據(jù)/狀態(tài)的通道,I/O口數(shù)決定了單片機(jī)能連接外設(shè)的數(shù)目,屬于單片機(jī)可用資源的一種I/O口資源不足時(shí),可通過電路進(jìn)行擴(kuò)展,如3-8譯碼器、多路選通開關(guān)等。6 個(gè) 8 位數(shù)字 I/O 端口:P1P6;每個(gè) I/O 引腳都可以獨(dú)立編程為輸入或輸出(方向設(shè)置);每個(gè) I/O 引腳都可以獨(dú)立進(jìn)行讀或?qū)懖僮?;P1 和 P2 具有中斷功能(16 級(jí)外部中斷輸入),可以獨(dú)立進(jìn)行中斷控制(屏蔽或允許),可以獨(dú)立進(jìn)行上升沿或下降沿有效中斷請(qǐng)求信號(hào)設(shè)置;P1 的 8 個(gè)外部中斷共享同一個(gè)中斷向量, P2 的 8 個(gè)外部中斷共享另一個(gè)中斷向量;I/O口寄存器:設(shè)置、讀取I/O口的數(shù)據(jù)或狀態(tài)

3、的特殊存儲(chǔ)單元,與硬件直接相關(guān)每組I/O口有4個(gè)寄存器,其中P1/P2因具有中斷功能,還額外具有3個(gè)中斷寄存器PxDIR寄存器:設(shè)置每一位I/O口方向0:輸入1:輸出使用I/O口時(shí)首先要選擇輸入/輸出P1DIR|=BIT7;delay=0;while(1) P1OUT=(17); /異或運(yùn)算,實(shí)現(xiàn)第7位取反 delay+; while(delay450k時(shí)置1,反之則置0.OSCCAPx:設(shè)置晶振匹配電容(每只管腳,位于FLLCTLO寄存器)。001pF(XCAP0PF) 016pF(XCAP6PF) 108pF(XCAP14PF) 1110pF(XCAP18PF) 或 OSCCAP_0 OS

4、CCAP_1 OSCCAP_2 OSCCAP_3高頻晶振時(shí)需外接2030pF電容。FLL_DIVx:設(shè)置ACLK輸出分頻系數(shù)(位于FLLLCTL1寄存器)O0=無分頻(FLL_DIV_1) 01=2分頻(FLL_DIV_2) 10 =4分頻(FLL_DIV_4) 11=8分頻(FLL_DIV_8) ACLK除了提供系統(tǒng)活動(dòng)用之外,還可以從P1.5管腳輸出供其它外圍設(shè)備使用。OSCOFF:關(guān)閉低頻時(shí)鐘振蕩器(位于SR寄存器)0=正常工作(初始值) 1=關(guān)閉關(guān)閉時(shí)鐘振蕩器后,系統(tǒng)中ACLK也隨之停上。一般在進(jìn)人最深的休眠模式(LPM4)前才關(guān)閉ACLK,之后系統(tǒng)功耗降到最低。此時(shí)只能通過外部I/O

5、中斷或復(fù)位喚醒。例2.3.1 MSP430F14x單片機(jī)外部接有32.768kHz晶振,設(shè)置時(shí)鐘如下: FLL_CTL0 &=XTS_FLL; /設(shè)置振瘍器類型為低頻(可省略) FLL_CTL0 |=XCAP18PF;/設(shè)置晶振匹配電容18pF左右例2.3.2 MSP430F14x單片機(jī)外部接有1MHz晶振,并要從P1.5輸出250kHz時(shí)鐘信號(hào)給某外部邏輯電路使用:FLL_CTL0 |=XTS_FLL; /設(shè)置振蕩器類型為高頻FLL_CTL0 |=XCAP0PF; /設(shè)置內(nèi)部晶振匹配電容0pF(電容需外接)FLL_CTL1 |=FLL_DIV_4; /設(shè)置對(duì)外輸出4分頻P1DIR |=BIT

6、5; /P1.5設(shè)為輸出P1SEL |=BIT5; /P1.5設(shè)為第二功能管腳(ACLK)共有8個(gè)控制位,實(shí)現(xiàn)功能是將ACLK轉(zhuǎn)換為高頻時(shí)鐘供CPU或外設(shè)。N環(huán)路分頻系數(shù)。(位于SCFQCTL寄存器低7位) 倍頻系數(shù)=N+1(復(fù)位后N=31,即32倍頻) 快捷宏定義:SCFQ_64K SCFQ _128K SCFQ_256K SCFQ_512K SCFQ_1M SCFQ_2M SCFQ_4M DCOPLUS: DCO額外分頻允許(位于FLL_CTLO寄存器) 0=禁止額外的分頻 1=允許額外分頻 當(dāng)DCOPLUS為1時(shí),下面FLLDx的設(shè)置才有效FLLDx:DCO額外分頻系數(shù)(位于SCFl0寄

7、存器) 00=無分頻 01=2分頻 10 =4分頻 11 =8分頻 快捷宏定義:FLL_DIV_1 FLL_DIV_2 FLL_DIV_4 FLL_DIV_8 例2.3.3 MSP430F42x單片機(jī)外部接有32.768kHz手表晶振,CPU需要2MHz左右時(shí)鐘頻率FLL_CTL0 &=XTS_FLL; /設(shè)置振蕩器類型為低頻(可省略)FLL_CTL0 |=XCAP18PF; /設(shè)置晶振匹配電容18pF左右SCFQCTL=SCFQ _ 2M; /倍頻至2MHz(64倍頻,2.09MHz)SCFI0 |=FN_2n; /DCO中心頻率2MHz左右(1.312.1 MHz)例2.3.4MSP430

8、F42x單片機(jī)外部接有32.768kHz手表晶振,CPU需要2.752MHz時(shí)鐘頻率。2.752MHz是32.768kHz的84倍。因此分頻系數(shù)N=841=83。FLL_CTL0 &=XTS_FLL; /設(shè)置振蕩器類型為低頻(可省略)FLL_CTL0 |=XCAP18PF; /設(shè)置晶振匹配電容18pF左右SCFQCTL=83; /倍頻至2.752MHz(84倍頻)SCFI0 |=FN_3 /DCO中心頻率3MHz左右 例2.3.5 MSP430F42x單片機(jī)外部接有32.768kHz手表晶振,CPU需要6. 554MHz時(shí)鐘頻率。6.554MHz是32. 768 kHz的200倍。通過分頻系數(shù)

9、N最大只能實(shí)現(xiàn)128倍頻,需要開啟DCOPLUS利用FLLDx再額外倍頻200 =2 x 100,可以將N設(shè)為99, FLLDx設(shè)為2倍頻。 FLL_CTL0 &=XTS_FLL; /設(shè)置振蕩器類型為低頻(可省略) FLL_CTL0 |=XCAP18PF; /設(shè)置晶振匹配電容18pF左右 SCFQCTL=99; /先100倍頻 FLL_CTL0 |=DCOPLUS; /開啟額外的倍頻 SCFI0 |=FLL_DIV_2+FN_4; /額外2倍頻DCO中心頻率4MHz理論上430時(shí)鐘頻率雖可由倍頻設(shè)置高頻,但存在上限的制約。一般來說,和芯片電壓有關(guān)。表2.3.1MSP430F42x單片機(jī)低功耗模

10、式低功耗通過系統(tǒng)時(shí)鐘的設(shè)置來實(shí)現(xiàn)模塊的打開和關(guān)閉。低功耗模式喚醒無論處于何種低功耗模式,只要有中斷發(fā)生都會(huì)響應(yīng)中斷。進(jìn)入中斷前CPU會(huì)自動(dòng)將存有4個(gè)低功耗控制位的srs寄存器壓入堆棧,并自動(dòng)清除SCG1,OSCOFF, CPUOFF這3個(gè)控制位,但不清除SCGO控制位。在LPM1,LPM3,LPM4模式下SCG0是置位的,喚醒進(jìn)入中斷服務(wù)程序后,SCG0仍然置位,DC發(fā)生器仍被關(guān)閉,因此從上述3個(gè)模式喚醒后MCLK和SMCLK都是不準(zhǔn)確的,若中斷服務(wù)程序需要準(zhǔn)確的CPU時(shí)鐘,則需在中斷內(nèi)人工清除SCGO標(biāo)志位。 _BIC_SR(SCG0)(1)間歇工作:讓設(shè)備在不工作時(shí)低功耗休眠,工作時(shí)喚醒。

11、盡可能延長(zhǎng)休眠時(shí)間,可降低系統(tǒng)功耗。例2.3.6在MSP430單片機(jī)組成的系統(tǒng)中,ACLK =32.768kHz,CPU速度1MHz。P1.5接有按鍵(按下為低電平),P2.0輸出至LED,當(dāng)按鍵被按下時(shí)LED亮,松開后LED滅。(2)替代程序流程中的等待過程:MSP430單片機(jī)中,幾乎所有的設(shè)備都能產(chǎn)生中斷,目的在于讓CPU無需查詢也能等待設(shè)備。方法是用休眠替代查詢等待,設(shè)備在發(fā)生狀態(tài)變化時(shí)將會(huì)主動(dòng)喚醒CPU進(jìn)行后續(xù)的處理。防止其它中斷喚醒CPU導(dǎo)致發(fā)送混亂。(3)作為電源開關(guān):在所有的休眠模式中,LPM4的功耗是最低的,僅0.1A。進(jìn)入LPM4后單片機(jī)內(nèi)部所有的部件都不再活動(dòng),僅保持RAM

12、內(nèi)數(shù)據(jù)和I/O口狀態(tài)不變。利用LPM4可以在不切斷電源的情況下實(shí)現(xiàn)“軟件關(guān)機(jī)”。間歇工作需要定時(shí)器進(jìn)行喚醒 MSP430單片機(jī)內(nèi)部基礎(chǔ)定時(shí)器(BASIC TIMER)能在無需CPU干預(yù)的情況下產(chǎn)生 個(gè)時(shí)鐘周期的定時(shí)中斷,供問歇喚醒系統(tǒng)N2Basic Timer定時(shí)器總共有5個(gè)控制位:BTDIV,BTHOLD, BTSSEL,BTFREQx,BTIPx,都位于BTCTL寄存器。BTDIV:是否預(yù)分頻;BTHOLD:BT是否起作用;BTSSEL:時(shí)鐘源選擇;BTFREQx:LCD刷新頻率分頻器;BTIPx:BT中斷頻率選擇器。BTCNT1,BTCNT2:一、二級(jí)計(jì)數(shù)器值寄存器(可讀寫);例2.4.

13、1在某MSP430單片機(jī)系統(tǒng)中,ACLK時(shí)鐘頻率為32.768kHz。用Basic Timer定時(shí)器產(chǎn)生周期為1/4s的定時(shí)中斷,同時(shí)為L(zhǎng)CD提供512Hz的刷新時(shí)鐘。 I/4s的周期較長(zhǎng),從32768 Hz分頻到4Hz需要8192分頻,大于256分頻。使用一級(jí)分頻器不夠,需要2級(jí)級(jí)聯(lián)使用。先對(duì)ACLK進(jìn)行256分頻后再進(jìn)行32分頻。LCD時(shí)鐘從32768分頻到512 Hz需要64分頻??梢岳每旖莺甓x對(duì)BTCTL寄存器進(jìn)行設(shè)置:例2.4.2在某MSP430單片機(jī)系統(tǒng)中,ACLK時(shí)鐘頻率為32.768kHz。用Basic Timer定時(shí)器產(chǎn)生周期為1/1024s的定時(shí)中斷,同時(shí)為L(zhǎng)CD提供2

14、56Hz的刷新時(shí)鐘在Basic Timer第二級(jí)分頻器的8個(gè)輸出抽頭中,被選中的抽頭每次由0到1的跳變(計(jì)數(shù)進(jìn)位)會(huì)產(chǎn)生中斷標(biāo)志。BTIE: BT中斷允許位,0=禁止,1=允許(IE2寄存器)BTIFG: BT中斷標(biāo)志位,0=未發(fā)生中斷,1=中斷發(fā)生(位于IFG2寄存器)。注:此位實(shí)際無用,因BT獨(dú)占一個(gè)中斷源,因此產(chǎn)生中斷時(shí)不需要判斷中斷標(biāo)志,中斷如使能發(fā)生中斷后系統(tǒng)將自動(dòng)將BTIFG置0。例2.4.3在某430單片機(jī)系統(tǒng)中,ACLK時(shí)鐘頻率為32.768kHz。用 B a s i c Timer定時(shí)器讓P2.0口上的LED每秒閃爍一次,同時(shí)為L(zhǎng)CD提供256Hz的刷新時(shí)鐘。例2.4.4 設(shè)

15、計(jì)思想是主程序休眠降低功耗,定時(shí)BT中斷,當(dāng)BT中斷產(chǎn)生時(shí)CPU被喚醒,在中斷服務(wù)程序中處理事件。例2.4.5編寫延時(shí)程序,要求延時(shí)期間CPU休眠,以降低功耗。例2.4.7在某430單片機(jī)系統(tǒng)中,ACLK時(shí)鐘頻率為32.768kHz。用BasicTimer定時(shí)器為0.25s、0.5s、0.75s、1.5s共4個(gè)定時(shí)服務(wù)程序提供時(shí)鐘節(jié)拍。液晶(LCD)是最常用的低功耗顯示設(shè)備。在MSP430F4xx系列單片機(jī)中,內(nèi)部集成了LCD控制器。能夠直接驅(qū)動(dòng)段碼液晶。LCD控制器會(huì)產(chǎn)生LCD驅(qū)動(dòng)所需的交流波形,并自動(dòng)完成LCD的掃描與刷新。核心技術(shù):由于LCD顯示更新是驅(qū)動(dòng)模塊自動(dòng)進(jìn)行的,所以用戶對(duì)液晶顯

16、示的內(nèi)容操作表現(xiàn)為對(duì)液晶模塊顯示緩沖區(qū)內(nèi)容的更新。簡(jiǎn)單理解:改變顯示只需寫入對(duì)應(yīng)的顯示緩沖存儲(chǔ)區(qū)內(nèi)數(shù)據(jù)。(所有液晶顯示操作都是這樣的,對(duì)F149來說,如接12864點(diǎn)陣,液晶兩端加不同電壓改變其偏振特性,呈現(xiàn)不同的灰度。液晶OCMJ4X8C:此模塊可以顯示字母、數(shù)字符號(hào)、中文字型及圖形,具有繪圖及文字畫面混合顯示功能。提供三種控制接口,分別是8位微處理器接口,4位微處理器接口及串行接口(OCMJ4X16A/B無串行接口)。所有的功能,包含顯示RAM,字型產(chǎn)生器,都包含在一個(gè)芯片里面,只要一個(gè)最小的微處理系統(tǒng),就可以方便操作模塊。這款液晶內(nèi)置2M-位中文字型ROM (CGROM) 總共提供819

17、2個(gè)中文字型(16x16點(diǎn)陣),16K位半寬字型ROM(HCGROM) 總共提供126 個(gè)符號(hào)字型(16x8點(diǎn)陣),64x16位字型產(chǎn)生RAM(CGRAM),另外繪圖顯示畫面提供一個(gè)64x256點(diǎn)的繪圖區(qū)域(GDRAM),可以和文字畫面混和顯示。引引腳腳名稱名稱方方向向說明說明引腳引腳名稱名稱方向方向說明說明1 1VSS-GND(0V)11DB4I/O數(shù)據(jù)42 2VDD-Supply Voltage For Logic(+5V)12DB5I/O數(shù)據(jù)53 3NC-Supply Voltage For LCD(懸空)13DB6I/O數(shù)據(jù)64 4RS(CS)IH:Data L:Instruction

18、 Code14DB7I/O數(shù)據(jù)75 5R/W(STD)IH:Read L:Write15PSBIH:Parallel M o d e L:Serial Mode6 6EN(SCLK)IEnable Signal,高電平有效16NC-空腳7 7DB0I/O數(shù)據(jù)017/RSTIR e s e t Signal,低 電 平有效8 8DB1I/O數(shù)據(jù)118NC-空腳9 9DB2I/O數(shù)據(jù)219LEDA-背 光 源正極(+5V)1010DB3I/O數(shù)據(jù)320LEDK-背 光 源負(fù)極(0V)OCMJ4X8C的引腳說明:引腳連接方式:PSB、RST接高電平(3.3v);RS接P3.0;R/W接P3.1;E接

19、P3.2;DB0-DB7接P5口,電源接3.3v(包括背光) GND接地(包括背光)。1、顯示資料RAM(DDRAM) 顯示數(shù)據(jù)RAM 提供64x2 個(gè)字節(jié)的空間,最多可以控制4 行16 字(64 個(gè)字)的中文字型顯示,當(dāng)輸入顯示資料RAM時(shí),可以分別顯示CGROM,HCGROM 與CGRAM 的字型;本系列模塊可以顯示三種字型,分別是半寬的HCGROM 字型、CGRAM 字型及中文CGROM 字型,三種字型的選擇,由在DDRAM 中寫入的編碼選擇,在0000H0006H 的定字型,02H7FH 的編碼中將選擇半編碼中將選擇CGRAM 的自寬英數(shù)字的字型,至于A1 以上的編碼將自動(dòng)的結(jié)合下一個(gè)

20、字節(jié),組成兩個(gè)字節(jié)的編碼達(dá)成中文字型的編碼。 BIG5(A140D75F) GB(A1A0F7FF),詳細(xì)各種字型編碼如下: 1)顯示半寬字型:將8 位資料寫入DDRAM 中,范圍為02H7FH 的編碼。 2)顯示CGRAM 字型:將16 位資料寫入DDRAM 中,總共有0000H,0002H,0004H,0006H 四種編碼。 3)顯示中文字形:將16 位資料寫入DDRAM 中,范圍為A140HD75FH 的編碼(BIG5) , A1A0HF7FFH 的編碼(GB)。將16 位資料寫入DDRAM 方式為透過連寫入兩個(gè)字節(jié)的資料來完成,先寫入高字節(jié)(D15D8)再寫入低字節(jié)(D7D0)。2、繪

21、圖RAM(GDRAM) 繪圖顯示RAM 提供64x32 個(gè)字節(jié)的記憶空間(由擴(kuò)充指令設(shè)定繪圖RAM 地址),最多可以控制256x64點(diǎn)的二維繪圖緩沖空間,在更改繪圖RAM 時(shí),由擴(kuò)充指令設(shè)定GDRAM 地址先設(shè)垂直地址再設(shè)水平地址(連續(xù)寫入兩個(gè)字節(jié)的數(shù)據(jù)來完成垂直與水平的坐標(biāo)地址),再寫入兩個(gè)8 位的資料到繪圖RAM,而地址計(jì)數(shù)器(AC)會(huì)自動(dòng)加一,整個(gè)寫入繪圖RAM 的步驟如下: 1)先將垂直的字節(jié)坐標(biāo)(Y)寫入繪圖RAM 地址。 2)再將水平的字節(jié)坐標(biāo)(X)寫入繪圖RAM 地址。 3)將D15D8 寫入到RAM 中(寫入第一個(gè)Bytes)。 4)將D7D0 寫入到RAM 中(寫入第二個(gè)By

22、tes)。液晶屏顯示地址:判忙: 等待液晶模塊空閑。 當(dāng)模塊在接受指令前,單片機(jī)必須先確認(rèn)模塊內(nèi)部處于非忙碌狀態(tài),即讀取 BF 標(biāo)志時(shí) BF需為 0,方可接受新的指令;如果在送出一個(gè)令前并不檢查 BF標(biāo)志,那么在前一個(gè)指令和這個(gè)指令中間必須延遲一段較長(zhǎng)的時(shí)間,即等待前一個(gè)指令確實(shí)執(zhí)行完成;在這里,選用等待忙標(biāo)志結(jié)束。程序如下:void WaitForEnable() char busy; CLR_RS; SET_RW; DATA_DIR_IN; do /判忙 SET_EN; _NOP(); busy = DATA_IN; CLR_EN; while(busy & 0 x80); DATA_DI

23、R_OUT;這樣,每次向液晶寫命令或數(shù)據(jù)時(shí),只需先調(diào)用此函數(shù)即可,該函數(shù)將會(huì)阻塞,直到忙標(biāo)志變回0(內(nèi)部空閑,可以接受命令)。寫入數(shù)據(jù): 向模塊內(nèi)部RAM寫入數(shù)據(jù)。寫入數(shù)據(jù)到DDRAM即可顯示到液晶,寫入函數(shù):void LcdWriteData(char data) WaitForEnable(); SET_RS; CLR_RW; DATA_OUT = data; /寫數(shù)據(jù) SET_EN; _NOP(); CLR_EN;同樣,調(diào)用這個(gè)函數(shù)也可以向其他RAM寫入數(shù)據(jù),完成相應(yīng)操作。寫入命令: 向模塊寫入命令。寫入命令可以通過液晶的指令集,控制液晶完成相應(yīng)的功能。程序如下:void LcdWrit

24、eComm(char cmd) WaitForEnable(); /檢測(cè)忙信號(hào)? CLR_RS; CLR_RW; DATA_OUT = cmd; /寫命令 SET_EN; _NOP(); CLR_EN;如果cmd是0 x80-0 x9F,則是向液晶寫入地址;地址表參見前面硬件介紹部分。寫入字符串: 寫入字符串,以顯示。寫入字符串即是多次調(diào)用寫入數(shù)據(jù),把字符串寫入液晶以供顯示。程序如下:void LcdWriteString(char addr,char *str) LcdWriteComm(addr); while(*str!=0) LcdWriteData(*str); str+; 這是向某

25、個(gè)地址寫入字符串,液晶顯示到相應(yīng)位置。這個(gè)函數(shù)有個(gè)要求,就是字符串是中文字符串;如果不是,每一處的英文必須兩個(gè)相連,否則將顯示亂碼,如果只有一個(gè)英文字符,可以加入空格;如:LcdWriteString(0 x90,1 abcd你好啊); 1+空格+abcd+漢字中 1只有一個(gè)字符,加空格,ab,cd兩個(gè),直接顯示到一個(gè)漢字的位置。液晶初始化:液晶必須初始化之后才能正常使用。初始化就是一系列命令,完成液晶狀態(tài)的初始工作,以使液晶可供正常使用。程序如下:void LcdInit() CTRL_DIR_OUT; DelayNms(500); LcdWriteComm(0 x30); /基本指令集 L

26、cdWriteComm(0 x01); /清屏,地址00H LcdWriteComm(0 x06); /光標(biāo)的移動(dòng)方向 LcdWriteComm(0 x0c); /開顯示,關(guān)游標(biāo)在運(yùn)行過這個(gè)函數(shù)之后,液晶方能正常的顯示;在調(diào)用液晶顯示函數(shù)前,必須先調(diào)用這個(gè)函數(shù)。時(shí)鐘初始化:void ClkInit() char i; BCSCTL1 &= XT2OFF; /打開XT2振蕩器 IFG1&=OFIFG; /清除振蕩錯(cuò)誤標(biāo)志 while(IFG1&OFIFG)!=0) for(i=0;i0 xff;i+); IFG1&=OFIFG; /清除振蕩錯(cuò)誤標(biāo)志 BCSCTL2 |= SELM_2+SELS+

27、DIVS_3; /MCLK為8MHz,SMCLK為1MHz使用示例:這個(gè)程序的使用方式和串口程序庫(kù)的使用方式一樣,把C文件加入工程;H文件包含要調(diào)用的程序源文件中即可。void main( void ) / Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; ClkInit(); LcdInit(); LcdWriteString(0 x90,1 abcd你好啊);這個(gè)函數(shù)運(yùn)行后,將在第二行顯示 1 abcd你好啊 字符串,如果把1后面的空格去掉,中文部分將是亂碼。ClkInit(); 這個(gè)函數(shù)和前面一

28、個(gè)里面調(diào)用的一樣,把主系統(tǒng)時(shí)鐘設(shè)為8MHz,SMCLK設(shè)為1MHz。見附件:實(shí)現(xiàn)方法是F149讀寫外部液晶驅(qū)動(dòng)器實(shí)現(xiàn)。關(guān)鍵技術(shù):顯示漢字(先用字模軟件獲取點(diǎn)陣字模,然后將字模的二進(jìn)制數(shù)發(fā)送到緩沖區(qū)hanzi_zimo.h);cpu初始化(cpu_init.c)液晶顯示操作(lcd.c,包括數(shù)據(jù)發(fā)送,寫入等)在單片機(jī)中Flash存儲(chǔ)器用于存放代碼,屬于只讀型存儲(chǔ)器。但在全系列MSP430單片機(jī)上,可以通過內(nèi)置的Flash控制器,擦除或改寫內(nèi)部任何一段Flash的內(nèi)容。MSP430單片機(jī)內(nèi)部還專門留有一段Flash區(qū)域(InfoFlash)用于存放需要掉電后永久保存的數(shù)據(jù)。利用Flash控制器,可

29、以實(shí)現(xiàn)較大容量的數(shù)據(jù)記錄、用戶設(shè)置參數(shù)在掉電后的保存、在線更新程序等功能圖2.6.1MSP430單片機(jī)存儲(chǔ)器組織結(jié)構(gòu)馮諾依曼結(jié)構(gòu),程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器統(tǒng)一編址三部分:(1)數(shù)據(jù)區(qū)(2)主Flash區(qū)(3)信息Flash區(qū)(1)數(shù)據(jù)區(qū) 最低16個(gè)存儲(chǔ)單元是寄存器區(qū),對(duì)應(yīng)著R0R15共16個(gè)寄存器。其中R0R3作為特殊寄存器:R0是PC(程序指針)、R1是SP(堆棧指針)、R2是SR寄存器、R3是常數(shù)發(fā)生器。R4R15是通用寄存器。包括寄存器與數(shù)據(jù)變量、堆棧等,都屬于RAM主FLASH區(qū)作用為存放程序代碼空間,中斷向量表。在Flash中,將每次能擦除的最小區(qū)塊單位成為“段”(Segment),將

30、每次能連續(xù)寫入的最大區(qū)塊單位稱為”塊”(Block)。Flash擦除以段為單位進(jìn)行,插除后存儲(chǔ)區(qū)全為1;寫入以塊為單位進(jìn)行,寫入后部分單元1被改寫為0,形成有效數(shù)據(jù)。要寫入前必須先擦除,否則會(huì)出錯(cuò)。從最高地址向下排列,每段大小512B,因此不同容量430其主Flash起始地址不同。理論上最高容量Flash起始地址為1100(容量59.75KB),事實(shí)上可通過存儲(chǔ)陣列方式擴(kuò)展。最高地址向下第0段(FE00-FFFF)為中斷向量表位置。信息Flash區(qū) 為了提高單字節(jié)改寫的效率,MSP430單片機(jī)中專門開辟了兩個(gè)較小的段InfoA段(1000H一107FH)和InfoB段(1080-I0FFH)數(shù)

31、等少量需要掉電保存的數(shù)據(jù)。每個(gè)段只有128B。改寫數(shù)據(jù)時(shí),擦除前備份全部?jī)?nèi)容也只需要128B,提高了寫入速度。InfoFlash除了每段的字節(jié)數(shù)比主Flash少之外,使用與主Flash沒有任何區(qū)別。Flash存儲(chǔ)器的讀操作與RAM相同,但擦除操作與寫操作都需要比較復(fù)雜的時(shí)序,還需要專門的編程電壓發(fā)生器的配合,所以無法像RAM一樣直接寫。圖2.6.2Flash控制器的結(jié)構(gòu)圖2.6.3Flash控制器內(nèi)部時(shí)鐘發(fā)生器結(jié)構(gòu)例2.6.1某MSP430單片機(jī)系統(tǒng),ACLK=32.768kHz,MCLK=SMCLK=1.048MHz。為Flash控制器設(shè)置時(shí)鐘。 Flash控制器要求250 -470kHz范

32、圍內(nèi)的時(shí)鐘源,顯然ACLK過低,不能滿足要求。而MCLK和SMCLK高于時(shí)鐘范圍,通過合適的分頻系數(shù)可以得到符合要求范圍的時(shí)鐘當(dāng)對(duì)MCLK或SMCLK進(jìn)行3分頻后,能得到349kHz FCTL2=FWKEY+FSSEL_2+FN1; /SMCLK/3=349kHzFCTL1寄存器負(fù)責(zé)Flash的擦除以及寫入操作。其中擦除操作有3種模式:單段擦除、全部擦除、僅擦除主Flash通過MERAS與ERASE兩位的組合來選擇 MSP430單片機(jī)的Flash控制器也提供了兩種寫入方式:正常寫入和批量寫入。在正常寫入模式下,每次只能寫一字節(jié)(Byte,8Bit)或一個(gè)字(Word,16Bit),待flash

33、存儲(chǔ)單元的電荷注入完畢才能進(jìn)行下一次寫操作,正常寫模式下連續(xù)寫入數(shù)據(jù)速度較慢。控制器還提供批量寫入功能,以解決連續(xù)寫入數(shù)據(jù)時(shí)的效率問題。在批量寫入模式下,寫入以塊(64B)為單位,每次必須寫人64B的整倍數(shù)。例2.6.5在某MSP430單片機(jī)系統(tǒng)上,編寫一段擦除Flash存儲(chǔ)器的InfoA段的程序(假設(shè)Flash已經(jīng)設(shè)置好)例2.6.6某MSP430單片機(jī)系統(tǒng),讀取Flash存儲(chǔ)器的InfoA段內(nèi)的1082H單元內(nèi)容,存于變量Val內(nèi)。例2.6.7某MSP430單片機(jī)系統(tǒng),讀取Flash存儲(chǔ)器的InfoA段內(nèi)的全部?jī)?nèi)容,存于數(shù)組Array128內(nèi)。連續(xù)數(shù)據(jù)記錄不受斷電影響,適合做連續(xù)數(shù)據(jù)記錄隨

34、機(jī)數(shù)據(jù)存儲(chǔ)Flash存儲(chǔ)器的壽命問題可保存百年例2. 6. 8用MSP430單片機(jī)設(shè)計(jì)電壓記錄儀器,每秒采集一次輸入電壓,將電壓的歷史記錄連續(xù)地保存在單片機(jī)內(nèi)部存儲(chǔ)器中,為數(shù)據(jù)連續(xù)記錄編寫函數(shù)。MSP430F425單片機(jī)共有16KB的主Flash存儲(chǔ)空間,假設(shè)程序大小為3.9KB(占用8個(gè)段),扣除中斷向量表所在的第0段,還剩11.5KB從C800H一FCFFH的23段是空余可。的Flash存儲(chǔ)空間可供保存數(shù)據(jù)。集成單元,完成將模擬量轉(zhuǎn)換為數(shù)字量MSP430 x42x系列集成16位AD轉(zhuǎn)換MSP430 x14x系列集成12位AD轉(zhuǎn)換操作單片機(jī)AD轉(zhuǎn)換模塊方法類似分辨率:指A/D轉(zhuǎn)換器所能分辨的

35、最小模擬輸入量,通常用A/D的位數(shù)表示。如:8位A/D的分辨率為8位,10位A/D的分辨率為10位 轉(zhuǎn)換精度:指實(shí)際輸入的模擬值與理論輸入的模擬值(根據(jù)A/D輸出推算)之間的偏差。常用數(shù)字量最低有效位 LSB 的幾分之幾表示。(如1/4 LSB,1/2 LSB)轉(zhuǎn)換時(shí)間和轉(zhuǎn)換速度:轉(zhuǎn)換時(shí)間指完成一次A/D轉(zhuǎn)換所需的時(shí)間,從啟動(dòng)信號(hào)開始到轉(zhuǎn)換結(jié)束,得到穩(wěn)定數(shù)字量的時(shí)間。轉(zhuǎn)換速度是轉(zhuǎn)換時(shí)間的倒數(shù)。2022-4-212022-4-21A/D轉(zhuǎn)換器A/D轉(zhuǎn)換啟動(dòng)信號(hào)數(shù)字量輸出A/D轉(zhuǎn)換完成信號(hào)輸出使能信號(hào)ADC時(shí)鐘電源數(shù)字地參考電源轉(zhuǎn)換啟動(dòng)轉(zhuǎn)換后數(shù)據(jù)讀取程序延時(shí)方式 程序查詢方式 中斷方式3個(gè)獨(dú)立AD

36、C,每個(gè)ADC八個(gè)輸入通道,其中只有A0.0,A1.0,A2.0由引腳從外界輸入。步驟:(1)配置時(shí)鐘及基準(zhǔn)源(2)配置輸入通道(3)配置Sigma-Delta調(diào)制器(4)ADC采樣圖2.7.1SD16模塊的結(jié)構(gòu)框圖使用SD16模塊之前,首先要配置過采樣時(shí)鐘以及基準(zhǔn)源采樣時(shí)鐘頻率越高,得到同樣分辨率所需的時(shí)間越短,這對(duì)減少工作時(shí)間降低功耗有利。當(dāng)采樣頻率過高時(shí)可能導(dǎo)致采樣電容充電未滿導(dǎo)致測(cè)量誤差。所以一般根據(jù)實(shí)際情況選擇最高的時(shí)鐘頻率例2. 7. 1 MSP430F425單片機(jī)的ACLK為32.768kHz,MCLK和SMCLK被配置為4.192MHz,為SD16模塊配置500kHz左右的時(shí)鐘

37、 ACLK太低顯然不適合做SD16的時(shí)鐘,若用MCLK作時(shí)鐘,則CPU無法休眠,選擇SMCLK即可獲得指定高頻時(shí)鐘,而且也能讓CPU進(jìn)入LPM0模式。配置基準(zhǔn)源基準(zhǔn)源是AD轉(zhuǎn)換的標(biāo)準(zhǔn)參比電壓,430可選用內(nèi)部和外部基準(zhǔn),當(dāng)選用內(nèi)部基準(zhǔn)時(shí),這種內(nèi)部基準(zhǔn)源電壓也可以向外設(shè)輸出。內(nèi)部基準(zhǔn)打開時(shí),會(huì)產(chǎn)生額外功耗,因此AD轉(zhuǎn)換結(jié)束應(yīng)予關(guān)閉。例2.7.2SD16模塊采用內(nèi)部基準(zhǔn)源,并對(duì)外提供1.2V基準(zhǔn),外部負(fù)載約3左右。例2.7.4某儀器中使用MSP430單片機(jī)的SD16模塊測(cè)量3種量:ADC0采集某壓力傳感器的輸出、ADC1采集電池電壓、ADC2采集溫度。為SD16配置通道寄存器。例2.7.4某儀器中

38、使用MSP430單片機(jī)的SD16模塊測(cè)量3種量:ADC0采集某壓力傳感器的輸出、ADC1采集電池電壓、ADC2采集溫度。為SD16配置通道寄存器。當(dāng)時(shí)鐘一定時(shí),過采樣率越高,采樣速度越慢,獲得的有效分辨率越高;反之當(dāng)降低過采徉率時(shí),能夠提高采樣速度但會(huì)損失有效分辨率。采樣開始的命令通過SD16SC發(fā)出,之后SDl6模塊將自動(dòng)開啟相應(yīng)的Sigma-Delta調(diào)制器進(jìn)行采樣。當(dāng)采樣結(jié)束時(shí),相應(yīng)的SD161FG標(biāo)志將被置1,最后通過讀取SD16MEMx寄存器獲得采樣結(jié)果。每次讀取SD16MEMx寄存器后SD16IFG標(biāo)志將會(huì)被自動(dòng)清零,若不讀取SDI6MEMx,SD16IFG也可以通過軟件清除。例2

39、.7.5用單次模式采集ADC0的電壓輸入值,存于變量ADCResult0內(nèi)。假設(shè)選擇2分頻后的SMCLK做時(shí)鐘,內(nèi)部基準(zhǔn)源,開啟基準(zhǔn)輸出緩沖器。PGA增益=4,過采樣率=256,數(shù)據(jù)格式為有符號(hào)二進(jìn)制格式(雙極性)。ADC模塊具有編組功能,可實(shí)現(xiàn)多路ADC的并行采樣。SD16GRP設(shè)置。之前ADC,均采用查詢方式,比如查詢SD16IFG位: while (SD16CCTL0 & SD16IFG)=0);/總是在反復(fù)查詢SD16IFG是否為1,為1則才能跳出循環(huán),進(jìn)入到下一步讀取ADC數(shù)據(jù)進(jìn)程。效率極低。因此,對(duì)多任務(wù)的控制檢測(cè)進(jìn)程而言,合理的應(yīng)采用中斷方式,這樣不只提高效率,還可降低功耗(如A

40、D轉(zhuǎn)換過程中關(guān)閉CPU)。 3個(gè)獨(dú)立的ADC中,每個(gè)ADC采樣結(jié)束以及超量程都可以引發(fā)中斷,所以總共有6個(gè)事件會(huì)引發(fā)SD16中斷,這6個(gè)中斷源共用一個(gè)中斷入口SD16_ VECTOR。 例2. 7. 8編寫中斷服務(wù)程,讀取3個(gè)ADC的值。存于ADC_Result3數(shù)組中并在退出中斷后喚醒CPU單端電壓測(cè)量差分電壓測(cè)量比值(Ratiometric)測(cè)量作為數(shù)值輸入設(shè)備電源檢測(cè)圖2.7.4單端電壓測(cè)量圖2.7.6壓力傳感器的差分測(cè)量圖2.7.9用比值法測(cè)量電阻值圖2.7.10用ADC作為電動(dòng)機(jī)速度輸入值利用ADC可以測(cè)量出系統(tǒng)自身的電池電壓。通過測(cè)出的電壓值還可以估算出電池的剩余電量、剩余使用時(shí)間

41、等參數(shù)。MSP430可作筆記本電池模塊控制芯片。分辨率和精度是不同概念精度為測(cè)量的測(cè)量值與真實(shí)值之間的誤差,分辨率是指能分辨的最小刻度。穩(wěn)定度是指多次測(cè)量的誤差分布范圍。AD轉(zhuǎn)換誤差來源零點(diǎn)誤差。增益誤差。隨機(jī)誤差。漂移誤差。非線性誤差。零點(diǎn)誤差由于半導(dǎo)體工藝的對(duì)稱性問題,差分輸入級(jí)在實(shí)際輸入0V的時(shí)候,輸出可能不為0。反映到ADC及測(cè)量結(jié)果上就是一個(gè)固定的偏移量??赏ㄟ^添加調(diào)零電路,或者固定補(bǔ)償方式來減小誤差增益誤差基準(zhǔn)電壓誤差、內(nèi)部PGA增益誤差、分壓電阻誤差都會(huì)導(dǎo)致增益誤差。這也是最主要的誤差來源??赏ㄟ^記錄增益誤差值然后進(jìn)行補(bǔ)償方法來減小誤差隨機(jī)誤差有時(shí)受到干擾、電路設(shè)計(jì)不良、信號(hào)源波

42、動(dòng)都可能造成ADC讀數(shù)的跳動(dòng)。通過改善電路、增加屏蔽措施、差分輸入、增大信號(hào)的濾波常數(shù)等措施都能減少隨機(jī)誤差。漂移誤差對(duì)于零點(diǎn)誤差與增益誤差來說,即使校準(zhǔn)之后,也可能隨溫度與時(shí)間漂移??梢酝ㄟ^選用更低溫度系數(shù)指標(biāo)的元器件來降低溫度漂移誤差。非線性誤差理論上ADC的讀數(shù)與輸入電壓之間的關(guān)系應(yīng)該是線性的。但實(shí)際中因各種非理想因素,如半導(dǎo)體特性在不同電壓下特性不一致、信號(hào)調(diào)理電路元器件存在非線性、被測(cè)的傳感器輸出與測(cè)量物理量之間存在非線性等,都可能導(dǎo)致非線性誤差??赏ㄟ^分段校準(zhǔn)和曲線擬合方式減小誤差。SD16模塊中任何一個(gè)部件的功耗都是較大的。若將ADC相關(guān)的部件一直開啟,總功耗可能達(dá)到毫安級(jí)。只需

43、數(shù)天時(shí)間即可將一節(jié)200mAh容量的紐扣電池耗盡。所以ADC采樣部分必須間歇性工作。同時(shí)還需結(jié)合實(shí)際需要,考慮AD轉(zhuǎn)換的采樣頻率問題。例2.7.12以圖2.7.11的電壓測(cè)量系統(tǒng)為例,若對(duì)輸入信號(hào)連續(xù)地采集,基準(zhǔn)源、ADC、CPU這3個(gè)部分的功耗至少900A。假設(shè)電壓采集的結(jié)果顯示在LCD上供用戶查看。連續(xù)的采集反而導(dǎo)致顯示數(shù)字快速變化,看不清楚。采樣速度降到采樣2次到3次每秒已經(jīng)足夠,且能夠明顯地降低功耗。讓CPU休眠在LPM3模式,用BasicTimer每1/2s喚醒CPU進(jìn)行采樣及處理工作。在采樣前才打開基準(zhǔn)源,采樣后及時(shí)關(guān)閉基準(zhǔn)源例2.7.13以壓力測(cè)量系統(tǒng)為例(見圖2.7.6),一般

44、的壓力橋傳感器內(nèi)阻約1k左右,3V供電時(shí)耗電約3mA左右。若不對(duì)其電源進(jìn)行控制,傳感器的功耗將遠(yuǎn)大于單片機(jī)系統(tǒng)的功耗。3天即可耗盡一節(jié)200mAh的紐扣電池。降低功耗的方法是將壓力橋的激勵(lì)電源從VCC改為P2.2口,通過控制P2.2口的電平高低即可控制傳感器的電源間歇性開啟(見圖2.7.12)。圖2.7.12用I/O口作為電源控制NADC=4095VinVR-VR+VR-NADC=4095,當(dāng)VinVR+ NADC=0, 當(dāng)VinVR-VR-,VR+可由編程進(jìn)行選擇。(見結(jié)構(gòu)邏輯圖)如:據(jù)圖設(shè)置VREFON,REF2_5V,SREF0,SREF1可設(shè)置VR+,SREF2得VR-。 寄存器類型寄

45、存器縮寫寄存器的含義轉(zhuǎn)換控制寄存器ADC12CTL0轉(zhuǎn)換控制寄存器0ADC12CTL1轉(zhuǎn)換控制寄存器1中 斷控制寄存器ADC12IFG中斷標(biāo)志寄存器ADC12IE中斷使能寄存器ADC12IV中斷向量寄存器存 儲(chǔ)及其控制寄存器ADC12MCTL0 ADC12MCTL15存儲(chǔ)控制寄存器015ADC12MEM0 ADC12MEM15存儲(chǔ)寄存器015轉(zhuǎn)換控制寄存器 ADC12CTL0、ADC12CTL1ADC12CTL1 寄存器中斷控制寄存器:ADC12IFG 、ADC12IE 、ADC12IV選擇A0為輸入AD口,需設(shè)定為第二功能,輸入。程序:初始化ADC12void Init_ADC(void)

46、P6DIR |=0 xfe; /使用A/D通道A0,初始化為輸入,其余為輸出(低功耗) P6SEL |=0 x01; /打開第二功能 ADC12CTL0 = ADC12ON /開ADC12內(nèi)核,設(shè)SHT0=2 (N=4) ADC12CTL1 = SHP /SAMPCON信號(hào)選為采樣定時(shí)器輸出 /ADC12內(nèi)部參考電壓設(shè)置 ADC12CTL0 |= REF2_5V; /選用內(nèi)部參考電壓為2.5V ADC12CTL0 |= REFON; /內(nèi)部參考電壓打開 ADC12MCTL0 |= SREF_1; /R+=2.5V R-=VSS /轉(zhuǎn)換允許 ADC12CTL0 |= ENC /轉(zhuǎn)換允許(上升沿)

47、 讀數(shù)據(jù)Void Read_ADC(unsigned int ADC0) /開始AD轉(zhuǎn)換,AD轉(zhuǎn)換完成后(ADC12BUSY=0),ADC12SC自動(dòng)復(fù)位; ADC12CTL0 |= ADC12SC; while(ADC12IFG & ADC12BUSY) = 0); /等待轉(zhuǎn)換結(jié)束 ADC0 = ADC12MEM0;/讀轉(zhuǎn)換數(shù)據(jù)值,同時(shí)清ADC12IFG0標(biāo)志主程序int main( void ) int ADC0; / Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; Init_ADC(); Re

48、ad_ADC(ADC0); return 0; 在全系列的MSP430單片機(jī)中,都帶有一個(gè)16位定時(shí)器Timer_ A以下簡(jiǎn)稱TA,用于精確定時(shí)、計(jì)時(shí)或計(jì)數(shù)。此外,還包括3路(某些型號(hào)5路)捕獲/比較模塊,能夠在無需CPU干預(yù)的情況下自動(dòng)根據(jù)觸發(fā)條件捕獲定時(shí)器計(jì)數(shù)值,或自動(dòng)產(chǎn)生各種輸出波形( PWM調(diào)制、單穩(wěn)態(tài)脈沖等) Timer_ A定時(shí)器分為兩個(gè)部分:主計(jì)數(shù)器和比較/捕獲模塊。主計(jì)數(shù)器負(fù)責(zé)定時(shí)、計(jì)時(shí)或計(jì)數(shù)。(類似于BASIC TIMER)計(jì)數(shù)值(TAR寄存器的值)被送到各個(gè)比較/捕獲模塊中,它們可以在不需CPU干預(yù)的情況下根據(jù)觸發(fā)條件與計(jì)數(shù)器值自動(dòng)完成某些測(cè)量和輸出功能。圖2.8.1主計(jì)數(shù)

49、器部分結(jié)構(gòu)控制字 Timer_A計(jì)數(shù)器提供了3種計(jì)數(shù)模式:增計(jì)數(shù)、連續(xù)增計(jì)數(shù)和增減計(jì)數(shù)。在增模式下每個(gè)時(shí)鐘周期計(jì)數(shù)值TAR加1,當(dāng)TAR值超過TACCRO寄存器(捕獲/比較模塊的設(shè)置值)時(shí)自動(dòng)清零。同時(shí)會(huì)將Timer_A溢出標(biāo)志位TAIFG置1。如果TA中斷被允許。還會(huì)引發(fā)中斷。改變TACCRO寄存器值可以改變定時(shí)周期,非常適合產(chǎn)生周期固定的定時(shí)中斷。連續(xù)模式和增模式類似,可看作增模式的特例。即TACCR0=0 xFFFF。達(dá)到自動(dòng)清零,如有中斷就引發(fā)中斷。一般用于利用捕獲事件記錄事件發(fā)生時(shí)間。增減模式:增減模式相當(dāng)于另一種特殊增模式,當(dāng)TAR加1計(jì)數(shù)達(dá)到TACCR0值時(shí),TAR變?yōu)闇p1,達(dá)到

50、0時(shí)產(chǎn)生中斷。一般用于產(chǎn)生正反計(jì)數(shù)脈沖,用于PWM控制。例2.8.1在MSP430單片機(jī)中,為Timer_A配置時(shí)鐘源及工作模式,使Timer_A在無需CPU干預(yù)的情況下,每隔1.3125s溢出一次(假設(shè)SMCLK=MCLK=1.048576MHz,ACLK=32.768kHz)。32768*1.3125=43008; 除主計(jì)數(shù)器之外,Timer_A還帶有3個(gè)(某些型號(hào)有5個(gè))捕獲/比較模塊。每個(gè)捕獲/比較模塊都有單獨(dú)的模式控制寄存器以及捕獲/比較值寄存器。在比較模式(也叫輸出模式)下,每個(gè)捕獲/比較模塊將不斷地將自身的比較值寄存器與主計(jì)數(shù)器的計(jì)數(shù)值進(jìn)行比較,一旦相等,就將自動(dòng)地改變某個(gè)指定管

51、腳(TAx管腳)的輸出電平。有8種改變電平的規(guī)律可以選擇(8種輸出模式),從而能在無需CPU干預(yù)的情況下輸出PWM調(diào)制、可變單穩(wěn)態(tài)脈沖、移相方波、相位調(diào)制等常用波形在捕獲模式下,用某個(gè)指定管腳(TAx管腳)的輸入電平跳變觸發(fā)捕獲電路,將此刻主計(jì)數(shù)器的計(jì)數(shù)值自動(dòng)保存到相應(yīng)的捕獲值寄存器中。該過程純硬件實(shí)現(xiàn),無需CPU干預(yù),不存在中斷響應(yīng)等時(shí)間延遲??梢杂糜跍y(cè)頻率、測(cè)周期、測(cè)脈寬、測(cè)占空比、門控計(jì)數(shù)等需要獲得波形中精確時(shí)間量的場(chǎng)合。例2.8.3在MSP430F42x單片機(jī)中,捕獲3路信號(hào)。要求其中從P1.0輸入的方波上升沿出發(fā)捕獲邏輯,P1.2輸入方波下降沿觸發(fā)捕獲,P2.0輸入方波上下沿都觸發(fā)捕

52、獲。假設(shè)主計(jì)數(shù)器用ACLK作為時(shí)鐘,連續(xù)計(jì)數(shù)模式,為TimerA及3個(gè)捕獲模塊配置寄存器:比較模式下,通過比較器TACCRx與主計(jì)數(shù)器的計(jì)數(shù)值進(jìn)行比較,兩者相等時(shí)產(chǎn)生EQU信號(hào),該信號(hào)觸發(fā)輸出邏輯,通過OUTMODEx控制位可以配置輸出邏輯,通過不同的輸出邏輯配置合來產(chǎn)生各種輸出波形。例2.8.4在MSP430F42x單片機(jī)中,利用輸出模式0,通過軟件將TA2管腳(P2.0)置高或置低:例2.8.6在MSP430F42x單片機(jī)中,P1.2口(TA1)與P2.0口(TA2)通過晶體管控制兩只燈泡的亮度。要求從P1.2(TA1)管腳輸出占空比75%的PWM調(diào)制波形,從P2.0(TA2)管腳輸出占空

53、比50%的PWM調(diào)制波形,頻率約為100Hz。例2.8.8用MSP430F42x單片機(jī)驅(qū)動(dòng)圖2.8.7所示的逆變電路,要求輸出交流電頻率400Hz左右,正負(fù)半周各占50%時(shí)間,死區(qū)時(shí)間2s左右。假設(shè)SMCLK=1.048576MHz。例2.8.11如圖2.8.10c所示,在MSP430F42x單片機(jī)中,通過P1.0(TA0)輸出管腳驅(qū)動(dòng)一只紅外發(fā)射管,發(fā)出38kHz調(diào)制的紅外線。假設(shè)SMCLK=4.194304MHz。Timer_A定時(shí)器的下列4種事件均能產(chǎn)生中斷:主計(jì)數(shù)值計(jì)滿(或計(jì)至TACCR0)后復(fù)位,TAIFG標(biāo)志被置1。捕獲通道0發(fā)生捕獲事件,或主計(jì)數(shù)值TAR計(jì)至TACCR0(計(jì)數(shù)值從TACCR0-1跳至TACCR0的時(shí)刻),TACCTL0寄存器內(nèi)的CCIFG標(biāo)志被置1。捕獲通道1發(fā)生捕獲事件,或主計(jì)數(shù)值TAR計(jì)至TACCR1(計(jì)數(shù)值從TACCR1-1跳至TACCR1的時(shí)刻),TACCTL1寄存器內(nèi)的CCIFG標(biāo)志被置1。捕獲通道2發(fā)生捕獲事件,或主計(jì)數(shù)值TAR計(jì)至TACCR2(計(jì)數(shù)值從TACCR2-1跳至TACCR2的時(shí)刻),TACCTL2寄存器內(nèi)的CCIFG標(biāo)志被置1。這4種事件占用了兩個(gè)中斷源,其中,事件2(計(jì)至TACCRO或

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論