MSP430單片機(jī)原理與應(yīng)用_第1頁(yè)
MSP430單片機(jī)原理與應(yīng)用_第2頁(yè)
MSP430單片機(jī)原理與應(yīng)用_第3頁(yè)
MSP430單片機(jī)原理與應(yīng)用_第4頁(yè)
MSP430單片機(jī)原理與應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩555頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

MSP430單片機(jī)原理與應(yīng)用第1章MSP430單片機(jī)概述MSP430單片機(jī)發(fā)展及應(yīng)用1.1MSP430單片機(jī)的特點(diǎn)1.2MSP430單片機(jī)應(yīng)用選型1.3

在種類(lèi)和數(shù)量繁多的單片機(jī)中,MSP430單片機(jī)頗具特色,并具有優(yōu)良的性能。MPS430單片機(jī)是美國(guó)德州儀器公司(以下簡(jiǎn)稱TI公司)于1996年開(kāi)始推向市場(chǎng)的一種16位超低功耗的混合信號(hào)處理器。它將模擬電路、數(shù)字電路和微處理器集成在芯片的內(nèi)部,只要配置少量的外圍器件,就可滿足一般應(yīng)用的要求。為了使讀者對(duì)MSP430單片機(jī)有一個(gè)初步的認(rèn)識(shí)和了解,本章首先介紹MSP430單片機(jī)的發(fā)展歷史及應(yīng)用,然后敘述MSP430單片機(jī)具有的特點(diǎn)及優(yōu)勢(shì),最后簡(jiǎn)要介紹MSP430單片機(jī)的應(yīng)用選型。1.1MSP430單片機(jī)發(fā)展及應(yīng)用1.1.1MSP430單片機(jī)的發(fā)展1.開(kāi)始階段2.尋找突破引入Flash技術(shù)3.蓬勃發(fā)展階段1996年-2000年TI公司推出33x、32x、31x、11x、11x1等系列單片機(jī)2000年-2003年TI公司推出F13x、F14x、F41x、F43x、F44x等系列單片機(jī)2003年-今TI公司推出F15x、F16x、x2xx、FExx、FGxx、FWxx、F5xx、F6xx等系列單片機(jī)MSP430單片機(jī)是一個(gè)16位、具有精簡(jiǎn)指令集、超低功耗的混合信號(hào)處理器。在1996年問(wèn)世時(shí),由于它具有極低的功耗、豐富的片內(nèi)外設(shè)和方便靈活的開(kāi)發(fā)手段,成為眾多單片機(jī)系列中一顆耀眼的新星?;仡橫SP430單片機(jī)的發(fā)展過(guò)程,大致可以分為3個(gè)階段。1.1MSP430單片機(jī)發(fā)展及應(yīng)用1.1.2MSP430單片機(jī)的應(yīng)用領(lǐng)域能量收集可再生能源無(wú)電池設(shè)備太陽(yáng)能、熱能、振動(dòng)能等計(jì)量?jī)x表電能表燃?xì)獗砹髁勘碇悄苡?jì)量?jī)x器消費(fèi)類(lèi)電子產(chǎn)品便攜式電子產(chǎn)品遙控器個(gè)人保健PC外設(shè)安全與安防煙霧探測(cè)器運(yùn)動(dòng)探測(cè)器振動(dòng)檢測(cè)器智能傳感器電機(jī)控制打印機(jī)風(fēng)扇天線玩具無(wú)線通信遠(yuǎn)程傳感器通訊控制器便攜式醫(yī)療血糖計(jì)溫度計(jì)心率監(jiān)測(cè)計(jì)可植入裝置USB通信應(yīng)用數(shù)據(jù)記錄器模擬和數(shù)字傳感器系統(tǒng)連接各種USB設(shè)備的應(yīng)用1.2MSP430單片機(jī)的特點(diǎn)MSP430單片機(jī)具有以下主要特點(diǎn):MSP430單片機(jī)的五大特點(diǎn)1、超低功耗2、強(qiáng)大的處理能力3、高性能模擬技術(shù)及豐富的片上外設(shè)4、系統(tǒng)工作穩(wěn)定5、高效靈活的開(kāi)發(fā)環(huán)境1.2MSP430單片機(jī)的特點(diǎn)MSP430單片機(jī)主要通過(guò)以下幾個(gè)方面來(lái)保持其超低功耗的特性:①電源電壓采用1.8~3.6V低工作電壓,在RAM數(shù)據(jù)不丟失情況下耗電僅為0.1mA,活動(dòng)模式耗電290mA/MIPS,I/O輸入端口的最大漏電流僅為50nA。②MSP430單片機(jī)具有靈活的時(shí)鐘系統(tǒng),在該時(shí)鐘系統(tǒng)下,不僅可以通過(guò)軟件設(shè)置時(shí)鐘分頻和倍頻系數(shù),為不同速度的設(shè)備提供不同速度的時(shí)鐘,而且可以隨時(shí)將某些暫時(shí)不工作模塊的時(shí)鐘關(guān)閉。這種靈活獨(dú)特的時(shí)鐘系統(tǒng)還可以實(shí)現(xiàn)系統(tǒng)不同深度的休眠,讓整個(gè)系統(tǒng)以間歇方式工作,最大限度地降低功耗。③MSP430單片機(jī)采用向量中斷,支持十多個(gè)中斷源,并可以任意嵌套。利用中斷將CPU從休眠模式下喚醒只需3.5ms,平時(shí)讓單片機(jī)處于低功耗狀態(tài),需要運(yùn)行時(shí)通過(guò)中斷喚醒CPU,這樣既能降低系統(tǒng)功耗,又可以對(duì)外部中斷請(qǐng)求做出快速反應(yīng)。1超低功耗2強(qiáng)大的處理能力1.2MSP430單片機(jī)的特點(diǎn)MSP430單片機(jī)內(nèi)核是16位RISC處理器,一個(gè)時(shí)鐘周期可以執(zhí)行一條指令。目前MSP430單片機(jī)指令速度可高達(dá)25MIPS。某些內(nèi)部帶有硬件乘法器的MSP430單片機(jī),結(jié)合DMA控制器甚至能夠完成某些DSP的功能,大大增強(qiáng)了MSP430單片機(jī)的數(shù)據(jù)處理和運(yùn)算能力,可以有效地實(shí)現(xiàn)一些數(shù)字信號(hào)處理的算法(如FFT、DTMF等)。3高性能模擬技術(shù)及豐富的片上外設(shè)1.2MSP430單片機(jī)的特點(diǎn)MSP430單片機(jī)結(jié)合TI公司的高性能模擬技術(shù),具有非常豐富的片上外設(shè),主要包含以下功能模塊:時(shí)鐘模塊(UCS)、Flash控制器、RAM控制器、DMA控制器、通用I/O端口(GPIO)、CRC校驗(yàn)?zāi)K、定時(shí)器(Timer)、實(shí)時(shí)時(shí)鐘模塊(RTC)、32位硬件乘法控制器(MPY32)、LCD段式液晶驅(qū)動(dòng)模塊、10位/12位模數(shù)轉(zhuǎn)換器(ADC10/ADC12)、12位數(shù)模轉(zhuǎn)換器(DAC12)、比較器(COMP)、UART、SPI、I2C、USB模塊等。不同型號(hào)的單片機(jī),實(shí)際上即為不同片上外設(shè)的組合,豐富的片上外設(shè)不僅給系統(tǒng)設(shè)計(jì)帶來(lái)了極大的方便,同時(shí)也降低了系統(tǒng)成本。4系統(tǒng)工作穩(wěn)定1.2MSP430單片機(jī)的特點(diǎn)MSP430單片機(jī)內(nèi)部集成了數(shù)字振蕩器(DCO)。系統(tǒng)上電復(fù)位后,首先由DCO的時(shí)鐘(DCO_CLK)啟動(dòng)CPU,以保證程序從正確的位置開(kāi)始執(zhí)行,保證晶體振蕩器有足夠的起振及穩(wěn)定時(shí)間。然后可通過(guò)設(shè)置適當(dāng)?shù)募拇嫫骺刂莆粊?lái)確定最終的系統(tǒng)運(yùn)行時(shí)鐘頻率。如果晶體振蕩器在用作CPU時(shí)鐘MCLK時(shí)發(fā)生故障,DCO會(huì)自動(dòng)啟動(dòng),以保證系統(tǒng)正常工作。另外,MSP430單片機(jī)還集成了看門(mén)狗定時(shí)器,可以配置為看門(mén)狗模式,讓單片機(jī)在出現(xiàn)死機(jī)時(shí)能夠自動(dòng)重啟。5高效靈活的開(kāi)發(fā)環(huán)境1.2MSP430單片機(jī)的特點(diǎn)MSP430單片機(jī)有OTP型、Flash型和ROM型3種類(lèi)型的器件,現(xiàn)在大部分使用的是Flash型,可以多次編程。Flash型MSP430單片機(jī)具有十分方便的開(kāi)發(fā)調(diào)試環(huán)境,這是由于其內(nèi)部集成了JTAG調(diào)試接口和Flash存儲(chǔ)器,可以在線實(shí)現(xiàn)程序的下載和調(diào)試。開(kāi)發(fā)人員只需一臺(tái)計(jì)算機(jī)、一個(gè)具有JTAG接口的調(diào)試器和一個(gè)軟件開(kāi)發(fā)集成環(huán)境即可完成系統(tǒng)的軟件開(kāi)發(fā)。目前針對(duì)MSP430單片機(jī),推薦使用CCSv5軟件開(kāi)發(fā)集成環(huán)境。CCSv5為CCS軟件的最新版本,功能更強(qiáng)大、性能更穩(wěn)定、可用性更高,是MSP430軟件開(kāi)發(fā)的理想工具。1.3MSP430單片機(jī)應(yīng)用選型MSP430單片機(jī)擁有400多種超低功耗微處理器器件。在介紹產(chǎn)品選型之前,首先需要了解MSP430單片機(jī)的型號(hào)命名規(guī)則,如圖1.3.1所示。1.3.1MSP430單片機(jī)應(yīng)用選型圖1.3.1MSP430單片機(jī)型號(hào)解碼圖

在MSP430單片機(jī)型號(hào)中,除“430”以外的數(shù)字,其含義如下。第一位數(shù)字表示主系列,目前有以下幾個(gè)主系列:MCLK為8MHz的MSP430F1xx系列、MCLK為16MHz的MSP430F2xx系列、MCLK為16MHz并具有LCD驅(qū)動(dòng)器的MSP430F4xx系列、MCLK高達(dá)25MHz的MSP430F5xx系列、MCLK高達(dá)25MHz并具有LCD驅(qū)動(dòng)器的MSP430F6xx系列。在每個(gè)主系列中,又可分為若干個(gè)子系列,所以,第二位數(shù)字表示子系列。每個(gè)子系列含有的功能模塊類(lèi)似,即具有相似的功能。最后的兩位數(shù)字表示不同的內(nèi)存容量及片上外設(shè)的配置。1.3MSP430單片機(jī)應(yīng)用選型各種類(lèi)型存儲(chǔ)器特性如表1.3.1所示:

存儲(chǔ)器類(lèi)型名稱特性FFlash閃存,具有ROM的非易失性和EPROM的可擦除性CROM只讀存儲(chǔ)器,適合大批量生產(chǎn)POTP單次可編程存儲(chǔ)器,適合小批量生產(chǎn)EEPROM可擦除只讀存儲(chǔ)器,適合開(kāi)發(fā)樣機(jī)FRFRAM鐵電隨機(jī)存儲(chǔ)器,將SRAM的速度、超低功耗、耐用性、靈活性與Flash的可靠性和穩(wěn)定性結(jié)合在一起表1.3.1各種存儲(chǔ)器特性列表MSP430單片機(jī)中還有一些針對(duì)特殊應(yīng)用而設(shè)計(jì)的專用單片機(jī),如MSP430FG4xx系列單片機(jī)為醫(yī)療儀器專用單片機(jī)、MSP430FW4xx系列為水表專用單片機(jī)、MSP430FE4xx系列單片機(jī)為電能計(jì)量專用單片機(jī)等。這些專用單片機(jī)都是在同系列通用單片機(jī)上增加專用模塊而形成的。例如,MSP430FG4xx系列在F4xx系列上增加了OPAMP可編程放大器;MSP430FW4xx系列在F4xx系列上增加了SCAN-IF無(wú)磁流量檢測(cè)模塊;MSP430FE4xx系列在F4xx系列上增加了E-Meter電能計(jì)量模塊。1.3MSP430單片機(jī)應(yīng)用選型MSP430單片機(jī)的封裝類(lèi)型如1.3.2所示。圖1.3.2MSP430單片機(jī)的部分封裝類(lèi)型示例圖1.3MSP430單片機(jī)應(yīng)用選型1.3.2MSP430單片機(jī)選型MSP430單片機(jī)具有非常多的種類(lèi),在構(gòu)建應(yīng)用系統(tǒng)之前,需慎重考慮單片機(jī)選型的問(wèn)題。一般來(lái)說(shuō),在進(jìn)行MSP430單片機(jī)選型時(shí),可以考慮以下幾個(gè)原則:①選擇內(nèi)部功能模塊最接近系統(tǒng)需求的型號(hào);②若系統(tǒng)開(kāi)發(fā)任務(wù)重,且時(shí)間比較緊迫,可以首先考慮比較熟悉的型號(hào);③考慮所選型號(hào)的存儲(chǔ)器和RAM空間是否能夠滿足系統(tǒng)設(shè)計(jì)的要求;④最后還要考慮單片機(jī)的價(jià)格,盡量在滿足系統(tǒng)設(shè)計(jì)要求的前提下,選用價(jià)格最低的MSP430單片機(jī)型號(hào)。本章小結(jié)1996年,TI公司推出了一種基于RISC的16位混合信號(hào)處理器(MixedSignalProcessor),即MSP430單片機(jī)。這款單片機(jī)專為滿足超低功耗需求而精心設(shè)計(jì)。經(jīng)過(guò)了10多年的發(fā)展,TI公司已擁有超過(guò)400種的MSP430單片機(jī)的芯片。這些芯片在很多領(lǐng)域取得了廣泛的應(yīng)用。本章講述了MSP430單片機(jī)的發(fā)展歷程、應(yīng)用領(lǐng)域、特點(diǎn)及應(yīng)用選型。通過(guò)本章的學(xué)習(xí),讀者對(duì)MSP430單片機(jī)具有了初步的了解和認(rèn)識(shí),從而為以后章節(jié)的學(xué)習(xí)打下良好的基礎(chǔ)。

MSP430單片機(jī)原理與應(yīng)用第2章MSP430單片機(jī)軟件工程開(kāi)發(fā)基礎(chǔ)MSP430單片機(jī)C語(yǔ)言基礎(chǔ)2.1MSP430單片機(jī)軟件工程基礎(chǔ)2.2MSP430單片機(jī)軟件開(kāi)發(fā)集成環(huán)境CCSv52.3MSP430單片機(jī)的CPU屬于RISC(精簡(jiǎn)指令集)處理器,RISC處理器基本上是為高級(jí)語(yǔ)言所設(shè)計(jì)的,因?yàn)榫?jiǎn)指令系統(tǒng)很大程度上降低了編譯器的設(shè)計(jì)難度,有利于產(chǎn)生高效緊湊的代碼。初學(xué)者完全可以在不深入了解匯編指令系統(tǒng)的情況下,直接開(kāi)始C語(yǔ)言的學(xué)習(xí)。本章介紹MSP430單片機(jī)軟件工程的開(kāi)發(fā)基礎(chǔ),主要講解MSP430單片機(jī)C語(yǔ)言編程基礎(chǔ)、MSP430單片機(jī)的軟件編程方法及軟件集成開(kāi)發(fā)環(huán)境的基本操作。通過(guò)本章的講解,旨在使讀者對(duì)MSP430單片機(jī)的編程思想有一定的了解。2.1MSP430單片機(jī)C語(yǔ)言基礎(chǔ)2.1.1標(biāo)識(shí)符和關(guān)鍵字1.標(biāo)識(shí)符

標(biāo)識(shí)符用來(lái)標(biāo)識(shí)程序中某個(gè)對(duì)象的名字,這些對(duì)象可以是語(yǔ)句、數(shù)據(jù)類(lèi)型、函數(shù)、變量、常量、數(shù)組等。標(biāo)識(shí)符的第一個(gè)字符必須是字母或下劃線,隨后的字符必須是字母、數(shù)字或下劃線。例如,count_data、text2是正確形式,而2count是錯(cuò)誤形式。C語(yǔ)言對(duì)大小寫(xiě)字符敏感,所以在編寫(xiě)程序時(shí)要注意大小寫(xiě)字符的區(qū)別。例如,對(duì)于sec和SEC這兩個(gè)標(biāo)識(shí)符來(lái)說(shuō),C語(yǔ)言會(huì)認(rèn)為它們是兩個(gè)完全不同的標(biāo)識(shí)符。

注意:在C430中,標(biāo)識(shí)符的命名應(yīng)該做到簡(jiǎn)潔明了、含義清晰,這樣便于程序的閱讀和維護(hù)。例如,在比較最大值時(shí),最好使用max來(lái)定義該標(biāo)識(shí)符;在片內(nèi)模塊初始化函數(shù)部分,函數(shù)命名后面盡量加上_init,如ADC12_init()表示ADC12模塊初始化函數(shù)。2.1MSP430單片機(jī)C語(yǔ)言基礎(chǔ)2.關(guān)鍵字

關(guān)鍵字是一種具有特定含義的標(biāo)識(shí)符,由于系統(tǒng)已經(jīng)對(duì)這些標(biāo)識(shí)符進(jìn)行了定義,程序就不能再次定義,需要加以保留。用戶不能將關(guān)鍵字用作自己定義的標(biāo)識(shí)符。C語(yǔ)言中,關(guān)鍵字主要有以下3類(lèi)。①數(shù)據(jù)類(lèi)型關(guān)鍵字:auto,char,const,double,enum,extern,float,int,long,register,sizeof,short,static,typedef,union,unsigned,void,volitile。②程序控制關(guān)鍵字:break,case,continue,default,do,else,for,goto,if,return,switch,whlie。③預(yù)處理功能關(guān)鍵字:define,endif,elif,ifdef,ifndef,include,line,undef。2.1MSP430單片機(jī)C語(yǔ)言基礎(chǔ)2.1.2變量變量用于存儲(chǔ)數(shù)據(jù),程序運(yùn)行中其值可以被改變,每個(gè)變量都必須有一個(gè)名字,即變量名。程序定義了一個(gè)變量,即表示在內(nèi)存中擁有了一個(gè)可供使用的存儲(chǔ)單元,用來(lái)存放數(shù)據(jù),即變量的值。而變量名則是編程者給該存儲(chǔ)單元所起的名稱。程序運(yùn)行過(guò)程中,變量的值存儲(chǔ)在內(nèi)存中。從變量中取值,實(shí)際上是根據(jù)變量名找到相應(yīng)的內(nèi)存地址,從該存儲(chǔ)單元中讀取數(shù)據(jù)。在定義變量時(shí),變量的類(lèi)型必須與其被存儲(chǔ)的數(shù)據(jù)類(lèi)型相匹配,以保證程序中變量能夠被正確地使用。當(dāng)指定了變量的數(shù)據(jù)類(lèi)型時(shí),系統(tǒng)將為它分配若干相應(yīng)字節(jié)的內(nèi)存空間。C430中變量類(lèi)型及描述如表2.1.1所示。變量類(lèi)型所占字節(jié)數(shù)值域char1-128~127unsignedchar0~255int2-32768~32767unsignedint0~65535long4-231~231-1unsignedlong0~232-1longlong8-263~263-1unsignedlonglong0~264-1float4-3.40282e38~3.40282e38doublt8-1.79769e308~1.79769e308表2.1.1C430中變量類(lèi)型2.1MSP430單片機(jī)C語(yǔ)言基礎(chǔ)2.1.3C語(yǔ)言運(yùn)算符特殊運(yùn)算符與表達(dá)式算術(shù)運(yùn)算符賦值運(yùn)算符與表達(dá)式位操作運(yùn)算符與表達(dá)式關(guān)系運(yùn)算符與表達(dá)式邏輯運(yùn)算符與表達(dá)式C語(yǔ)言運(yùn)算符2.1MSP430單片機(jī)C語(yǔ)言基礎(chǔ)1.算術(shù)運(yùn)算符C語(yǔ)言中有5種基本的算術(shù)運(yùn)算符:+、-、*、/和%,具體描述如表2.1.2所示。運(yùn)算符含義說(shuō)明+加法或正值運(yùn)算符例如,3+5、+3-減法或負(fù)值運(yùn)算符例如,5-3、-3*乘法運(yùn)算符例如,5*3/除法運(yùn)算符當(dāng)兩個(gè)整數(shù)相除時(shí),結(jié)果為整數(shù),小數(shù)部分舍去,例如,-5/3的運(yùn)算結(jié)果為-1%模運(yùn)算符或求余運(yùn)算符參加運(yùn)算的均應(yīng)是整數(shù),例如,5%3結(jié)果為2表2.1.25種基本的算術(shù)運(yùn)算符描述列表2.1MSP430單片機(jī)C語(yǔ)言基礎(chǔ)C語(yǔ)言中表示加1與減1時(shí)可以采用自增(++)和自減運(yùn)算符(--)。運(yùn)算符“++”使操作數(shù)加1,而“--”使操作數(shù)減1,操作數(shù)可以在前,也可以在后,它們的作用和差異如表2.1.3所示。表2.1.3自增與自減運(yùn)算符列表類(lèi)型含義舉例(設(shè)i的初值為5)i++自加1在執(zhí)行語(yǔ)句之后j=i++;執(zhí)行語(yǔ)句后i為6,j為5++i自加1在執(zhí)行語(yǔ)句之前j=++i;執(zhí)行語(yǔ)句后i為6,j為6i--自減1在執(zhí)行語(yǔ)句之后j=i--;執(zhí)行語(yǔ)句后i為4,j為5--i自減1在執(zhí)行語(yǔ)句之前j=--i;執(zhí)行語(yǔ)句后i為4,j為42.1MSP430單片機(jī)C語(yǔ)言基礎(chǔ)2.關(guān)系運(yùn)算符與表達(dá)式當(dāng)兩個(gè)表達(dá)式用關(guān)系運(yùn)算符連接起來(lái)就成為了關(guān)系表達(dá)式,通常關(guān)系運(yùn)算符用來(lái)判斷某個(gè)條件是否成立。當(dāng)條件成立,運(yùn)算的結(jié)果為真;當(dāng)條件不成立,運(yùn)算的結(jié)果為假。用關(guān)系運(yùn)算符的結(jié)果只有“0”和“1”兩種,關(guān)系運(yùn)算符描述列表如表2.1.4所示。符號(hào)含義設(shè):a=4,b=5>大于a>b返回值0>=大于等于a>=b返回值0==等于a==b返回值0<小于a<b返回值1<=小于等于a<=b返回值1!=不等于a!=b返回值1表2.1.4關(guān)系運(yùn)算符列表2.1MSP430單片機(jī)C語(yǔ)言基礎(chǔ)3.邏輯運(yùn)算符與表達(dá)式C語(yǔ)言中有3種邏輯表達(dá)式:與、或、非,具體描述列表如表2.1.5所示。表2.1.5邏輯運(yùn)算符描述列表符號(hào)含義設(shè):a=4,b=5&&邏輯與,二者均為非零數(shù),結(jié)果為真,否則為假a&&b返回值1||邏輯或,只要有一個(gè)非零數(shù),結(jié)果為真,否則為假a||b返回值1!邏輯非,非真即假,非假即真!a返回值02.1MSP430單片機(jī)C語(yǔ)言基礎(chǔ)4.位操作運(yùn)算符與表達(dá)式位操作運(yùn)算符主要有6種,具體描述列表如表2.1.6所示。表2.1.6位操作運(yùn)算符描述列表位操作運(yùn)算符說(shuō)明舉例&按位相與,均為1時(shí),結(jié)果為1若P1端口輸出寄存器P1OUT=00001111,則執(zhí)行P1OUT=P1OUT&111111110;語(yǔ)句后,P1OUT=00001110,即把最后一位輸出拉低,其余位不變。|按位相或,有1則結(jié)果為1,均為0時(shí)結(jié)果為0若P1OUT=00001111,則執(zhí)行P1OUT=P1OUT|10000000;語(yǔ)句后,P1OUT=10001111,即把第一位輸出拉高其余位不變。^按位異或,兩個(gè)變量相同時(shí),結(jié)果為0;兩個(gè)變量不同時(shí),結(jié)果為1若P1OUT=00001111,則執(zhí)行P1OUT=P1OUT^00111100;語(yǔ)句后,P1OUT=00110011。~按位取反,1取反后為0;0取反后為1若P1OUT=00001111,則執(zhí)行P1OUT=~P1OUT;語(yǔ)句后,P1OUT=11110000。<<左移,把第一個(gè)變量的二進(jìn)制位左移第二個(gè)變量指定的位數(shù),其左移出的數(shù)據(jù)丟棄,變量右側(cè)補(bǔ)“0”若a=00100010,則執(zhí)行a<<2;語(yǔ)句后,a=10001000。>>右移,把第一個(gè)變量的二進(jìn)制位右移第二個(gè)變量指定的位數(shù),其右移出的數(shù)據(jù)丟棄,變量左側(cè)補(bǔ)“0”若a=00100010,則執(zhí)行a>>2;語(yǔ)句后,a=00001000。2.1MSP430單片機(jī)C語(yǔ)言基礎(chǔ)5.賦值運(yùn)算符與表達(dá)式通常把“=”稱為賦值運(yùn)算符,賦值運(yùn)算符主要有11種,具體描述列表如表2.1.7所示。表2.1.7賦值運(yùn)算符描述列表運(yùn)算符描述運(yùn)算符描述=簡(jiǎn)單賦值&=按位與賦值,x&=a;等價(jià)于x=x&a;+=加法賦值,x+=a;等價(jià)于x=x+a;|=按位或賦值,x|=a;等價(jià)于x=x|a;-=減法賦值,x-=a;等價(jià)于x=x-a;^=異或賦值,x^=a;等價(jià)于x=x^a;*=乘法賦值,x*=a;等價(jià)于x=x*a;>>=右移賦值,x>>=a;等價(jià)與x=x>>a;/=除法賦值,x/=a;等價(jià)于x=x/a;<<=左移賦值,x<<=a;等價(jià)于x=x<<a;%=求余賦值,x%=a;等價(jià)于x=x%a;2.1MSP430單片機(jī)C語(yǔ)言基礎(chǔ)6.特殊運(yùn)算符與表達(dá)式

特殊運(yùn)算符包括條件運(yùn)算符、逗號(hào)運(yùn)算符和強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符,在此僅作簡(jiǎn)要介紹。

條件運(yùn)算符主要用于條件求值運(yùn)算,其表達(dá)式一般形式為“表達(dá)式1?表達(dá)式2:表達(dá)式3”,運(yùn)算符“?”的作用是在計(jì)算表達(dá)式1之后,如果表達(dá)式1為真,則執(zhí)行表達(dá)式2,并將結(jié)果作為整個(gè)表達(dá)式的數(shù)值;如果表達(dá)式1的值為假,則執(zhí)行表達(dá)式3,并以其結(jié)果作為整個(gè)表達(dá)式的值。例如,y=’a’>’b’?3:5;執(zhí)行完該語(yǔ)句后,y的值為5。逗號(hào)運(yùn)算符的作用是把幾個(gè)表達(dá)式串在一起,成為逗號(hào)表達(dá)式,其格式為“表達(dá)式1,表達(dá)式2,……,表達(dá)式n”,運(yùn)算順序?yàn)閺淖蟮接?,整個(gè)逗號(hào)表達(dá)式的值是最右邊表達(dá)式的值。強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符的作用是將一個(gè)表達(dá)式或變量轉(zhuǎn)換成所需類(lèi)型,符號(hào)為“()”。例如,(int)a是將a轉(zhuǎn)換為整型;(float)(a+b)是將a+b的結(jié)果轉(zhuǎn)換為浮點(diǎn)數(shù)。2.1MSP430單片機(jī)C語(yǔ)言基礎(chǔ)2.1.4程序設(shè)計(jì)的基本結(jié)構(gòu)

順序結(jié)構(gòu)是從前往后依次執(zhí)行語(yǔ)句。整體看所有的程序,順序結(jié)構(gòu)是基本結(jié)構(gòu),只不過(guò)中間某個(gè)過(guò)程是選擇結(jié)構(gòu)或是循環(huán)結(jié)構(gòu),執(zhí)行完選擇結(jié)構(gòu)或循環(huán)結(jié)構(gòu)后程序又按順序執(zhí)行。1.順序結(jié)構(gòu)2.選擇結(jié)構(gòu)

選擇結(jié)構(gòu)又稱為選取結(jié)構(gòu)或分支結(jié)構(gòu),其基本特點(diǎn)是程序的流程由多路分支組成。在程序的一次執(zhí)行過(guò)程中,根據(jù)不同的條件,只有一條分支被選中執(zhí)行,而其他分支上的語(yǔ)句被直接跳過(guò)。C語(yǔ)言提供的選擇結(jié)構(gòu)語(yǔ)句有兩種:條件語(yǔ)句和開(kāi)關(guān)語(yǔ)句。2.1MSP430單片機(jī)C語(yǔ)言基礎(chǔ)3.循環(huán)結(jié)構(gòu)

循環(huán)語(yǔ)句主要用來(lái)進(jìn)行反復(fù)多次操作,主要有3種語(yǔ)句,其格式如下:

for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語(yǔ)句

while(條件表達(dá)式)語(yǔ)句

do循環(huán)體語(yǔ)句while(條件表達(dá)式)另外,還需介紹在循環(huán)語(yǔ)句控制中用到的兩個(gè)重要關(guān)鍵字:break和continue。在循環(huán)語(yǔ)句中,break的作用是在循環(huán)體中測(cè)試到應(yīng)立即結(jié)束循環(huán)條件時(shí),控制程序立即跳出循環(huán)結(jié)構(gòu),轉(zhuǎn)而執(zhí)行循環(huán)語(yǔ)句后的語(yǔ)句;continue的作用是結(jié)束本次循環(huán),一旦執(zhí)行了continue語(yǔ)句,程序就跳過(guò)循環(huán)體中位于該語(yǔ)句后的所有語(yǔ)句,提前結(jié)束本次循環(huán)周期,并開(kāi)始新一輪循環(huán)。2.1MSP430單片機(jī)C語(yǔ)言基礎(chǔ)2.1.5函數(shù)1.函數(shù)的定義(1)函數(shù)定義的語(yǔ)法形式類(lèi)型標(biāo)識(shí)符函數(shù)名(形式參數(shù)表){

語(yǔ)句序列;}(2)函數(shù)的類(lèi)型和返回值類(lèi)型標(biāo)識(shí)符規(guī)定了函數(shù)的類(lèi)型,也就是函數(shù)的返回值類(lèi)型。函數(shù)的返回值是需要返回給主調(diào)函數(shù)的處理結(jié)果,由return語(yǔ)句給出,例如:return0。無(wú)返回值的函數(shù)其類(lèi)型標(biāo)識(shí)符為void,不必寫(xiě)return語(yǔ)句。(3)形式參數(shù)與實(shí)際參數(shù)函數(shù)定義時(shí)填入的參數(shù)稱為形式參數(shù),簡(jiǎn)稱形參。它們同函數(shù)內(nèi)部的局部變量作用相同。形參的定義是在函數(shù)名后的括號(hào)中。調(diào)用時(shí)替換的參數(shù),是實(shí)際參數(shù),簡(jiǎn)稱實(shí)參。定義的形參與調(diào)用函數(shù)的實(shí)參類(lèi)型應(yīng)該一致,書(shū)寫(xiě)順序應(yīng)該相同。2.1MSP430單片機(jī)C語(yǔ)言基礎(chǔ)2.函數(shù)的聲明

調(diào)用函數(shù)之前首先要在所有函數(shù)外聲明函數(shù)原型,聲明形式如下:

類(lèi)型說(shuō)明符被調(diào)函數(shù)名(含類(lèi)型說(shuō)明的形參表);一旦函數(shù)原型聲明之后,該函數(shù)原型在本程序文件中任何地方都有效,也就是說(shuō)在本程序文件中任何地方都可以依照該原型調(diào)用相應(yīng)的函數(shù)。3.函數(shù)的調(diào)用

在一個(gè)函數(shù)中調(diào)用另外一個(gè)函數(shù)稱為函數(shù)的調(diào)用,調(diào)用函數(shù)的方式有以下4種。(1)作為語(yǔ)句調(diào)用(2)作為表達(dá)式調(diào)用(3)作為參數(shù)調(diào)用(4)遞歸調(diào)用2.1MSP430單片機(jī)C語(yǔ)言基礎(chǔ)4.函數(shù)中變量的類(lèi)別

(1)局部變量

我們把函數(shù)中定義的變量稱為局部變量,由于形參相當(dāng)于函數(shù)中定義的變量,所以形參也是一種局部變量。局部變量?jī)H由被定義的模塊內(nèi)部的語(yǔ)句所訪問(wèn)。模塊以“{”開(kāi)始,以“}”結(jié)束,也就是說(shuō)局部定義的變量只在“{}”內(nèi)有效。局部變量在每次函數(shù)調(diào)用時(shí)分配內(nèi)存空間,在每次函數(shù)返回時(shí)釋放存儲(chǔ)空間。

(2)全局變量

全局變量也稱為外部變量,它是在所有函數(shù)外部定義的變量,它不屬于哪一個(gè)函數(shù),它屬于一個(gè)源程序文件,其作用域是整個(gè)源程序。定義全局變量最好在程序的頂部,全局變量在程序開(kāi)始運(yùn)行時(shí)分配存儲(chǔ)空間,在程序結(jié)束時(shí)釋放存儲(chǔ)空間,在任何函數(shù)中都可以被訪問(wèn)。

局部變量可以和全局變量重名,但是,局部變量會(huì)屏蔽全局變量,在函數(shù)內(nèi)部引用這個(gè)變量時(shí),會(huì)用到同名的局部變量,而不會(huì)用到全局變量。2.1MSP430單片機(jī)C語(yǔ)言基礎(chǔ)5.內(nèi)部函數(shù)和外部函數(shù)

(1)內(nèi)部函數(shù)

如果一個(gè)函數(shù)只能被本文件內(nèi)的其他函數(shù)所調(diào)用,稱為內(nèi)部函數(shù)。在定義內(nèi)部函數(shù)時(shí),在函數(shù)名和函數(shù)類(lèi)型的前面加static。內(nèi)部函數(shù)的定義一般格式為:static類(lèi)型標(biāo)識(shí)符函數(shù)名(形參表)

(2)外部函數(shù)

在聲明函數(shù)時(shí),如果在函數(shù)首部的最左端冠以關(guān)鍵字extern,則表示此函數(shù)是外部函數(shù),可供其他文件調(diào)用,其定義格式為:extern類(lèi)型標(biāo)志符函數(shù)名(形參表)2.1.6數(shù)組2.1MSP430單片機(jī)C語(yǔ)言基礎(chǔ)1.一維數(shù)組

(1)定義一維數(shù)組

在C語(yǔ)言中使用數(shù)組必須先進(jìn)行定義。一維數(shù)組的定義形式如下:

類(lèi)型說(shuō)明符數(shù)組名[常量表達(dá)式];

(2)引用一維數(shù)組

引用一維數(shù)組元素的一般形式如下:數(shù)組名[下標(biāo)],其中下標(biāo)只能是整型常量或整型表達(dá)式。例如:intlist[7];該語(yǔ)句定義了一個(gè)有7個(gè)元素的數(shù)組list,數(shù)組元素分別是list[0],list[1],…,list[6]。

(3)初始化一維數(shù)組

數(shù)組初始化賦值是指在數(shù)組定義時(shí)給數(shù)組元素賦予初值。數(shù)組初始化是在編譯階段進(jìn)行的,這樣將減少運(yùn)行時(shí)間,提高效率。初始化賦值的一般形式如下:

類(lèi)型說(shuō)明符數(shù)組名[常量表達(dá)式]={值,值,……,值};2.二維數(shù)組2.1MSP430單片機(jī)C語(yǔ)言基礎(chǔ)

(1)定義二維數(shù)組

二維數(shù)組定義的一般形式如下:

類(lèi)型說(shuō)明符數(shù)組名[常量表達(dá)式1][常量表達(dá)式2];

其中,“類(lèi)型說(shuō)明符”是指數(shù)組的數(shù)據(jù)類(lèi)型,也就是每個(gè)數(shù)組元素的類(lèi)型?!俺A勘磉_(dá)式1”指出數(shù)組的行數(shù),“常量表達(dá)式2”指出數(shù)組的列數(shù),它們必須都是正整數(shù)。

(2)引用二維數(shù)組

二維數(shù)組的元素也稱為雙下標(biāo)變量,其表示的形式如下:

數(shù)組名[下標(biāo)1][下標(biāo)2]

其中,下標(biāo)1和下標(biāo)2為整形常量或整形表達(dá)式。

(3)初始化二維數(shù)組

二維數(shù)組初始化也是在類(lèi)型說(shuō)明時(shí)給各下標(biāo)變量賦以初值。二維數(shù)組可以按行分段賦值,也可按行連續(xù)賦值。3.字符數(shù)組

(1)定義字符數(shù)組

形式與前面定義的數(shù)值數(shù)組相同。例如:charc[5];

(2)初始化字符數(shù)組

字符數(shù)組也允許在定義時(shí)作初始化賦值。例如:charc[5]={‘c’,’h’,’i’,’n’,’a’};把5個(gè)字符分別賦給了c[0]~c[4]5個(gè)元素。

(3)引用字符數(shù)組

字符數(shù)組的逐個(gè)字符引用,與引用數(shù)組元素類(lèi)似。2.1MSP430單片機(jī)C語(yǔ)言基礎(chǔ)2.1MSP430單片機(jī)C語(yǔ)言基礎(chǔ)2.1.7指針1.指針和指針變量概念C程序中每一個(gè)實(shí)體,如變量、數(shù)組都要在內(nèi)存中占有一個(gè)可標(biāo)識(shí)的存儲(chǔ)區(qū)域,每一個(gè)存儲(chǔ)區(qū)域由若干字節(jié)組成,在內(nèi)存中每個(gè)字節(jié)都有一個(gè)“地址”。一個(gè)存儲(chǔ)區(qū)域的“地址”指的是該存儲(chǔ)區(qū)域中第一字節(jié)的地址(或稱首地址)。在C語(yǔ)言中,將地址形象化地稱為“指針”,一個(gè)變量的地址稱為該變量的“指針”。如果有一個(gè)變量專門(mén)用來(lái)存放另一個(gè)變量的地址(即“指針”),則它稱為“指針變量”。使用指針訪問(wèn)能使目標(biāo)程序占用內(nèi)存少、運(yùn)行速度快。2.指針變量的定義

指針變量的定義格式為:類(lèi)型說(shuō)明符*指針變量名。其中,“*”表示這里定義的是一個(gè)指針類(lèi)型的變量?!邦?lèi)型說(shuō)明符”可以是任意類(lèi)型,指的是指針?biāo)赶虻膶?duì)象的類(lèi)型,這說(shuō)明了指針?biāo)傅膬?nèi)存單元可以用于存放什么類(lèi)型的數(shù)據(jù),稱之為指針的類(lèi)型。例如:int*pointer;說(shuō)明pointer是指向整形的指針變量,也就是說(shuō),在程序中用它可以間接訪問(wèn)整形變量。3.與地址相關(guān)的運(yùn)算——*和&C語(yǔ)言提供了兩個(gè)與地址相關(guān)的運(yùn)算符:*和&。“*”稱為指針運(yùn)算符,表示獲取指針?biāo)赶虻淖兞康闹?。例如?i_pointer表示指針i_pointer所指向的數(shù)據(jù)的值。“&”稱為取地址運(yùn)算符,用來(lái)得到一個(gè)對(duì)象的地址,例如:使用&i就可以得到變量i的存儲(chǔ)單元地址。4.指針的運(yùn)算

指針是一種數(shù)據(jù)類(lèi)型,與其他數(shù)據(jù)類(lèi)型一樣,指針變量也可以參與部分運(yùn)算,包括算術(shù)運(yùn)算、關(guān)系運(yùn)算和賦值運(yùn)算。2.1MSP430單片機(jī)C語(yǔ)言基礎(chǔ)2.1MSP430單片機(jī)C語(yǔ)言基礎(chǔ)2.1.8預(yù)處理命令預(yù)處理是C語(yǔ)言具有的一種對(duì)源程序的處理功能。所謂預(yù)處理,指的是在正常編譯之前對(duì)源程序的預(yù)先處理。這就是說(shuō),源程序在正常編譯之前先進(jìn)行預(yù)處理,即執(zhí)行源程序中的預(yù)處理命令,預(yù)處理后,源程序再被正常編譯。預(yù)處理命令包括宏定義、文件包含和條件編譯3個(gè)主要部分。預(yù)處理指令是以“#”開(kāi)頭的代碼行?!?”必須是該行除了任何空白字符外的第一個(gè)字符?!?”后是指令關(guān)鍵字,在關(guān)鍵字和“#”之間允許存在任意個(gè)數(shù)的空白字符。預(yù)處理指令后面不加“;”。整行語(yǔ)句構(gòu)成一條預(yù)處理指令,該指令將在編譯器進(jìn)行編譯之前對(duì)源代碼做某些轉(zhuǎn)換。部分預(yù)處理指令及說(shuō)明如表2.1.9所示。預(yù)處理指令說(shuō)

明#空指令無(wú)任何效果#include包含一個(gè)源文件代碼#define定義宏#undef取消已定義的宏#if如果給定條件為真,則編譯下面代碼#ifdef如果宏已經(jīng)定義,則編譯下面代碼#ifndef如果宏沒(méi)有定義,則編譯下面代碼#elif如果前面的#if給定條件不為真,則編譯下面代碼#endif結(jié)束一個(gè)#if……#else條件編譯塊#error停止編譯并顯示錯(cuò)誤信息表2.1.9部分預(yù)處理指令及說(shuō)明2.2MSP430單片機(jī)軟件工程基礎(chǔ)2.2.1MSP430單片機(jī)軟件編程方法

最簡(jiǎn)單、最常用的MSP430單片機(jī)軟件流程如圖2.2.1所示。主監(jiān)控程序首先進(jìn)行系統(tǒng)初始化,包括初始化I/O端口、片內(nèi)外設(shè)和變量等,之后進(jìn)入低功耗休眠模式。當(dāng)被中斷喚醒后,通過(guò)查詢標(biāo)志位來(lái)執(zhí)行相應(yīng)的任務(wù)。當(dāng)查詢結(jié)束后,再次進(jìn)入低功耗休眠模式等待被中斷喚醒。中斷服務(wù)程序可以置位相應(yīng)標(biāo)志位或執(zhí)行相應(yīng)任務(wù)。用戶可以選擇在中斷喚醒MSP430單片機(jī)后在主循環(huán)中通過(guò)查詢標(biāo)志位處理任務(wù),也可以選擇在中斷服務(wù)程序中處理任務(wù)??梢詫?duì)定時(shí)要求不嚴(yán)格或?qū)崟r(shí)性要求不高的任務(wù)放在主循環(huán)中,通過(guò)查詢標(biāo)志位來(lái)完成,例如,液晶顯示任務(wù)等。將對(duì)定時(shí)要求嚴(yán)格或?qū)崟r(shí)性要求較高的任務(wù)放在中斷服務(wù)程序中完成,例如,ADC采樣任務(wù)、按鍵處理任務(wù)等。圖2.2.1MSP430單片機(jī)軟件流程示意圖2.2MSP430單片機(jī)軟件工程基礎(chǔ)2.2.2模塊化編程介紹

模塊化程序設(shè)計(jì)需理解以下概念:

(1)模塊是一個(gè).c文件和一個(gè).h文件的結(jié)合,頭文件(.h)中是對(duì)于該模塊接口的聲明;

(2)某模塊提供給其他模塊調(diào)用的外部函數(shù)及變量需在.h文件中冠以extern關(guān)鍵字聲明;

(3)模塊內(nèi)的函數(shù)和全局變量需在.c文件開(kāi)頭冠以static關(guān)鍵字聲明;

(4)永遠(yuǎn)不要在.h文件中定義變量。2.2MSP430單片機(jī)軟件工程基礎(chǔ)2.2.3高質(zhì)量程序軟件應(yīng)具備的條件

程序軟件質(zhì)量是一個(gè)非常重要的概念,一個(gè)高質(zhì)量的程序軟件不僅能使系統(tǒng)無(wú)錯(cuò)誤且正常運(yùn)行,而且程序本身結(jié)構(gòu)清晰,可讀性強(qiáng)。高質(zhì)量的程序軟件應(yīng)具備以下條件:

①結(jié)果必須正確、功能必須實(shí)現(xiàn),且在精度和其他各方面均滿足要求;

②便于檢查、修正、移植和維護(hù);

③具有良好的結(jié)構(gòu)、書(shū)寫(xiě)規(guī)范、邏輯清晰、可讀性強(qiáng);

④運(yùn)行時(shí)間盡可能短,同時(shí)盡可能合理地使用內(nèi)存。2.3MSP430單片機(jī)軟件開(kāi)發(fā)集成環(huán)境CCSv5CCS(CodeComposerStudio)是TI公司研發(fā)的一款具有環(huán)境配置、源文件編輯、程序調(diào)試、跟蹤和分析等功能的集成開(kāi)發(fā)環(huán)境。它能夠幫助用戶在一個(gè)軟件環(huán)境下完成編輯、編譯、鏈接、調(diào)試和數(shù)據(jù)分析等工作。CCSv5為CCS軟件的最新版本,功能更強(qiáng)大、性能更穩(wěn)定、可用性更高,是MSP430單片機(jī)軟件開(kāi)發(fā)的理想工具。以往人們采用IAR軟件開(kāi)發(fā)MSP430單片機(jī)的軟件。現(xiàn)在CCSv5對(duì)MSP430單片機(jī)的支持達(dá)到了全新的高度,其中的許多功能是IAR所無(wú)法比擬的,例如集成了MSP430Ware插件和Grace圖形編程插件等。因此,建議使用CCSv5進(jìn)行MSP430單片機(jī)軟件的開(kāi)發(fā)。2.3.1CCSv5的下載及安裝1.CCSv5的下載途徑TI公司的CCSv5開(kāi)發(fā)集成環(huán)境為收費(fèi)軟件,但是,可以下載評(píng)估版本使用,下載網(wǎng)址為:/index.php/GSG:CCSv5_Download。2.3MSP430單片機(jī)軟件開(kāi)發(fā)集成環(huán)境CCSv52.CCSv5的安裝步驟

(1)運(yùn)行安裝程序ccs_setup_0031.exe,當(dāng)運(yùn)行到圖2.3.1處時(shí),選擇Custom選項(xiàng),進(jìn)入手動(dòng)安裝選擇通道。

(2)單擊Next得到圖2.3.2所示窗口,為了安裝快捷,在此只選擇支持MSP430LowPowerMCUs的選項(xiàng)。單擊Next,保持默認(rèn)配置,繼續(xù)安裝,安裝完成后,彈出如圖2.3.3所示窗口。圖2.3.1安裝過(guò)程1圖2.3.2安裝過(guò)程2圖2.3.3軟件安裝完成2.3MSP430單片機(jī)軟件開(kāi)發(fā)集成環(huán)境CCSv5

(3)單擊“Finish”按鈕,將運(yùn)行CCSv5,彈出如圖2.3.4所示窗口,打開(kāi)“我的電腦”圖標(biāo),在某一磁盤(pán)下,創(chuàng)建工作區(qū)間文件夾路徑:F:\MSP-EXP430F5529\Workspace(注意,任意名稱的文件夾均可,就是不能使用中文名),單擊“Browse”按鈕,將工作區(qū)間鏈接到所建文件夾,不勾選“Usethisasthedefaultanddonotaskagain”選項(xiàng)。

(4)單擊“OK”按鈕,第一次運(yùn)行CCSv5需進(jìn)行軟件許可的選擇,如圖2.3.5所示。在此,選擇“CODESIZELIMITED(MSP430)”選項(xiàng),在該選項(xiàng)下,對(duì)于MSP430單片機(jī),CCSv5免費(fèi)開(kāi)放16KB的程序空間;若讀者有軟件許可,可以選擇第一個(gè)選項(xiàng)(ACTIVATE)進(jìn)行軟件許可的認(rèn)證,單擊“Finish”按鈕即可進(jìn)入CCSv5軟件開(kāi)發(fā)集成環(huán)境,如圖2.3.6所示。圖2.3.4Workspace選擇窗口圖2.3.5軟件許可選擇窗口

圖2.3.6CCSv5軟件開(kāi)發(fā)集成環(huán)境界面2.3MSP430單片機(jī)軟件開(kāi)發(fā)集成環(huán)境CCSv52.3.2利用CCSv5導(dǎo)入已有工程

(1)首先打開(kāi)CCSv5,選擇“File→Import”命令,彈出如圖2.3.7所示對(duì)話框,單擊展開(kāi)“CodeComposerStudio”選項(xiàng),選擇“ExistingCCS/CCEEclipseProjects”。(2)單擊“Next”按鈕,彈出圖2.3.8所示對(duì)話框。

圖2.3.7導(dǎo)入新的CCSv5工程文件圖2.3.8選擇導(dǎo)入工程目錄(3)單擊“Browse”按鈕,選擇需導(dǎo)入的工程所在目錄,如圖2.3.9所示。(4)單擊“Finish”按鈕,即可完成已有工程的導(dǎo)入。2.3MSP430單片機(jī)軟件開(kāi)發(fā)集成環(huán)境CCSv5圖2.3.9選擇導(dǎo)入工程2.3MSP430單片機(jī)軟件開(kāi)發(fā)集成環(huán)境CCSv52.3.3利用CCSv5新建工程

(1)首先打開(kāi)CCSv5并確定工作區(qū)間,然后選擇“File→New→CCSProject”命令,彈出如圖2.3.10所示的對(duì)話框。(2)在“Projectname”中輸入新建工程的名稱,在此輸入myccs1。(3)在“Outputtype”中有兩個(gè)選項(xiàng):Executable和Staticlibrary。前者為構(gòu)建一個(gè)完整的可執(zhí)行程序,后者為靜態(tài)庫(kù)。在此保留Executable。(4)在“Device”部分選擇器件的型號(hào):在“Family”中選擇MSP430;“Variant”中選擇MSP430x5xxFamily,芯片選擇MSP430F5529;“Connection”保持默認(rèn)。(5)選擇空工程,然后單擊“Finish”按鈕完成新工程的創(chuàng)建。(6)創(chuàng)建的工程將顯示在“ProjectExplorer”對(duì)話框中,如圖2.3.11所示。

圖2.3.10新建CCS工程對(duì)話框圖2.3.11初步創(chuàng)建的新工程2.3MSP430單片機(jī)軟件開(kāi)發(fā)集成環(huán)境CCSv5

特別提示:若要新建或?qū)胍延?h或.c文件,步驟如下:(7)新建.h文件:在工程名上右擊,選擇“New→HeaderFile”命令,彈出如圖2.3.12所示對(duì)話框。在“Headerfile”中輸入頭文件的名稱,注意必須以.h結(jié)尾,在此輸入my01.h。(8)新建.c文件:在工程名上右擊,選擇“New→SourceFile”命令,得到如圖2.3.13所示對(duì)話框。在“Sourcefile”中輸入c文件的名稱,注意必須以.c結(jié)尾,在此輸入my01.c。

圖2.3.12新建.h文件對(duì)話框圖2.3.13新建.c文件對(duì)話框2.3MSP430單片機(jī)軟件開(kāi)發(fā)集成環(huán)境CCSv5

(9)導(dǎo)入已有.h或.c文件:在工程名上右擊,選擇“AddFiles”命令,彈出如圖2.3.14所示對(duì)話框。找到所需導(dǎo)入的文件位置并單擊,彈出如圖2.3.15所示對(duì)話框。選中“Copyfiles”,單擊“OK”按鈕,即可將已有文件導(dǎo)入工程中。

工程移植步驟:若已用其他編程軟件(例如IAR)完成了整個(gè)工程的開(kāi)發(fā)。該工程無(wú)法直接移植入CCSv5,但是,可以通過(guò)在CCSv5中新建工程,并根據(jù)步驟(7)、(8)和(9)新建或?qū)胍延?h和.c文件,從而完成整個(gè)工程的移植。

圖2.3.14導(dǎo)入已有文件對(duì)話框圖2.3.15添加或鏈接現(xiàn)有文件2.3MSP430單片機(jī)軟件開(kāi)發(fā)集成環(huán)境CCSv52.3.4利用CCSv5調(diào)試工程(1)首先將所需調(diào)試工程進(jìn)行編譯:選擇“Project→BuildProject”命令,編譯目標(biāo)工程。編譯結(jié)果可通過(guò)圖2.3.16所示窗口查看。若編譯沒(méi)有錯(cuò)誤產(chǎn)生,可以進(jìn)行下載調(diào)試;如果程序有錯(cuò)誤,將會(huì)在Problems窗口顯示。讀者要針對(duì)顯示的錯(cuò)誤修改程序,并重新編譯,直到無(wú)錯(cuò)誤提示。(2)單擊綠色的Debug按鈕

進(jìn)行下載調(diào)試,得到如圖2.3.17所示的界面。調(diào)試窗口變量、觀察及寄存器窗口程序窗口控制臺(tái)窗口圖2.3.17調(diào)試窗口界面圖2.3.16工程調(diào)試結(jié)果Problems窗口2.3MSP430單片機(jī)軟件開(kāi)發(fā)集成環(huán)境CCSv5運(yùn)行停止暫停單步進(jìn)入(c語(yǔ)言調(diào)試)單步跳過(guò)(C語(yǔ)言調(diào)試)單步退出復(fù)位CPU重新開(kāi)始刷新單步跳過(guò)(匯編語(yǔ)言調(diào)試)單步進(jìn)入(匯編語(yǔ)言調(diào)試)2.3MSP430單片機(jī)軟件開(kāi)發(fā)集成環(huán)境CCSv52.3.5MSP430Ware使用指南(1)MSP430Ware是CCSv5附帶的一個(gè)應(yīng)用軟件。在安裝CCSv5時(shí),可選擇同時(shí)安裝MSP430Ware。在TI公司官網(wǎng)上也提供單獨(dú)的MSP430Ware安裝程序下載:/tool/msp430ware。在MSP430Ware中可以很容易地找到MSP430所有系列型號(hào)的Datasheet(數(shù)據(jù)手冊(cè)),User’sguide(用戶指南)及參考例程。此外,MSP430Ware還提供了大多數(shù)TI開(kāi)發(fā)板的用戶指南、硬件設(shè)計(jì)文檔及參考例程。針對(duì)MSP430F5xx和MSP430F6xx系列還提供了驅(qū)動(dòng)庫(kù)文件,以方便用戶進(jìn)行上層軟件開(kāi)發(fā)。(2)在CCSv5中,單擊“View→TIResourceExplorer”命令,在主窗口中會(huì)顯示如圖2.3.24所示界面。其中,在Packages右側(cè)的下拉窗口中可以觀察目前CCSv5中安裝的所有附件軟件。在Packages的下拉菜單中選擇MSP430Ware,進(jìn)入MSP430Ware的界面,如圖2.3.25所示。圖2.3.24TIResourceExplorer界面圖2.3.25MSP430Ware界面2.3MSP430單片機(jī)軟件開(kāi)發(fā)集成環(huán)境CCSv5(3)在MSP430Ware的界面左側(cè)可以看到3個(gè)子菜單,分別是Device,包含MSP430單片機(jī)所有的系列型號(hào),如圖2.3.26所示;DevelopmentTools,包括MSP430單片機(jī)較新的一些開(kāi)發(fā)套件的資料;Libraries,包含可用于MSP430F5xx和MSP430F6xx系列單片機(jī)的驅(qū)動(dòng)庫(kù)函數(shù)及USB的驅(qū)動(dòng)函數(shù)。(4)單擊圖2.3.26所示界面菜單前的加號(hào)展開(kāi)鍵,查看下級(jí)菜單,可以看到在Devices的子目錄下有目前所有的MSP430單片機(jī)的型號(hào),找到正在使用的型號(hào),例如MSP430F5xx/6xx,同樣單擊文字前的加號(hào)展開(kāi)鍵,在子目錄可以找到該系列的User’sGuide。在用戶指南中有對(duì)該系列單片機(jī)的CPU及外圍模塊,包括寄存器配置、工作模式的詳細(xì)介紹和使用說(shuō)明;同時(shí)可以找到的是該系列單片機(jī)的Datasheet,數(shù)據(jù)手冊(cè)與具體的型號(hào)有關(guān),所以在Datasheet的子目錄中會(huì)看到不同型號(hào)單片機(jī)的數(shù)據(jù)手冊(cè);在這里還可以找到參考代碼。圖2.3.26Devices界面2.3MSP430單片機(jī)軟件開(kāi)發(fā)集成環(huán)境CCSv5(5)在MSP430Ware中提供不同型號(hào)單片機(jī)的CCS示例程序,如圖2.3.27所示,在選擇具體型號(hào)后,在右側(cè)窗口中將顯示參考示例程序。為了更好地幫助用戶了解MSP430單片機(jī)的外設(shè),MSP430Ware提供了基于所有外設(shè)的參考例程,從示例程序的名字就可以看出示例程序所涉及的外設(shè),同時(shí)該窗口還給出示例程序的簡(jiǎn)單描述,幫助用戶更快地找到最合適的參考例程。如圖2.3.28所示,單擊選中的參考例程,在彈出的對(duì)話框中選擇連接的目標(biāo)芯片型號(hào)。圖2.3.27MSP430F552x實(shí)例程序界面圖2.3.28芯片型號(hào)選擇窗口2.3MSP430單片機(jī)軟件開(kāi)發(fā)集成環(huán)境CCSv5(6)經(jīng)過(guò)上一步操作后,CCSv5會(huì)自動(dòng)生成一個(gè)包含該示例程序的工程,用戶可在工程瀏覽器(ProjectExplorer)中查看,可以直接進(jìn)行編譯、下載和調(diào)試。如圖2.3.29所示,在“DevelopmentTools”子目錄中可以找到TI公司基于MSP430的開(kāi)發(fā)板,其部分資源已經(jīng)整合在軟件中。另外,還有部分型號(hào)在MSP430Ware中也給出了鏈接,以方便用戶的查找和使用。在該目錄下可以方便地找到相應(yīng)型號(hào)的開(kāi)發(fā)板的用戶指南、硬件電路圖及參考例程。(7)如圖2.3.30所示,為簡(jiǎn)化用戶上層軟件開(kāi)發(fā),TI公司給出了MSP430外圍模塊的驅(qū)動(dòng)庫(kù)函數(shù),這樣用戶可以不用過(guò)多地去考慮底層寄存器的配置。這些驅(qū)動(dòng)庫(kù)函數(shù)可以在MSP430Ware的Libraries子目錄中方便地找到。目前驅(qū)動(dòng)庫(kù)函數(shù)的支持僅限于MSP430F5xx和MSP430F6xx系列單片機(jī)。圖2.3.29DevelopmentTools界面圖2.3.30Libraries界面本章小結(jié)

本章詳細(xì)介紹了MSP430單片機(jī)軟件工程開(kāi)發(fā)基礎(chǔ)。軟件是一個(gè)單片機(jī)系統(tǒng)的靈魂。一個(gè)高質(zhì)量的軟件工程可以使整個(gè)系統(tǒng)運(yùn)行更穩(wěn)定、維護(hù)更方便。針對(duì)初學(xué)者,更適宜采用C語(yǔ)言進(jìn)行MSP430單片機(jī)軟件的開(kāi)發(fā),因此,本章首先介紹MSP430單片機(jī)C語(yǔ)言基礎(chǔ),使讀者不僅熟悉標(biāo)準(zhǔn)C語(yǔ)言的語(yǔ)法,還可以了解C430與標(biāo)準(zhǔn)C語(yǔ)言的區(qū)別。其次,針對(duì)MSP430單片機(jī),介紹了一種簡(jiǎn)單清晰的編程方法,即在正常情況下,MSP430單片機(jī)處于低功耗模式,當(dāng)片內(nèi)外設(shè)產(chǎn)生中斷事件時(shí),喚醒單片機(jī)并執(zhí)行中斷服務(wù)程序。相應(yīng)的中斷事件可在中斷服務(wù)程序中處理,也可通過(guò)設(shè)置標(biāo)志位在主循環(huán)中處理。中斷事件處理完畢后,MSP430單片機(jī)再次進(jìn)入低功耗模式。這種編程結(jié)構(gòu)可將MSP430單片機(jī)的功耗降至最低。本章最后介紹了MSP430單片機(jī)的軟件開(kāi)發(fā)集成環(huán)境CCSv5。CCSv5為MSP430單片機(jī)軟件開(kāi)發(fā)的理想工具,比之前的IAR軟件功能更強(qiáng)大。讀者應(yīng)緊跟MSP430單片機(jī)技術(shù)的發(fā)展潮流,學(xué)習(xí)最新的MSP430單片機(jī)開(kāi)發(fā)軟件,其中有很多非常有用的功能,能夠最大限度地縮短MSP430單片機(jī)系統(tǒng)開(kāi)發(fā)的周期。本章介紹的是CCSv5的基本操作,其他很多有用的功能還需讀者在以后的學(xué)習(xí)和實(shí)踐中不斷掌握。

MSP430單片機(jī)原理與應(yīng)用第3章MSP430單片機(jī)CPU和存儲(chǔ)器MSP430F5xx/6xx系列單片機(jī)結(jié)構(gòu)概述3.1MSP430F5529單片機(jī)的特性、結(jié)構(gòu)和外部引腳3.2MSP430F5xx/6xx系列單片機(jī)的中央處理器3.3

中央處理器(CPU)是單片機(jī)的核心部件,其性能直接關(guān)系到單片機(jī)的處理能力。MSP430單片機(jī)的CPU采用16位精簡(jiǎn)指令系統(tǒng),集成了多個(gè)20位的寄存器(除狀態(tài)寄存器為16位外,其余寄存器均為20位)和常數(shù)發(fā)生器,能夠發(fā)揮代碼的最高效率。MSP430單片機(jī)的存儲(chǔ)空間采用馮·諾依曼結(jié)構(gòu),物理上完全分離的存儲(chǔ)區(qū)域被安排在同一地址空間。這種存儲(chǔ)器組織方式和CPU采用的精簡(jiǎn)指令系統(tǒng)相互配合,使得對(duì)片上外設(shè)的訪問(wèn)不需要單獨(dú)的指令,為軟件的開(kāi)發(fā)和調(diào)試提供了便利。本章以MSP430F5xx/6xx系列單片機(jī)為例,首先簡(jiǎn)單介紹MSP430單片機(jī)的結(jié)構(gòu)和特性,然后重點(diǎn)介紹MSP430單片機(jī)的CPU和存儲(chǔ)器。MSP430單片機(jī)的存儲(chǔ)器3.43.1MSP430F5xx/6xx系列單片機(jī)結(jié)構(gòu)概述MSP430單片機(jī)采用的是馮·諾依曼結(jié)構(gòu)。馮·諾依曼結(jié)構(gòu)是一種將程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器合并在一起且指令和數(shù)據(jù)共享同一總線的存儲(chǔ)器結(jié)構(gòu)。MSP430單片機(jī)的結(jié)構(gòu)主要包含16位精簡(jiǎn)指令集CPU、存儲(chǔ)器、片上外設(shè)、時(shí)鐘系統(tǒng)、仿真系統(tǒng)以及連接它們的數(shù)據(jù)總線和地址總線,如圖3.1.1所示。圖3.1.1MSP430F5xx/6xx系列單片機(jī)結(jié)構(gòu)3.1MSP430F5xx/6xx系列單片機(jī)結(jié)構(gòu)概述1.MSP430F5xx/6xx系列單片機(jī)的結(jié)構(gòu)特征①16位精簡(jiǎn)指令集CPU通過(guò)地址總線和數(shù)據(jù)總線直接與存儲(chǔ)器和片上外設(shè)相連;②單片機(jī)內(nèi)部包含嵌入式仿真系統(tǒng),具有JTAG/SBW接口;③智能時(shí)鐘系統(tǒng)支持多種時(shí)鐘,能夠最大限度地降低功耗;④DMA控制器可顯著地提高程序執(zhí)行效率。2.MSP430F5xx/6xx系列單片機(jī)的主要功能部件主要功能部件BECDACPU總線存儲(chǔ)器嵌入式仿真系統(tǒng)片上外設(shè)3.2MSP430F5529單片機(jī)特性、結(jié)構(gòu)和外部引腳3.2.1MSP430F5529單片機(jī)的特性

低工作電壓:1.8~3.6V;

超低功耗:—活動(dòng)模式(AM):所有系統(tǒng)時(shí)鐘活動(dòng)290μA/MHz在8MHz,3.0V,F(xiàn)lashProgram150μA/MHz在8MHz,3.0V,RAMProgram—待機(jī)模式(LPM3):實(shí)時(shí)時(shí)鐘、看門(mén)狗、電源監(jiān)控、RAM數(shù)據(jù)保持、快速喚醒:1.9μA在2.2V,2.1μA在3.0V(典型)低功耗振蕩器、通用計(jì)數(shù)器、看門(mén)狗、電源監(jiān)控、RAM數(shù)據(jù)保持、快速喚醒:1.4μA在3.0V(典型)—關(guān)閉模式(LPM4):RAM數(shù)據(jù)保持,電源監(jiān)控,快速喚醒:1.1μA在3.0V(典型)—關(guān)斷模式(LPM4.5):0.18μA在3.0V(典型)

從待機(jī)模式下喚醒時(shí)間在3.5μs內(nèi)(典型);

16位RISC結(jié)構(gòu),可擴(kuò)展內(nèi)存,高達(dá)25MHz的系統(tǒng)時(shí)鐘;

靈活的電源管理系統(tǒng):—核心供電電壓可編程調(diào)節(jié)的內(nèi)置LDO—電源電壓監(jiān)控、監(jiān)測(cè)及掉電檢測(cè)

3.2MSP430F5529單片機(jī)特性、結(jié)構(gòu)和外部引腳

UCS統(tǒng)一時(shí)鐘系統(tǒng):—頻率穩(wěn)定的FLL控制回路—低功率或低頻率內(nèi)置時(shí)鐘源(VLO)—修整后的低頻內(nèi)置參考源(REFO)—32kHz低頻晶振(XT1)—高達(dá)32MHz高頻晶振(XT2)

具有5個(gè)捕獲/比較寄存器的16位定時(shí)器TA0,Timer_A;

具有3個(gè)捕獲/比較寄存器的16位定時(shí)器TA1,Timer_A;

具有3個(gè)捕獲/比較寄存器的16位定時(shí)器TA2,Timer_A;

具有7個(gè)捕獲/比較映射寄存器的16位定時(shí)器TB0,Timer_B;

兩個(gè)通用串行通信接口:—USCI_A0和USCI_A1,每個(gè)支持增強(qiáng)UART、IrDA、同步SPI—USCI_B0和USCI_B1,每個(gè)支持I2C、同步SPI

全速USB:—集成USB-PHY—集成3.3V/1.8VUSB電源系統(tǒng)—集成USB-PLL—8輸入、8輸出端點(diǎn)

具有內(nèi)部基準(zhǔn)電壓,采樣和保持及自動(dòng)掃描功能的12位ADC;

比較器;

支持32位運(yùn)算的硬件乘法器;

串行系統(tǒng)編程,無(wú)須添加外部編程電壓;

三通道內(nèi)部DMA;

具有實(shí)時(shí)時(shí)鐘功能的基本定時(shí)器。3.2MSP430F5529單片機(jī)特性、結(jié)構(gòu)和外部引腳3.2.2MSP430F5529單片機(jī)的結(jié)構(gòu)圖3.2.1MSP430F5529單片機(jī)結(jié)構(gòu)框圖3.2MSP430F5529單片機(jī)特性、結(jié)構(gòu)和外部引腳MSP430F5529單片機(jī)具有80個(gè)引腳,采用LQFP封裝,其引腳分布如圖3.2.2所示。3.2.3MSP430F5529單片機(jī)的外部引腳圖3.2.2MSP430F5529單片機(jī)引腳圖3.3MSP430F5529單片機(jī)的中央處理器3.3.1CPU的結(jié)構(gòu)及其主要特性MSP430F5xx/6xx系列單片機(jī)CPU的主要特征如下:

精簡(jiǎn)指令集RISC正交架構(gòu);

具有豐富的寄存器資源,包括PC(程序計(jì)數(shù)器)、SR(狀態(tài)寄存器)、SP(堆棧指針)、CG2(常數(shù)發(fā)生器)和通用寄存器;

單周期寄存器操作;

20位地址總線;

16位數(shù)據(jù)總線;

直接的存儲(chǔ)器到存儲(chǔ)器訪問(wèn);

字節(jié)、字和20位操作方式。MSP430單片機(jī)內(nèi)部由一個(gè)16位或者20位的ALU(算術(shù)邏輯單元)、16個(gè)寄存器和一個(gè)指令控制單元構(gòu)成,如圖3.3.1所示。

3.3MSP430F5529單片機(jī)的中央處理器圖3.3.1MSP430F5xx/6xx系列單片機(jī)CPU結(jié)構(gòu)圖3.3MSP430F5529單片機(jī)的中央處理器3.3.2CPU的存儲(chǔ)器資源

寄存器是CPU的重要組成部分,是有限存儲(chǔ)容量的高速存儲(chǔ)部件,它們可用來(lái)暫存指令、數(shù)據(jù)和地址。寄存器位于內(nèi)存空間中的最頂端。寄存器操作是系統(tǒng)操作最快速的途徑,可以減短指令執(zhí)行的時(shí)間,能夠在一個(gè)周期之內(nèi)完成寄存器與寄存器之間的操作。在MSP430F5xx/6xx系列單片機(jī)的CPU中,R4~R15為具有通常用途的寄存器,用來(lái)保存參加運(yùn)算的數(shù)據(jù)及運(yùn)算的中間結(jié)果,也可用來(lái)存放地址。R0~R3為具有特殊功能的寄存器,MSP430F5xx/6xx系列單片機(jī)的寄存器資源簡(jiǎn)要說(shuō)明如表3.3.1所示。寄存器簡(jiǎn)寫(xiě)功能R0(20位)程序計(jì)數(shù)器PC,指示下一條將要執(zhí)行的指令地址R1(20位)堆棧指針SP,指向堆棧棧頂R2(16位)狀態(tài)寄存器SRR3(20位)常數(shù)發(fā)生器CG2R4(20位)通用寄存器……R15(20位)通用寄存器表3.3.1MSP430F5xx/6xx系列單片機(jī)CPU的寄存器資源說(shuō)明3.4MSP430單片機(jī)的存儲(chǔ)器3.4.1MSP430單片機(jī)存儲(chǔ)空間結(jié)構(gòu)

本節(jié)以MSP430F5529單片機(jī)為例介紹MSP430單片機(jī)的存儲(chǔ)空間結(jié)構(gòu)。MSP430F5529單片機(jī)具有128KB程序存儲(chǔ)器、(8+2)KBRAM存儲(chǔ)器(當(dāng)USB模塊禁止時(shí),獲得額外的2KBRAM)及相應(yīng)的外圍模塊寄存器,其存儲(chǔ)空間分配情況如圖3.4.3所示。圖3.4.3MSP430F5529單片機(jī)存儲(chǔ)空間分配情況3.4MSP430單片機(jī)的存儲(chǔ)器MSP430不同系列單片機(jī)的存儲(chǔ)空間的分布有很多相同之處:

①存儲(chǔ)空間結(jié)構(gòu)順序相同,MSP430不同系列單片機(jī)存儲(chǔ)空間結(jié)構(gòu)相同,其內(nèi)部各個(gè)模塊順序也相同;

②中斷向量表具有相同的存儲(chǔ)空間地址上限,為0FFFFh;

③當(dāng)兩段存儲(chǔ)器存儲(chǔ)地址不能相連時(shí),中間為空白區(qū)域;

④特殊功能寄存器永遠(yuǎn)在存儲(chǔ)空間的底部。

由于器件所屬型號(hào)不同,存儲(chǔ)空間的分布也存在一些差異:

①不同型號(hào)器件的程序存儲(chǔ)器、RAM、信息存儲(chǔ)器等大小不同;

②中斷向量的具體內(nèi)容因器件不同而不同;

③不同型號(hào)器件的外圍模塊地址范圍內(nèi)的具體內(nèi)容不同;

④較低型號(hào)的MSP430單片機(jī)特殊功能寄存器地址從00000h開(kāi)始,較高型號(hào)的MSP430單片機(jī)存儲(chǔ)器底層開(kāi)辟出一段保留區(qū),以供存儲(chǔ)器拓展。3.4MSP430單片機(jī)的存儲(chǔ)器3.4.2程序存儲(chǔ)器MSP430F5529單片機(jī)的程序存儲(chǔ)器具有4個(gè)存儲(chǔ)體,每個(gè)32kB,共128kB,所在存儲(chǔ)區(qū)間地址段為04400h~243FFh。程序存儲(chǔ)器可分為兩種情況:中斷向量表和用戶程序代碼段。中斷向量表的存儲(chǔ)空間為0FF80h~0FFFFh,中斷向量表內(nèi)含有相應(yīng)中斷服務(wù)程序的16位入口地址。當(dāng)MSP430單片機(jī)片內(nèi)模塊的中斷請(qǐng)求被響應(yīng)時(shí),MSP430單片機(jī)首先保護(hù)斷點(diǎn),之后從中斷向量表中查表得到相應(yīng)中斷服務(wù)程序的入口地址,然后執(zhí)行相應(yīng)的中斷服務(wù)程序。具體中斷向量表的內(nèi)容及中斷的處理過(guò)程可參考本書(shū)第4章,在此不再贅述。用戶程序代碼段一般用來(lái)存放程序、常數(shù)或表格。MSP430單片機(jī)的存儲(chǔ)結(jié)構(gòu)允許存放大的數(shù)表,并且可以用所有的字和字節(jié)訪問(wèn)這些表。這一點(diǎn)為提高編程的靈活性和節(jié)省程序存儲(chǔ)空間帶來(lái)了好處。表處理可帶來(lái)快速清晰的編程風(fēng)格,特別對(duì)于傳感器應(yīng)用,為了數(shù)據(jù)線性化和補(bǔ)償,將傳感器數(shù)據(jù)存入表中做表處理,是一種很好的方法。3.4MSP430單片機(jī)的存儲(chǔ)器3.4.3RAM存儲(chǔ)器MSP430F5529單片機(jī)的RAM存儲(chǔ)器具有4個(gè)扇區(qū),每個(gè)2kB,共8kB,所在存儲(chǔ)空間地址段為02400h~0C3FFh。RAM存儲(chǔ)器一般用于堆棧和變量,如存放經(jīng)常變化的數(shù)據(jù):采集到的數(shù)據(jù)、輸入的變量、運(yùn)算的中間結(jié)果等。堆棧是具有先進(jìn)后出特殊操作的一段數(shù)據(jù)存儲(chǔ)單元,可以在子程序調(diào)用、中斷處理或者函數(shù)調(diào)用過(guò)程中保護(hù)程序指針、參數(shù)、寄存器等,但在程序執(zhí)行的過(guò)程中,要防止產(chǎn)生由于堆棧的溢出而導(dǎo)致系統(tǒng)復(fù)位的現(xiàn)象,例如中斷的不斷嵌套而導(dǎo)致堆棧溢出等。MSP430F5529單片機(jī)的USB通信模塊具有2kB的RAM緩沖區(qū)。當(dāng)USB通信模塊禁用時(shí),這2kB的RAM緩沖區(qū)也可作為系統(tǒng)的RAM存儲(chǔ)器使用。3.4MSP430單片機(jī)的存儲(chǔ)器3.4.4信息存儲(chǔ)器MSP430F5529單片機(jī)的信息存儲(chǔ)器(InformationMemory)具有4段,每段128字節(jié),共512字節(jié),所在存儲(chǔ)空間地址段為01800h~019FFh。信息存儲(chǔ)器類(lèi)型為Flash類(lèi)型,非RAM類(lèi)型,掉電后數(shù)據(jù)不會(huì)丟失。該段區(qū)域內(nèi)數(shù)據(jù)可通過(guò)Flash控制器進(jìn)行擦除、寫(xiě)入或讀取操作。信息存儲(chǔ)器可用于存儲(chǔ)掉電后需要保存的重要數(shù)據(jù),等系統(tǒng)再次上電時(shí),可通過(guò)讀取信息存儲(chǔ)器的內(nèi)容以獲得系統(tǒng)掉電之前保存的重要數(shù)據(jù),使系統(tǒng)按照之前的狀態(tài)繼續(xù)運(yùn)行。3.4MSP430單片機(jī)的存儲(chǔ)器3.4.5引導(dǎo)存儲(chǔ)器MSP430F5529單片機(jī)的引導(dǎo)存儲(chǔ)器(BootstrapLoaderMemory)具有4段,每段512字節(jié),共2kB,所在存儲(chǔ)空間地址段為01000~017FFh。引導(dǎo)存儲(chǔ)器類(lèi)型也為Flash類(lèi)型,BSL允許用戶利用所定義的密碼通過(guò)各種通信接口(USB或UART)訪問(wèn)內(nèi)存空間,可以實(shí)現(xiàn)程序代碼的讀/寫(xiě)操作,利用引導(dǎo)存儲(chǔ)器只需幾根線就可以修改、運(yùn)行內(nèi)部的程序,為系統(tǒng)軟件的升級(jí)提供了又一種方便的手段。3.4MSP430單片機(jī)的存儲(chǔ)器3.4.6外圍模塊寄存器MSP430F5529單片機(jī)的外圍模塊寄存器所在存儲(chǔ)空間地址段為00120h~00FFFh,都可以通過(guò)軟件進(jìn)行訪問(wèn)和控制。MSP430單片機(jī)可以像訪問(wèn)普通RAM單元一樣對(duì)這些寄存器進(jìn)行操作。這些寄存器也分為字節(jié)結(jié)構(gòu)和字結(jié)構(gòu)。不同系列MSP430單片機(jī)的外圍模塊寄存器數(shù)量不同,具體請(qǐng)參考具體芯片的數(shù)據(jù)手冊(cè)。MSP430F5529的外圍模塊寄存器地址分配如表3.4.1所示,各外圍模塊寄存器內(nèi)容請(qǐng)參考以后介紹片內(nèi)外設(shè)各章節(jié)內(nèi)容。地址說(shuō)明地址說(shuō)明0120h~013Fh電源管理模塊0h~03FFhTB00140h~014FhFlash控制器0400h~049FhTA20150h~0157hCRC16模塊0h~04BFh實(shí)時(shí)時(shí)鐘模塊0158h~015BhRAM控制器0h~04FFh32位硬件乘法器015Ch~015Fh看門(mén)狗模塊0500h~050FhDMA控制寄存器0160h~017FhUCS統(tǒng)一時(shí)鐘模塊0510h~051FhDMA通道00180h~01AFhSYS系統(tǒng)模塊0520h~052FhDMA通道101B0h~01BFh參考模塊0530h~05BFhDMA通道20h~01DFh端口映射控制寄存器0h~05DFhUSCI_A0模塊01E0h~01FFhP4映射端口05E0h~05FFhUSCI_B0模塊0200h~021Fh端口P1/P20600h~061FhUSCI_A1模塊0220h~023Fh端口P3/P40620h~06FFhUSCI_B1模塊0240h~025Fh端口P5/P60700h~08BFhADC12模塊0260h~031Fh端口P7/P80h~08FFh比較器B模塊0320h~033Fh端口PJ0900h~091FhUSB配置寄存器0340h~037FhTA00920h~093FhUSB控制寄存器0380h~03BFhTA1表3.4.1MSP430F5529外圍模塊寄存器地址分配列表3.4MSP430單片機(jī)的存儲(chǔ)器3.4.7特殊功能寄存器MSP430F5529單片機(jī)的特殊功能寄存器所在的存儲(chǔ)空間地址段為00100h~00120h。不同系列的MSP430單片機(jī)特殊功能寄存器數(shù)量不同,MSP430F5529單片機(jī)特殊功能寄存器如表3.4.2所示。表3.4.2MSP430F5529特殊功能寄存器列表(基址為00100h)寄存器

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論