電控學(xué)習(xí)-msp430中文手冊(cè)參考版_第1頁(yè)
電控學(xué)習(xí)-msp430中文手冊(cè)參考版_第2頁(yè)
電控學(xué)習(xí)-msp430中文手冊(cè)參考版_第3頁(yè)
電控學(xué)習(xí)-msp430中文手冊(cè)參考版_第4頁(yè)
電控學(xué)習(xí)-msp430中文手冊(cè)參考版_第5頁(yè)
已閱讀5頁(yè),還剩143頁(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第一章MSP430單片機(jī)概MSP430系列單片機(jī)是德州儀器(TI)1996年開始推向市場(chǎng)的一種16位超低功耗的混合信號(hào)處理數(shù)字電路和微處理器集成在一個(gè)上,以提供“單片”解決方案。MSP430用也日趨廣泛。MSP430系列單片機(jī)針對(duì)各種不同應(yīng)用,包括一系列不同型號(hào)的器件。主要特點(diǎn)有:式耗電250pA/MIPS(MIPS:每秒百萬(wàn)條指令數(shù)),IO輸入端口的漏電流最大僅50nA。(LPM0~LPM4首先,對(duì)一個(gè)處理器而言,活動(dòng)模式時(shí)的功耗必須與其性能一起來(lái)、衡量,忽略性能來(lái)看功耗是片面的。在計(jì)算機(jī)體系結(jié)構(gòu)中,是用W/MIPS(瓦特/百萬(wàn)指令每秒)來(lái)衡量處理器的功耗與性能關(guān)系的,這種標(biāo)稱方法是合理的。MSP430系列單片機(jī)在活動(dòng)模式時(shí)耗電250uA/MIPS,這個(gè)指標(biāo)是很高的(傳統(tǒng)的Mcs51單片機(jī)約為10~20mA/MIPS)。 響就較大了MSP430單片機(jī)輸入端口的漏電流最大為50nA遠(yuǎn)低于其他系列單片機(jī)(一般為l~10uA)。外,處理的功耗還看它能模塊是可以關(guān)閉以及模塊動(dòng)情況下耗電.比壓相差數(shù)十倍,而設(shè)計(jì)時(shí)要考慮到情況,就應(yīng)該關(guān)心參數(shù)標(biāo)稱的最大值,而不是典型值??傮w而言,MSP400年。MSP43016位單片機(jī),采用了目前流行的、頗受學(xué)術(shù)界好評(píng)的精簡(jiǎn)指令集(RISC)結(jié)構(gòu),一個(gè)時(shí)鐘周期可以執(zhí)行一條指令(傳統(tǒng)的MCS51單片機(jī)要12個(gè)時(shí)鐘周期才可以執(zhí)行一條指令),使位處理器比8位處理器高遠(yuǎn)不止兩倍)。還將推出25~30MIPS的產(chǎn)品。硬件乘.加(積之和)功能、DMA等一系列先進(jìn)的體系結(jié)構(gòu),大大增強(qiáng)了它的數(shù)據(jù)處理和運(yùn)算能力,可以有效地實(shí)現(xiàn)一些數(shù)字信號(hào)處理的算法(如FFT、DTMF等)。這種結(jié)構(gòu)在其他系列單片機(jī)中尚未使用。 MSP430系列單片機(jī)結(jié)合TI的高性能模擬技術(shù),各成員都集成了較豐富的片內(nèi)外設(shè)。視型號(hào)不同可1(USART0、I),硬件乘法器,液晶驅(qū)動(dòng)器,10位,12,14位ADC,12位DAC,12C總線,直接數(shù)據(jù)存取(DMA),端口1-6(P1-P6),基本定時(shí)器(BasicTimer)等。較寄存器,可用于事件計(jì)數(shù)、時(shí)序發(fā)生、等;多功能串口(USART)可實(shí)現(xiàn)異步、同步12C串行通口能夠接收外部上升沿或下降沿的中斷輸入;12A/D200Kb/s,能夠滿足大多數(shù)應(yīng)用:LCD驅(qū)動(dòng)模塊能直接驅(qū)動(dòng)液晶多達(dá)160段;F15x和F16x系列有12功能可以提高數(shù)據(jù)傳輸速度,減輕CPU的負(fù)荷。上電復(fù)位后,首先由DCO_CLK啟動(dòng)CPU,以保證程序從正確的位置開始執(zhí)行,保證晶體振蕩器有足夠的起振及穩(wěn)定時(shí)間。然后可設(shè)置適當(dāng)?shù)募拇嫫鞯目刂莆粊?lái)確定最后的系統(tǒng)時(shí)鐘頻率。如果晶體振 -40~+85"C,運(yùn)行穩(wěn)定、可靠性高,所設(shè)計(jì)的產(chǎn)品適用于各種民用和工業(yè)環(huán)MSF430系列有OTF型、FLASH型和ROM3種類型的器件,國(guó)內(nèi)大量使用的是FLASH型。這片。對(duì)于FLASH型則有十分方便的開發(fā)調(diào)試環(huán)境.因?yàn)槠骷瑑?nèi)有JTAG調(diào)試接口,還有可電擦寫的FLASH器,因此采用先通過JTAG接口程序到FLASH內(nèi),再由JTAG接口控制程序運(yùn)行、讀系列單片機(jī)的開發(fā)一般均需要的仿真器或編程器。另外,2001年TI公司又了BOOTSTRAP技術(shù),利用它可在熔絲燒斷以后,只要幾根硬件連線,通過口令字(),就可更改并運(yùn)行的程序,這為系統(tǒng)固件的升級(jí)提供了又一方便段。BOOTSTRAP具有很高的性,口令字可達(dá)32個(gè)MSP430型(P)和EPROM型(E)等。EPROM型的價(jià)格昂貴,運(yùn)行環(huán)境溫度范圍窄.主要用于樣機(jī)開發(fā)。這也型適應(yīng)大批量生產(chǎn)的產(chǎn)品。MSP4303XXFLASH技術(shù)的迅速發(fā)展,TIMSP430系列單片機(jī)中。2000F11X/11x120F44x。TI20032004F15xF16x系列產(chǎn)品。在這一新的系列中,有了兩個(gè)方面的發(fā)或簡(jiǎn)單文件系統(tǒng)等。二是從模塊來(lái)說(shuō),增加了I2C、DMA、DAC12和SVS等模塊。近兩年,TI公司針對(duì)某些特殊應(yīng)用領(lǐng)域,利用MSP430的超低功耗特性,還推出了些單片機(jī),如專門用于電量計(jì)量的糖、血壓、脈搏等)的MSP430FG42X單片機(jī)。用這些單片機(jī)來(lái)設(shè)計(jì)相應(yīng)的產(chǎn)品,不僅具有MSP430的超低功耗特性,還能大大簡(jiǎn)化系統(tǒng)設(shè)計(jì)。根據(jù)TIMsP430系列單片機(jī)上的發(fā)展計(jì)劃.在今后將陸續(xù)推出性能更高、功能更強(qiáng)的F5XX系列,這一系列單片機(jī)運(yùn)行速度可達(dá)25~30MIPS,并具有更大的FLASH(128KB)及更豐富的外設(shè)接ISP(CAN、USB等)。0領(lǐng)域,更適合用于一些電池供電的低功耗產(chǎn)品,如能量表(水表、、氣表等)、手持式設(shè)備、智能傳感第二章MSP430F169單片機(jī)簡(jiǎn)5種省電模式內(nèi)置三通道DMA12位A/D帶采樣保持參考源串行通信USART0(UART、SPI、I2C)接串行通信USARTI(UART、SPl)接MSP430F1611:48KB+256Bflash器MSP430F15xUSARTMSP430F16x片內(nèi)具有硬件乘法器和兩個(gè)USART模塊。1

比較器A輸入比較器A輸入通用數(shù)字I/O引腳;轉(zhuǎn)換時(shí)鐘ADC12;DMA0外部觸通用數(shù)字I/O引腳;USART0/SPI模式從設(shè)備傳輸使能端通用數(shù)字I/O引腳;通用數(shù)字I/O引腳;I/O引腳;USART0/SPI模式的傳輸數(shù)據(jù)輸出I/O引腳;USART0/SPI模式的接收數(shù)據(jù)輸入通用數(shù)字I/O引腳; 通用數(shù)字I/O引腳;I/O引腳;USARTl/SPI模式的外部時(shí)鐘輸入;USART0/SPI模式的時(shí)鐘輸入2345DAC0輸6 DAC1輸入;SVS輸入 (BSL方式 I7 VREF-O8I9IOBCSBasicClock默認(rèn)工作在低頻模式(32.768kHz)手表晶MCLK主系統(tǒng)時(shí)鐘(MainSystemMCLK可由選擇來(lái)自LFXT1CLK、XT2CLK、DCOCLK三者之一,然后經(jīng)1、2、4、8分頻MCLKCPUSMCLK子系統(tǒng)時(shí)鐘(SubSystem低速晶體震蕩器手表晶振(32.768kHz)經(jīng)過XIN和XOUT引腳直接連接到單片機(jī),不需要其他外部器件(有(XTS=0如果單片機(jī)外接高速晶體振蕩器或諧振器時(shí),OSCOFF=0可使LFXT1(XTS=1XT2XT2CLKLFXT1失效時(shí),DCO振蕩器會(huì)被自動(dòng)選為MCLK的時(shí)鐘源。DCO振蕩器的頻率可由對(duì)DCOx、MODx和RSELx位的設(shè)置來(lái)調(diào)整。當(dāng)DCOCLK信號(hào)沒有用DCO控制 DCO控制寄存器DCOxDCO 基本時(shí)鐘系統(tǒng)控制寄存器0:LFXT1工作在低速晶振模式(默認(rèn)DIVAx:ACLK分頻選0122438分XT5V通常此位復(fù)位XT5V=0RSELx:DCO震蕩器的頻段選擇該3位控制某個(gè)電阻以決定標(biāo)稱頻率0DCO的頻率的調(diào)節(jié)圖(DCOxRSELx決定DCO頻率 基本時(shí)鐘系統(tǒng)控制寄存器SELMxMCLK時(shí)鐘0:MCLK時(shí)鐘源為DCOCLK(默認(rèn)1224380:SMCLK時(shí)鐘源為DCOCLK(默認(rèn)122438DCOR:選擇DCO震蕩電0:電*BasicClock#defineDCOCTL_ (0x0056)/*DCOCTL的定義*/DEFC( ,#defineBCSCTL1_ (0x0057)/*BCSCTL1的定義*/DEFC(BCSCTL1 ,BCSCTL1_)#defineBCSCTL2_ (0x0058)/*BCSCTL2的定義*/DEFC(BCSCTL2 ,BCSCTL2_)/*DCOCTL#define (0x01)/*ModulationBit0#define (0x02)/*ModulationBit1#define (0x04)/*ModulationBit2#define (0x08)/*ModulationBit3#define (0x10)/*ModulationBit4#define (0x20)/*DCOSelectBit0#define (0x40)/*DCOSelectBit1#define (0x80)/*DCOSelectBit2/*BCSCTL1#define (0x01)/*ResistorSelectBit0#define (0x02)/*ResistorSelectBit1#define (0x04)/*ResistorSelectBit2#define (0x08)/*XT5Vshouldalwaysbereset#define (0x10)/*ACLKDivider0#define (0x20)/*ACLKDivider1#defineXTS (0x40)/*LFXTCLK0:LowFreq./1:HighFreq.*/#defineXT2OFF (0x80)/*EnableXT2CLK*//*BCSCTL1DIVA#define/*ACLKDivider0:/1#define/*ACLKDivider1:/2#define/*ACLKDivider2:/4#define/*ACLKDivider3:/8/*BCSCTL2#define/*EnableExternalResistor:1#define/*SMCLKDivider0#define/*SMCLKDivider1#define/*SMCLKSourceSelect0:DCOCLK/1:XT2CLK/LFXTCLK#define/*MCLKDivider0#define/*MCLKDivider1#define/*MCLKSourceSelect0#define/*MCLKSourceSelect1/*BCSCTL1DIVS#define/*SMCLKDivider0:/1#define/*SMCLKDivider1:/2#define/*SMCLKDivider2:/4#define/*SMCLKDivider3:/8/*BCSCTL1DIVM#define/*MCLKDivider0:/1#define/*MCLKDivider1:/2#define/*MCLKDivider2:/4#define/*MCLKDivider3:/8/*BCSCTL1SELM#define/*MCLKSourceSelect0:DCOCLK#define/*MCLKSourceSelect1:DCOCLK#define/*MCLKSourceSelect2:XT2CLK/LFXTCLK#define/*MCLKSourceSelect3:LFXTCLKvoidmain(void){unsignedintWDCTLWDTPW P5DIR|= P5.4P5SEL|= //P5.4=BCSCTL1| ACLK=LFXT1=HF{IFG1& for(i0Xff;i0;i }while((IFG1&OFIFG)!=0); //如果振蕩器失效標(biāo)志存在BCSCTL2|=SELM1+SELM0; //MCLK=LFXT1}DCOACLKLFXT1(低頻模式MCLKSMLCK為voidBCSInit{DCOCTL=0x60+0x00;BCSCTL1=DIVA_0+0x07;BCSCTL2=SELM_2+DIVM_0+SELS+}第四章LPM超低功耗LowPowerMSP430應(yīng)用系統(tǒng)價(jià)格和電流消耗等因素會(huì)影響CPU與模塊對(duì)時(shí)鐘的需求,所以系統(tǒng)所使用MSP430單片機(jī)一個(gè)最顯著的特點(diǎn)。MSP430的豐富的時(shí)鐘源使其能達(dá)到最低功耗并發(fā)揮SMCLKSRSCG1、SCG0、OscOff和CPUOff是重注意:當(dāng)電流關(guān)閉時(shí)(SCG=0,DCO的下次有一些微秒級(jí)的延遲。OscOffOscOff復(fù)位時(shí),LFXT晶體振蕩器被激活;當(dāng)CPUOff置為,MCLK停止。MSP430LPM瞬時(shí)響MSP430可工作在一種活動(dòng)模式(AM)和五種低功耗模式(LPM0~LPM4)下。通過設(shè)置控制位SCG1、SCG0、OscOffCPUOff,MSP430可進(jìn)入相應(yīng)的低功耗模式。各種低功耗模式又可通過中斷MCLK活動(dòng)SMCLK活動(dòng)ACLK活MCLKSMCLK活動(dòng)ACLK活CPU處于狀SMCLK活動(dòng);ACLK活動(dòng)CPU處于狀DCO未用SMCLKMCLKMCLK;SMCLK;ACLK活CPU處于狀MCLK;SMCLKACLK活CPU處于狀DCO被;自流發(fā)生器被MCLK;SMCLK;ACLK活在msp430x16x.h對(duì)低功耗宏定義如下所示 IAR_SYSTEMS_ICC/*Begin#definesforassembler*/#defineLPM0 #define #define #define #define /*End#definesforassembler/*Functionsforcontrollingtheprocessoroperation( \( \ SR_CPU_OFF low_power_mode_2()( SR_CPU_OFF ( ( ( \|||

LPM0模式,可以通過調(diào)用low_power_mode_0();函數(shù)來(lái)完成。LPM1模式,可以通過調(diào)用low_power_mode_1();函數(shù)來(lái)完成。LPM2模式,可以通過調(diào)用low_power_mode_2();函數(shù)來(lái)完成。LPM3模式,可以通過調(diào)用low_power_mode_3();函數(shù)來(lái)完成。LPM4模式,可以通過調(diào)用low_power_mode_4();函數(shù)來(lái)完成。退出LPM模式,則調(diào)用low_power_mode_off_on_exit();來(lái)實(shí)現(xiàn)。#includeP1#pragmavector=PORT1_VECTORinterruptvoid{P1IFG low_power_mode_off_on_exit();}void{WDTCTL=WDTPW+P1DIR&= P1.0P1IE| P1.0P1IES|= P1.0{ 進(jìn)入LPM0當(dāng)程序執(zhí)行到上述語(yǔ)句后程序會(huì)停止到該語(yǔ)句P1.0出現(xiàn)下降沿的時(shí)候P1}}I/OInput/OutputMSP430及其重要的資源。MSP430F1698位并且均可入/輸出,還可為MSP430系統(tǒng)擴(kuò)展等應(yīng)用提供必要的邏輯控制信號(hào)P1、P2、P3、P4、①每個(gè)I/O③P1P28 輸入/輸出方向寄存P1DIR P1DIR 讀出此寄存器的內(nèi)容中,只有Px口設(shè)為輸入的數(shù)據(jù)位有效。unsignedcharP1DIR&=0x77 P1.3和P1.7Temp Temp為在已定義的一變量,Temp7 該寄存器可讀可寫,時(shí),其內(nèi)容與Px口引腳定義無(wú)關(guān)。改變方向寄存器的內(nèi)容,此寄存器內(nèi)容不受0:端口輸出低電平如果將P1DIR.0=1(該引腳為輸出模式P1.0為輸出,并且輸出為高電平。P1DIR|=0x88;//P1.3P1.7P1OUT|=0x88;//P1.3P1.7PxSELPxSEL.x:引腳功能 0:上升沿產(chǎn)生中斷P1端口的引腳原理圖(P1.0~P2端口的引腳原理圖P2端口的引腳原理圖P2端口的引腳原理圖P3端口的引腳原理圖P3端口的引腳原理圖P4端口的引腳原理圖P4端口的引腳原理圖P5端口的引腳原理圖P5端口的引腳原理圖P6端口的引腳原理圖P6端口的引腳原理圖JTAG輸入#defineP1IN_ (0x0020)/*Port1Input*/READ_ONLYDEFC(P1IN ,P1IN_)#defineP1OUT_ (0x0021)/*Port1Output*/DEFC(P1OUT ,P1OUT_)#defineP1DIR_ (0x0022)/*Port1Direction*/DEFC(P1DIR ,P1DIR_)#define (0x0023)/*Port1InterruptFlag ,#define (0x0024)/*Port1InterruptEdgeSelectDEFC( ,#define (0x0025)/*Port1InterruptEnableDEFC( ,#define (0x0026)/*Port1SelectionDEFC( ,#defineP2IN_READ_ONLYDEFC(P2IN#define

(0x0028)/*Port2Input,(0x0029)/*Port2OutputDEFC( ,#define (0x002A)/*Port2DirectionDEFC( ,#define (0x002B)/*Port2InterruptFlagDEFC( ,#define (0x002C)/*Port2InterruptEdgeSelectDEFC( ,#define

(0x002D)/*Port2InterruptEnableDEFC( ,#define

(0x002E)/*Port2SelectionDEFC( ,*DIGITALI/O#defineP3IN_ (0x0018)/*Port3Input*/READ_ONLYDEFC(P3IN ,P3IN_)#defineP3OUT_ (0x0019)/*Port3Output*/DEFC(P3OUT ,P3OUT_)#defineP3DIR_ (0x001A)/*Port3Direction*/DEFC(P3DIR ,P3DIR_)#defineP3SEL_ (0x001B)/*Port3Selection*/DEFC(P3SEL ,P3SEL_)#defineP4IN_ (0x001C)/*Port4Input*/READ_ONLYDEFC(P4IN ,P4IN_)#defineP4OUT_ (0x001D)/*Port4Output*/DEFC(P4OUT ,P4OUT_)#defineP4DIR_ (0x001E)/*Port4Direction*/DEFC(P4DIR ,P4DIR_)#defineP4SEL_ (0x001F)/*Port4Selection*/DEFC(P4SEL ,P4SEL_)*DIGITALI/O#defineP5IN_READ_ONLYDEFC(P5IN

(0x0030)/*Port5Input,#define

(0x0031)

Port5OutputDEFC( ,#define

(0x0032)

Port5DirectionDEFC( ,#define

(0x0033)

Port5SelectionDEFC( ,#defineP6IN_READ_ONLYDEFC(P6IN#define

(0x0034),P6IN_)(0x0035)

Port6InputPort6OutputDEFC( ,#define

(0x0036)

Port6DirectionDEFC( ,#define

(0x0037)

Port6SelectionDEFC( ,用P2IN、P2OUT、P2DIR、P2IFG、P2IES、P2IE、P2SEL對(duì)P2口操作;P3IN、P3OUT、P3DIR、P3SELP3口操作;P5IN、P5OUT、P5DIR、P5SELP5口操作;輸入voidmain(void){unsignedchari; 關(guān)看門狗P4DIR| {P4OUT^=0X01; //定}}#include<msp430x16x.h>voidmain(void){P4DIR=0XfF;P4OUT=0Xff;P1OUT=P1DIR=0xf0 //AllpinsbutbuttontoP1IES=0x0f; //ButtonintonfallingedgeP1IFG=0;P1IE= //enableP1.0--P1_3 }#pragmavector=interruptvoid {unsignedinti;unsignedchartemp;temp=P1IFG; {{case8P4OUT^=0X08;break//P4.4LED2狀態(tài)改變}}P1IFG }第六章WDT看門狗定在工業(yè)現(xiàn)場(chǎng),往往會(huì)由于供電電源、空間電磁干擾或其他原因引起干擾噪聲。這些干擾作用于WDTWDT定時(shí)時(shí)新計(jì)數(shù),則程序正常執(zhí)行時(shí),就會(huì)在WDT定時(shí)時(shí)間到達(dá)之前對(duì)WDT清零,不會(huì)產(chǎn)生WDT溢出,如果由生系統(tǒng)復(fù)位CPU需用重新運(yùn)行用戶程序,這樣程序就可以又恢復(fù)正常運(yùn)行狀態(tài)。MSP430看門狗除了具有上述系統(tǒng)監(jiān)測(cè)的特定用途之外,還可以作為定時(shí)器來(lái)使用,當(dāng)選擇的時(shí)WDT還可以被完全停止活動(dòng)以支持超低功耗應(yīng) 看門狗口令??诹钗?AH,如果口令寫錯(cuò)將導(dǎo)致系統(tǒng)復(fù)位。節(jié)始終位69H。WDTCTL除了看門狗定時(shí)器的控制位之外,還有兩個(gè)用于設(shè)置NMI引腳功能。T0123WDTSSEL:選 T的時(shí)鐘同時(shí)間的定時(shí)。與其他定時(shí)器不同之處在于,WDT最多只能定時(shí)8種和時(shí)鐘源相關(guān)的時(shí)間。KHzC=Mz定時(shí)時(shí)間0110101110011100001011000:無(wú)操作1:將WDTCTL當(dāng)該位為1時(shí),清除 RST/NMI引腳為邊沿觸發(fā)的非中斷輸入WDTNMIES:選擇中斷的邊沿觸發(fā)WDTHOLD:停止看門狗計(jì)T計(jì)數(shù)單元T16MSP430所選定的時(shí)鐘電路產(chǎn)生的固定周期脈沖信號(hào)對(duì)計(jì)數(shù)器進(jìn)行加直接通過直接通過存取,必須通過看門狗定時(shí)器的控制寄存器WDTCTL來(lái)控制。IE1中斷允許寄存器WDTIE:看門狗定時(shí)器模式中斷允許控NMIIE:非中斷允許控制 WDTIFG:看門狗定時(shí)器模NMIIFG:非中斷標(biāo) SMCLK=1MHz所以,用戶一般都需要進(jìn)行如下操作:進(jìn)行WDT的初始化:設(shè)置合適的時(shí)間(SSEL、IS0、IS1位來(lái)選定 T清零:防止WDT溢出,保證WDT的正確使用WDTCTL的WDTTMSEL位置位選擇定時(shí)器模式。這一模式產(chǎn)生選定時(shí)間的周期性中斷。定時(shí)時(shí)間可以通過WDTCTL的 CTL位置位來(lái)開始。改變定時(shí)時(shí)間而不同時(shí)清 T將導(dǎo)致不可預(yù)料的系統(tǒng)立即復(fù)位或中斷。定時(shí)時(shí)間可以通WDTCTLCNCTL位置位來(lái)開 控制位WDTHOLD=1時(shí)關(guān)閉WDT,這時(shí)看門狗停止工作。在msp430x14x.h頭文件中定義如下*WATCHDOG#defineWDTCTL_ (0x0120)/*WatchdogTimerControl*/DEFW(WDTCTL ,WDTCTL_)/*Thebitnameshavebeenprefixedwith"WDT"*/#defineWDTIS0 #define #define #define #define #define #define #define /*WDT-intervaltimes[1ms]codedwithBits0-2/*WDTisclockedbyfMCLK(assumed1MHz)#define /*32msinterval(default)#define #define/*"#define/*"/*WDTisclockedbyfACLK(assumed32KHz)#defineWDT_ADLY_1000(WDT /*1000ms"*/#defineWDT_ADLY_250(WDT TCL+WDTSSEL+WDTIS0)/*250ms"*/#defineWDT_ADLY_16(WDT TCL+WDTSSEL+WDTIS1)/*16ms"*/#defineWDT_ADLY_1_9(WDT TCL+WDTSSEL+WDTIS1+WDTIS0)/*1.9ms"*//*Watchdogmode->resetafterexpiredtime/*WDTisclockedbyfMCLK(assumed1MHz)#defineWDT_MRST_32(#defineWDT_MRST_8(/*interval/* #defineWDT_MRST_0_5/*0.5ms"#define /*0.064ms"/*WDTisclockedbyfACLK(assumed32KHz)#defineWDT_ARST_1000( /*1000ms"*/#defineWDT_ARST_250( TCL+WDTSSEL+WDTIS0) /*250ms"*/#defineWDT_ARST_16( /*16ms"*/#defineWDT_ARST_1_9( TCL+WDTSSEL+WDTIS1+WDTIS0)/*1.9ms"*/上述定義中WDT_MRST_32的定義里面包括了( 所以使用WDT的時(shí)候可以直接寫成下面的形式:WDTCTL=WDT_ADLY_1000; //以ACLK延遲1000msWDTCTL=WDT_MDLY_32; //以SMCLK延遲32msIE1中的WDTIE和WDTCTL WDTCTL SMCLK32ms//由于在看門狗的定義里面包 WDTCTLWDT_MRST_32;P1.0#includevoid{WDTCTL IE1| WDTP1DIR|= {}}#pragmavector=WDT_VECTORinterruptvoidWDT_IRQ(void){P1OUT^= }TimerA16A16-bitTimer/Counterwith 16A定時(shí)器和多路比較/捕獲通道組成。每一個(gè)比較/捕獲通道都以十六位定時(shí)器的定時(shí)功能為進(jìn)行單獨(dú)的控制。MSP430系列單片機(jī)的TIMER_A有以下特性: 48DMAMSP430TIMER_A結(jié)構(gòu)復(fù)雜,功能強(qiáng)大,適合應(yīng)用于工業(yè)控制,如數(shù)字化電機(jī)控制,和手持式儀表的理想配置。它給開發(fā)提供了較多靈活的選擇余地。例如,雖然在采用廉價(jià)的單很低。MSP430系列單片機(jī)采用16位的TIMER_A定時(shí)器,再加上的比較器,至少能達(dá)到10位的A/D測(cè)量精度;利用TIMER_A生成的能用任意改變占空比和周期,配合濾波器件可方便地實(shí)現(xiàn)D/A轉(zhuǎn)換;當(dāng)不需要修改占空比和時(shí)間時(shí),TIMER_A能自動(dòng)輸出,而不需利用中斷維持輸出。16A通過選擇4種工作模式靈活的完成定時(shí)/計(jì)數(shù)功能。捕獲/比I/O端口處理事務(wù)的能力MSP430TIMER_A模塊中所含有的捕獲/比較器的數(shù)量不一樣,每個(gè)捕獲/比較器16A TIMER_A控制寄存都自動(dòng)復(fù)位,但在PUC信號(hào)后不受影響。TACTL各位的定義如下:0:TACLK特定的外部引腳時(shí)鐘IDx:輸入分頻選擇12243:8分頻MCx:TACLR:定時(shí)器清除01:清除TAR,時(shí)鐘分頻,計(jì)數(shù)模式的設(shè)置。清除設(shè)置后自動(dòng)清TAIE:定時(shí)器中斷允許位0:連續(xù)計(jì)數(shù)模式時(shí):當(dāng)定時(shí)器由0FFFFH計(jì)數(shù)到0時(shí),TAIFG置位0:沒有TA中斷請(qǐng)求1TA中斷請(qǐng) TIMER_A計(jì)數(shù) TIMER_A捕獲/比較控制寄存器該寄存器再POR信號(hào)后全部復(fù)位,但在PUC信號(hào)后不受影響。該寄存器中各位的定義如下:CMx:選擇捕獲模0:0:選擇CCIxA123SCS:選擇捕獲信號(hào)與定時(shí)時(shí)鐘同步/異步關(guān)CCIFG置位和捕獲定時(shí)器值,適用于捕獲信號(hào)的周期遠(yuǎn)大于定時(shí)SCCI:同步比較/捕獲輸CAP:選擇捕獲模式/比較模0:比較模式0:輸出1 45 復(fù)位/置位CCIE:0:中斷CCI:捕獲/比較模塊的輸入CCIS0和CCIS1選擇的輸入信號(hào)可通過該位讀出比較模式:CCI復(fù)位OUT:輸出信0:輸出低電平COV:捕獲溢出標(biāo)CAP=1COV置位。程COV來(lái)判斷原值讀出前是否又發(fā)生捕獲事件。讀捕獲寄存器時(shí)不會(huì)使溢出標(biāo)志復(fù)位,須用CCIFG:捕獲比0:沒有中斷請(qǐng)求(TACCRx) TIMER_A捕獲/比較寄存器在捕獲方式,當(dāng)滿足捕獲條件,硬件自動(dòng)將計(jì)數(shù)器TAR數(shù)據(jù)寫入該寄存器。如果測(cè)量某窄脈沖(高電平) TIMER_A中斷向量TIMER_A中斷可由計(jì)數(shù)器溢出引起,也可以來(lái)自捕獲/比較寄存器。每個(gè)捕獲/比較模塊可獨(dú)立編程,的周期,因此,它需要最高的服務(wù)。CCIFG0在被中斷服務(wù)時(shí)能自動(dòng)復(fù)位。CCR1~CCRxCCIFG1~CCIFGx和TACTL中的CLR位控制位來(lái)清除定時(shí)器的方向特性。計(jì)數(shù)值于TACCR0的值相等(或定時(shí)器值大于TACCR0的值)時(shí),定時(shí)器復(fù)位并從0開始重新計(jì)數(shù)。志)1,而當(dāng)定時(shí)器從TACCR00時(shí),設(shè)置標(biāo)志位TAIFG(定時(shí)器溢出標(biāo)志)1。TACCR0時(shí)的定時(shí)器時(shí)鐘相位會(huì)影響定時(shí)器響應(yīng)新周期的情況。時(shí)鐘為高時(shí)改變TACCR0的值,則定時(shí)器會(huì)在下一個(gè)時(shí)鐘周期上升沿返回到0,如果時(shí)鐘周期為低時(shí)改變TACCR0的值,則定時(shí)器接受新周期并在返回到0之前,繼續(xù)增加一個(gè)時(shí)鐘周期。從0開始重新計(jì)數(shù)。時(shí)間差是當(dāng)前時(shí)刻(即相應(yīng)的TACCRx中的值)到下一次中斷發(fā)生時(shí)刻所經(jīng)歷的時(shí)間。增/減計(jì)數(shù)模需要生成對(duì)稱波形的情況經(jīng)??梢允褂迷?TACCR0的值,然后反向減計(jì)數(shù)到0。計(jì)數(shù)周期仍由TACCR0定義,它是TACCR0計(jì)數(shù)器數(shù)值的2倍。增/減計(jì)數(shù)模標(biāo)志為的設(shè)置情況如圖,定時(shí)TARTACCR0-1計(jì)數(shù)TACCR0時(shí),中斷標(biāo)CCIFG0置位;當(dāng)定時(shí)器從1減計(jì)數(shù)到0時(shí),中斷標(biāo)志TAIFG置位。在增/TACCR0的值來(lái)重置計(jì)數(shù)周期。在增計(jì)數(shù)階段,新周期要在減計(jì)數(shù)完成(計(jì)數(shù)到0)后才開始由效。TIMER_A有多個(gè)相同的捕獲/比較模塊,為實(shí)時(shí)處理提供靈活段,每個(gè)模塊都有可用于捕獲事件可用于比較模式。用CMx選擇捕獲條件,可以捕獲,上升沿捕獲,下降沿捕獲或者上下沿都捕獲。發(fā)器中由SCCI信號(hào)輸出。3個(gè)捕獲/EQUx信號(hào)有差別:TAR的值大于等于TACCR0TAR的值等于相應(yīng)的TACCR1TACCR2的值時(shí),EQU1=1EQU2=1基于EQUx的多種信號(hào)。輸出單元的結(jié)構(gòu)及時(shí)序如圖。D觸發(fā)器的置位端和復(fù)位端也都將影響到最終的輸出。D觸發(fā)器的時(shí)鐘信號(hào)為定時(shí)器的時(shí)鐘,在時(shí)鐘為低電平時(shí)采樣EQU0和EQU1,EQU2,在時(shí)鐘的下一個(gè)上升沿鎖存入D觸發(fā)器中。OMx0,OMxc1OMx28OMx2,OMx1及OMx002、3、6、7不適合輸出單元0,因?yàn)镋QUx=EQU0。輸出模式 并在寫入該寄存器后立即更新,最終位OUTx直通。輸出模式 輸出模式 當(dāng)TAR的值等于TACCR0時(shí)復(fù)位。輸出模式 當(dāng)TAR的值等于TACCR0時(shí)復(fù)位。輸出模式 輸出周期時(shí)定時(shí)器周期的2倍。輸出模式 輸出模式 當(dāng)TAR值等于TACCR0時(shí)置位。輸出模式 當(dāng)TAR的值等于TACCR0時(shí)置位。有關(guān)。在增計(jì)數(shù)模式TAR增加TACCRxTACCR0計(jì)數(shù)0時(shí),OUTx信號(hào)按選擇的輸出模當(dāng)定時(shí)器在任意計(jì)數(shù)方向等于TACCRx時(shí),OUTx信號(hào)都按選擇的輸出模式發(fā)生改變。*Timer#defineTAIV_ (0x012E)/*TimerAInterruptVectorWord*/READ_ONLYDEFW(TAIV ,TAIV_)#defineTACTL_ (0x0160)/*TimerAControl*/DEFW(TACTL ,TACTL_)#defineDEFW(,(0x0162)A0#defineTACCTL1_DEFW(TACCTL1#define,(0x0164)/*(0x0166)AA12DEFW(,#define (0x0170)/*TimerADEFW( ,#defineTACCR0_DEFW(TACCR0#define,AA01DEFW(#define,A2DEFW(,/*Alternatenames#define/*Timerpare0#define/*Timerpare1#defineCCTL2#defineCCR0/*Timer/*TimerpareControlpare0*/2#defineCCR1#define/*Timer/*Timerpare1pare2TACCTL0_/*TimerpareControlTACCTL1_/*TimerpareControlTACCTL2_/*TimerATACCR0_/*TimerATACCR1_/*TimerATACCR2_/*TimerpareControlpare0pare1pare2#defineTASSEL2 (0x0400)/*unused*/ /*todistinguishfromUSARTSSELx*/#defineTASSEL1 (0x0200)/*TimerAclocksourceselect0*/#define (0x0100)/*TimerAclocksourceselect1(0x0080)/*TimerAclockinputdevider1(0x0040)/*TimerAclockinputdevider0(0x0020)/*TimerAmodecontrol1(0x0010)/*TimerAmodecontrol0(0x0004)/*TimerAcounterclear(0x0002)/*TimerAcounterinterruptenable(0x0001)/*TimerAcounterinterruptflag(0*0x10u)/*TimerAmodecontrol:0-Stop(1*0x10u)/*TimerAmodecontrol:1-UptoCCR0(2*0x10u)/*TimerAmodecontrol:2-Continousup(3*0x10u)/*TimerAmodecontrol:3-Up/Down(0*0x40u)/*TimerAinputdivider:0-/1(1*0x40u)/*TimerAinputdivider:1-/2(2*0x40u)/*TimerAinputdivider:2-/4(3*0x40u)/*TimerAinputdivider:3-/8(0*0x100u)/*TimerAclocksourceselect:0-TACLK(1*0x100u)/*TimerAclocksourceselect:1-ACLK(2*0x100u)/*TimerAclocksourceselect:2-SMCLK(3*0x100u)/*TimerAclocksourceselect:3-INCLK(0x8000)/*Capturemode1(0x4000)/*Capturemode0(0x2000)/*Captureinputselect1#define (0x1000)/*Captureinputselect0#define (0x0800)/*Capturesychronize#defineSCCI (0x0400)/*Latchedcapturesignal(read)*/#defineCAP (0x0100)/*Capturemode:1/Comparemode:0*/#defineOUTMOD2 (0x0080)/*Outputmode2*/#define (0x0040)/*Outputmode1#define (0x0020)/*Outputmode0#defineCCIE (0x0010)/* pareinterruptenable*/#defineCCI (0x0008)/*Captureinputsignal(read)*/#defineOUT (0x0004)/*Outputsignalifoutputmode0*/#defineCOV (0x0002)/* pareoverflowflag*/#defineCCIFG (0x0001)/* pareinterruptflag*/#defineOUTMOD_0 (0*0x20u)/* outputmode:0-outputonly*/#defineOUTMOD_1 (1*0x20u)/* outputmode:1-set*/#defineOUTMOD_2 (2*0x20u)/* outputmode:2- toggle/reset*/#defineOUTMOD_3 (3*0x20u)/* outputmode:3- set/reset*/#defineOUTMOD_4 (4*0x20u)/* outputmode:4-toggle*/#define (5*0x20u) outputmode:5-Reset#defineOUTMOD_6 (6*0x20u)/* outputmode:6- toggle/set*/#defineOUTMOD_7 (7*0x20u)/* outputmode:7- reset/set*/#defineCCIS_0 (0*0x1000u)/*Captureinputselect:0-CCIxA*/#defineCCIS_1 (1*0x1000u)/*Captureinputselect:1-CCIxB*/#defineCCIS_2 (2*0x1000u)/*Captureinputselect:2-GND*/#defineCCIS_3 (3*0x1000u)/*Captureinputselect:3-Vcc*/#defineCM_0 (0*0x4000u)/*Capturemode:0-disabled*/#defineCM_1 (1*0x4000u)/*Capturemode:1-pos.edge*/#defineCM_2 (2*0x4000u)/*Capturemode:1-neg.edge*/#defineCM_3 (3*0x4000u)/*Capturemode:1-bothedges*/16ATIMER_A實(shí)現(xiàn) 如果TIMER_A7(復(fù)位,置位模式//則可利用寄存器CCR0控 //這樣TIMER_A就可以產(chǎn)生出任意占空比 //利用TIMER_A輸出周期為512/32768=15.625ms,占空比分別為75%和25% 矩形波#include<msp430x16x.h>voidmain(void){WDTCTL=WDTPW+TACTL=TASSEL0+TACLR; //ACLK,清除TARTACCR0=512-1; TACCTL1=OUTMOD_7;TACCR1=384; 384/512=0.75TACCTL2=OUTMOD_7;TACCR2 P1DIR|= P1.2P1SEL|= //P1.2P2DIR|= P2.0P2SEL|= //P2.0TACTL|= TA}//由程序知 a.CCR0值(周期不變),bCCRx值(改變占空比第八章HM硬件乘法Hardware硬件乘法器是一個(gè)通過總線與CPU相連的16位模塊。MSP430單片機(jī)可以在部改變CPU了MSP430單片機(jī)的數(shù)據(jù)處理能力,其支持的運(yùn)算如下:16×16位、8×16位、16×8位、8×8位OP1(第1操作數(shù)OP2(第2操作數(shù)操作數(shù)寫入后,相應(yīng)的乘法操作立即執(zhí)行,一般需4個(gè)周期。×兩數(shù)積≤兩數(shù)積兩數(shù)積兩數(shù)積≤×0 以上寄存器均是4保存結(jié)果,存放在RESHI、RESLO及SUMEXT中8×8型,操作過程就要使用寄存器的絕對(duì)地址,而不能使用在msp430x16x.h中硬件乘法器定義如下所示*HARDWARE#defineMPY_ (0x0130)/*MultiplyUnsigned/Operand1*/DEFW(MPY ,MPY_)#defineMPYS_ (0x0132)/*MultiplySigned/Operand1*/DEFW(MPYS ,MPYS_)#defineMAC_ (0x0134)/*MultiplyUnsignedandAccumulate/Operand1*/DEFW(MAC ,MAC_)#defineMACS_ /*MultiplySignedandAccumulate/Operand1*/DEFW(MACS ,MACS_)#defineOP2_ (0x0138)/*Operand2*/DEFW(OP2 ,OP2_)#defineRESLO_ (0x013A)/*ResultLowWord*/DEFW(RESLO ,RESLO_)#defineRESHI_ (0x013C)/*ResultHighWord*/DEFW(RESHI ,RESHI_)#defineSUMEXT_ (0x013E)/*SumExtend*/READ_ONLYDEFW(SUMEXT ,SUMEXT_)說(shuō)明:Data1[7]和Data2[7]待乘數(shù)組。Result[7]保存結(jié)果數(shù)#includeunsignedintResult[7];unsignedcharData1[7];unsignedcharData2[7];void{unsignedcharWDTCTLWDTPW for(i=0;i<7;{Data1[i10* Data2[i]=25*}for(i=0;i<7;{MPY=OP2= Result[i] 8×8}}#includeunsignedlongintResult[7];unsignedintData1[7];unsignedintData2[7];unsignedchari;void{WDTCTL=WDTPW+for(i=0;i<7;{Data1[i]=250*Data2[i]=130*}for(i=0;i<7;{MPY=OP2=Result[i]=RESHI;Result[i]<<=16;Result[i]+=RESLO;}}第九章 模FlashMemory MSP430F169所具有的FLASH器同EEPROM一樣是電可擦除的可編程器,它的主要特點(diǎn)是可以位、字節(jié)和字編程,也可以JTAG,BSL,ISP接口編程,2.7V~3.6V編程電壓,具有熔絲,和60KB5秒內(nèi)編程的速度,擦除次數(shù)可達(dá)10萬(wàn)次。FLASH器結(jié)FLASH器原理框FLASH器結(jié)FLASH器主要用作程序代碼、數(shù)據(jù)表格以及用戶信息的,可以多次擦除和寫入數(shù)據(jù)。寫入和擦除方式可通過JTAG接口,也可以由用戶調(diào)用內(nèi)的駐留(bootstrap裝載器)來(lái)實(shí)現(xiàn)。(SegmentFLASH器分為主器和信息器部分,在操作上二者沒有區(qū)別,代碼和數(shù)據(jù)可以放在任意主器區(qū)域有2個(gè)或多個(gè)512字節(jié)的段。(Block0xxC0h,結(jié)束地址分別為0xx3Fh、0xx7Fh、0xxBFh、0xxFFh。InfoB為0x1000~0x107FFLASH器的時(shí)序發(fā)生FLASH時(shí)序發(fā)生器的操作頻257KHz~476KHz的范圍內(nèi)變化。FLASH的讀寫操作由時(shí)序 FLASH控制寄存器FLASH控制寄存器FLASH控制寄存器 FLASH控制寄存器FRKEY:讀操作安全鍵否則操作無(wú)效,發(fā)生,使ACCVIFG置位,進(jìn)入出錯(cuò)中斷。否則操作無(wú)效,發(fā)生,使ACCVIFG置位,進(jìn)入出錯(cuò)中斷。BLKWRT:段編程控制0:未選用段編程方式1MERAS:主器控制擦除0:不擦除0:不擦除 FLASH控制寄存器0:ACLK1:2:3:FNx:分頻系數(shù)選擇0:不分頻1223 FLASH控制寄存器01:立即停止對(duì)FLASHLOCK:鎖定0FLASH在段編程模式中指示FLASH器可以接受編程數(shù)據(jù)。如果BLKWRT位復(fù)位或LOCK位置位,則允許同時(shí)總的中斷也允許,則將執(zhí)行NMI中斷程序。1:有對(duì)FLASH器的操BUSY:忙標(biāo)志位(只讀每次編程或擦除之前都應(yīng)該檢查BUSY位。0:FLASH器不1:FLASH器 FLASH器的默認(rèn)模式為讀模式。在讀模式,F(xiàn)LASH不被擦除且不被寫入,F(xiàn)LASH的時(shí)序發(fā)生器和電壓發(fā)生器被,對(duì)器的操作等同于ROM。FLASH器無(wú)需額外的外加電壓而進(jìn)行在系統(tǒng)編程。FLASH的寫入/擦除模式可通過BLKWRT、WRT、MERS、ERASE位來(lái)進(jìn)行選擇。在編程或者擦除期間不允許對(duì)FLASH進(jìn)行讀寫操作。FLASH器的擦除操對(duì)FLASH要寫入數(shù)據(jù),必須先擦除相應(yīng)的段,對(duì)FLASH器的擦除必須是整段地進(jìn)行,可以一位被置位并且持續(xù)整個(gè)擦除周期。當(dāng)擦除完成之后,BUSY、MERAS、ERASE位將被自動(dòng)清零。擦除周期地長(zhǎng)短并不是由FLASH器的數(shù)量來(lái)決定,對(duì)整個(gè)MSP430F169來(lái)說(shuō),擦除周期是等同的。如果LOCK=1,將其復(fù)位對(duì)FLASH的擦除操作要做如下4件事: 器的編如果LOCK=1,將其復(fù)位等待WAIT位直到WAIT=1( 器錯(cuò)誤操作的FLASH操作需要較長(zhǎng)的時(shí)間,可能引起看門狗定時(shí)器溢出(FLASH操作之前先停掉看門 *Flash/*FlashMemory控制寄存器定義#defineFCTL1_ (0x0128)/*FLASHControl1即FCTL1*/DEFW(FCTL1 ,FCTL1_)#defineFCTL2_ (0x012A)/*FLASHControl2即FCTL2*/DEFW(FCTL2 ,FCTL2_)#defineFCTL3_ (0x012C)/*FLASHControl3即FCTL3*/DEFW(FCTL3 ,FCTL3_)/*#defineFRKEY (0x9600)/*Flashkeyreturnedbyread*/#defineFWKEY (0xA500)/*Flashkeyforwrite*/#define (0x3300)/*forusewithXORinstruction/*#defineERASE (0x0002)/*EnablebitforFlashsegmenterase*/#defineMERAS (0x0004)/*EnablebitforFlashmasserase*/#defineWRT (0x0040)/*EnablebitforFlashwrite*/#defineBLKWRT (0x0080)/*EnablebitforFlashsegmentwrite*/#defineSEGWRT (0x0080)/*BLKWRT*//*#define /*DevideFlashclockby1to64usingFN0toFN5accordingto:*/#defineFN1 /*32*FN5+16*FN4+8*FN3+4*FN2+2*FN1+FN0+1#ifndef#defineFN2 #ifndef#defineFN3 #ifndef#defineFN4 #define /*#defineFSSEL0 (0x0040)/*Flashclockselect0*/#define (0x0080)/*Flashclockselect1#defineFSSEL_0 (0x0000)/*Flashclockselect:0-ACLK*/#defineFSSEL_1 (0x0040)/*Flashclockselect:1-MCLK*/#defineFSSEL_2 (0x0080)/*Flashclockselect:2-SMCLK*/#define (0x00C0)/*Flashclockselect:3-SMCLK/*#define (0x0001)/*Flashbusy:1#defineKEYV (0x0002)/*FlashKeyviolationflag*/#defineACCVIFG (0x0004)/*FlashAccessviolationflag*/#define (0x0008)/*Waitflagforsegmentwrite#defineLOCK (0x0010)/*Lockbit:1-Flashislocked(readonly)*/#defineEMEX (0x0020)/*FlashEmergencyExit*/ #includeunsignedchar 寫入到信息段A8函數(shù)voidwrite_SegA(unsignedcharvalue);voidcopy_A2B(void);void{WDTCTL=WDTPW+FCTL2=FWKEYFSSEL0 value { //寫信息段 //信息段A內(nèi)容到信息段}}//寫信息段Avoidwrite_SegA(unsignedchar{unsignedchar FlashunsignedintFlash_ptrunsignedchar*)0x1080FlashFCTL1=FWKEY FCTL3= //*Flash_ptr FCTL1=FWKEY for(i0;i128;i 循環(huán)寫信息段A128{*Flash_ptr++=}FCTL1=FCTL3FWKEY }//將信息段A內(nèi)容拷備到信息段Bvoid{unsignedchar*Flash_ptrA;unsignedchar*Flash_ptrB;unsignedinti;Flash_ptrAunsignedchar*)0x1080;//初始化信息段A指針Flash_ptrBunsignedchar*)0x1000;//初始化信息段B指針FCTL1=FWKEY+ERASE;FCTL3=*Flash_ptrB=0;FCTL1=FWKEY+WRT;for(i=0;i<128;i{*Flash_ptrB++=}FCTL1=FCTL3=FWKEY}第十章CA比較器AAMSP430F169A模塊,它是為精確比較測(cè)量而設(shè)計(jì)的,如電池電壓監(jiān)測(cè),產(chǎn)生外部模擬信號(hào),測(cè)量電流,電容和電阻,結(jié)合其他模塊還可以實(shí)現(xiàn)精確的A/D模數(shù)轉(zhuǎn)換功能。比較器A的特點(diǎn)包括:AA比較器A的主要功能是兩個(gè)輸入電壓CA0和CA1的大小關(guān)系后設(shè)置輸出信號(hào)CAOUT的值。如果CA0>CA1,則CAOUT=1;否則CAOUT=0。CA0CA1A,輸入電流極小。這兩個(gè)輸入端可由用戶設(shè)置,最終能夠選擇6種信號(hào)(CA0、CA1、0.5Vcc、0.25Vcc、三極管閾值電壓ACAON信號(hào)送給其他模塊,作為其他模塊的一個(gè)輸入信號(hào);還可以由外部引腳引出。A中斷響應(yīng)后,硬件會(huì)自動(dòng)清除中斷標(biāo)志位CAIFG。A 比較器A控制寄存器CARESL:選擇參考源加到比較器A的正端或負(fù)端當(dāng)CAEX=1時(shí):CAREFx:選擇參考1:0.25*2:0.50*CAON:比較器A開關(guān)010:上升沿觸發(fā)0:中斷0:沒有中斷請(qǐng)求 比較器A控制寄存器P2CA1CA10:P2CA1不接CA11P2CA1P2CA0CA00:P2CA0不接CA01P2CA0CAOUTA的輸出、CAPD比較器A端口寄存不接近Vss或Vcc時(shí),CMOS型的輸入緩沖器可以起到分流作用。0:輸入緩沖使用A*Comparator/*A#defineCACTL1_ (0x0059)/*ComparatorAControl1*/DEFC(CACTL1 ,CACTL1_)#defineCACTL2_ (0x005A)/*ComparatorAControl2*/DEFC(CACTL2 ,CACTL2_)#defineCAPD_ (0x005B)/*ComparatorAPortDisable*/DEFC(CAPD ,CAPD_)/*CACTL1#defineCAIFG (0x01) /*Comp.AInterruptFlag*/#defineCAIE /*Comp.AInterruptEnable*/#defineCAIES (0x04) /*Comp.AInt.EdgeSelect:0:rising/1:falling*/#defineCAON /*Comp.Aenable*/#defineCAREF0 /*Comp.AInternalReferenceSelect0*/#defineCAREF1 /*Comp.AInternalReferenceSelect1*/#defineCARSEL /*Comp.AInternalReferenceEnable*/#defineCAEX /*Comp.AExchangeInputs*//*#defineCAREF_0 /*Comp.AInt.Ref.Select0:Off*/#defineCAREF_1 /*Comp.AInt.Ref.Select1:0.25*Vcc*/#defineCAREF_2 /*Comp.AInt.Ref.Select2:0.5*Vcc*/#defineCAREF_3 /*Comp.AInt.Ref.Select3:Vt*//*CACTL2位定義#define /*Comp.AOutput#define /*Comp.AEnableOutputFilter#defineAExternaltoCA0:1#defineP2CA1#defineAExternaltoCA1:1/*CAPD位定義*/#defineCAPD0AInputBufferPort.0#defineAInputBufferPort.1#defineAInputBufferPort.2#defineAInputBufferPort.3#defineAInputBufferPort.4#defineAInputBufferPort.5#defineAInputBufferPort.6#defineAInputBufferPort.7A include<msp430x16x.h>voidmain(void){WDTCTL=WDTPW+WDTHOLD;P1DIR|=0x01;CACTL1CARSELCAREF0 0.25VccCACTL2 {if((CAOUT&P1OUT| CAOUT1,置位P1OUT& }}DMADMA例如,通過DMA控制器可以直接將DAC轉(zhuǎn)換存貯器的內(nèi)容傳到RAM單元。MCU的信號(hào)處理進(jìn)程,DMA傳輸?shù)挠|發(fā)來(lái)源對(duì)CPU來(lái)說(shuō)是完全透明的,DMA控制器可在內(nèi)存與外部及外部硬件之間進(jìn)行精確的傳輸控制。DMA消除了數(shù)據(jù)傳輸延遲時(shí)間以及各種開銷,從而可以解放16為RISU,以便其將的時(shí)間用于處理數(shù)據(jù),而非執(zhí)行正在處理的任務(wù)。DMADMA控制器具有如字節(jié)和字?jǐn)?shù)據(jù)可以混合傳送:DMA傳輸可以是字節(jié)到字節(jié),字到字,字節(jié)到字或者字到字。當(dāng)字到4種傳輸尋址模式:固定地址到固定地址、固定地址到塊地址、塊地址到固定地址以及塊地址到塊地單個(gè)、塊或突發(fā)塊傳輸模式:每次觸發(fā)DMADMA結(jié)構(gòu)原理DMA控制器包含以下幾個(gè)功3個(gè)獨(dú)立的傳輸通道0,通道1,通2。每個(gè)通道都有源地址寄存器,目的地址寄存器,傳送數(shù)據(jù)長(zhǎng)度寄存器和控制寄存器,每個(gè)通道的觸發(fā)請(qǐng)求可以分別允許和。優(yōu)先級(jí)裁決,確定那個(gè)通道的優(yōu)先級(jí)最高。MSP430DMA控制器可以采用固定優(yōu)先級(jí),還可以采程序命令控制模塊:每個(gè)DMA通道開始傳輸之前,CPU要編程給定相關(guān)令和模式控制,以決DMA通道傳輸?shù)念怉CCR2塊ADC12IFGx,DMAxIFG,DMAE0外部觸發(fā)源。并且還具有觸發(fā)源擴(kuò)充能力。DMADMA請(qǐng)求。DMAxTSELxDMACTLx的控制位DMAEN=0的時(shí)候才能被修改。MSP430DMA控制器支持兩種信號(hào)觸DMALEVELDMAEN被置位并且觸發(fā)源信號(hào)也為高電平時(shí),才可以觸發(fā)DMA操作。如果當(dāng)前進(jìn)行的是塊或者突發(fā)塊傳輸,則DMA觸發(fā)信號(hào)要在整個(gè)傳輸過程中保持高電平,如果在傳輸過DMADMA的寄存器由軟件修改后,DMA控制器才可以繼續(xù)剛才的狀態(tài)執(zhí)行。DMA控制器的尋DMA控制器有4種尋址模式每個(gè)DMA控制器通道傳輸尋址模式的設(shè)置完全獨(dú)立傳輸時(shí)DMASRCINCR和DMADSTINCR分別為源地址和目的地址DMADMA傳輸模式和尋址方式是分別定義DMA當(dāng)DMA通道被定義為單字或者單字節(jié)傳輸模式,每個(gè)字或者字節(jié)的傳輸都要觸發(fā)。設(shè)置DMADTx=0DMAEN位自動(dòng)清除,如果需要再次DMAxSZ0DMAxSZ寄存器DMAxSZ做減操作。當(dāng)DMAxSZ減為零的時(shí)候,它所對(duì)應(yīng)的臨時(shí)寄存器將原來(lái)的值重新置入DMAxSZ,同時(shí)相應(yīng)的DMAIFG標(biāo)志置位。DMADTx=1為塊傳輸模式,每個(gè)數(shù)據(jù)塊傳輸完畢,DMAEN位自動(dòng)清除,在觸發(fā)傳輸下一個(gè)數(shù)據(jù)塊之前,該位要被重新置位。在傳輸某個(gè)數(shù)據(jù)塊期間,DMADTx=5為重復(fù)塊傳輸模式,某個(gè)數(shù)據(jù)塊傳輸完畢,DMAEN位仍然DMAxSZ寄存器保存數(shù)據(jù)塊所包含的單元個(gè)數(shù)。DMASRCINCRDMADSTINCR反映在數(shù)據(jù)塊傳輸過在塊傳輸或者重復(fù)塊傳輸過程中,DMAxSA,DMAxDA,DMAxSZ寄存器的值寫入到對(duì)應(yīng)的臨時(shí)寄存器中,DMAxSA,DMAxDADMAxSZ在塊傳輸過器將原來(lái)的值重新置入DMAxSZ,同時(shí)相應(yīng)的DMAIFG被置位。期。當(dāng)每個(gè)數(shù)據(jù)塊傳輸完畢,CPU按照暫停前的狀態(tài)重新開始執(zhí)行。第十二章USART串行通信模塊TheUniversalSynchronous/AsynchronousReceive/Transmit片內(nèi)具有USARTMSP430USART塊。USARTLPMx開始自動(dòng)工作USART0USART1都可以實(shí)現(xiàn)兩種通信方式:USRTSPI同步通信。另外,MSP430F16XUSART0還可以實(shí)現(xiàn)I2C通信。其中,UART異步通信和SPI同步通信的硬件是通用的,經(jīng)過適當(dāng)?shù)脑O(shè)計(jì),這兩種通I2C串口0(USART0)的控制寄存串口1(USART1)的控制寄存 串口控制寄存PENA:校驗(yàn)允許校驗(yàn)2位停止位CHAR7LISTEN:反饋選擇。選擇是否講發(fā)送數(shù)據(jù)由反饋SPI模式(同步MM:多機(jī)模式選擇SWRST:控制 CKPL:時(shí)鐘極性控UCLKI信號(hào)與UCLKUCLKI信號(hào)與UCLKSSELx:時(shí)鐘源選外部時(shí)鐘UCLKI正在傳輸數(shù)據(jù)或者發(fā)送緩沖器(UTXBUF) BRK:打斷檢測(cè)URXEIE:接收出錯(cuò)中斷允許測(cè)到URXD線路空閑時(shí),該為被喚醒,RXWAKE置位。RXERR:接收錯(cuò)誤標(biāo)志UxBR0波特率控制寄存器UxBR1波特率控制寄存器UBR的允許值不小于3。如果UBR<3,則接收和發(fā)送會(huì)發(fā)生不可的錯(cuò)誤。UxMCTL寄存器,小數(shù)部分由調(diào)整控制寄存器UxCTL的內(nèi)容反映。波特率由以下公式計(jì)算:BRCLKUBR+(M7+M6+..+M0)8UxRXBUF串口接受緩沖寄存器0100011XXX0000010XXXUxTXBUF發(fā)送緩存內(nèi)容可以傳送至發(fā)送移位寄存器,然后有 UxTXIFGx 模塊允 模塊允 UTXIFG00UTXIFG11 UTXIE00UTXIE11過設(shè)置數(shù)據(jù)位、停止位的位數(shù),還可以設(shè)置奇偶位的有無(wú)。通過選擇時(shí)鐘源的波特率寄存器的數(shù)據(jù)來(lái)在異步模式下,USART支持兩種多機(jī)通信模式,即線路空閑和地址位多機(jī)模式。在信息以一個(gè)多幀數(shù)據(jù)[2- 101,則表示被送入發(fā)送移位寄存器,同時(shí)TXWAKE的值移入WUF。TXWAKEUTXBUF中的第二個(gè)字UTXBUF中的第一個(gè)字符被抑制,并在以后被忽略。這時(shí)需隨便往UTXBUF中寫入一個(gè)字符,以便能將TXWAKE的值移入WUF中。[2- 并且將接收的字符送入接收緩存URXBUF。在USART的URXWIE=1時(shí),數(shù)據(jù)字符在通常方式的內(nèi)拼裝成字節(jié),但他們不會(huì)被送入接收緩存,也不產(chǎn)生中斷。只有當(dāng)接收到一個(gè)地址位為1的字符時(shí),才被激活,接收到的字符被送往時(shí),TXWAKE位裝入字符的地址位,再由USART將TXWAKE位清除。USART模塊接收字符時(shí),能夠自動(dòng)進(jìn)行校驗(yàn)錯(cuò)誤、幀錯(cuò)誤、溢出錯(cuò)誤和打斷狀態(tài)檢測(cè)。各種檢測(cè)錯(cuò)誤的BRK:打斷檢測(cè)標(biāo)接收字符,相應(yīng)的錯(cuò)誤檢測(cè)標(biāo)志置位,直到用戶復(fù)位或者接收緩存內(nèi)容被讀出,才能復(fù)位。整個(gè)模塊的時(shí)鐘源來(lái)自3個(gè)時(shí)鐘或外部輸入時(shí)鐘,由SSEL1和SSEL0選擇,以決定最終進(jìn)入模BITCLK信號(hào)。這個(gè)信號(hào)(BITCLK)的產(chǎn)生,由圖的下半部分可以看表決的原則進(jìn)行數(shù)據(jù)標(biāo)定與移位接收,如此依次。由此看出,分頻因子要么很大,要么是整數(shù),的分頻因子,從而保證每個(gè)數(shù)據(jù)鐘的3個(gè)采樣狀態(tài)都處于有效的范圍內(nèi)。分頻因子N由分頻計(jì)數(shù)器的時(shí)鐘(BRCLK)的頻率和所需的波特率來(lái)NBRCLKN為目標(biāo)分頻因子:UBRUXBR016位數(shù)據(jù)值:MX為調(diào)整寄存器(UXMTCL)波特率=BRCLK/N= /(UBR+(M7+M6+…+M0)/8130.658位寄存器,其中10.65*8=5,也就是說(shuō),8次分頻計(jì)數(shù)過程中應(yīng)6B(0101018位調(diào)整器調(diào)整位都使用后,再重復(fù)這一順序。時(shí)鐘ACLK=32.768KHz,波特率4800void{U0CTL| 8bitU0TCTL|= // =0x06U0MCTL=U0CTL& |UTXE0 | P3SEL|0x80 _EINT();//了開中}本方法適合波特率較高的場(chǎng)合(大于4800)unsignedchar unsignedchar unsignedcharFlag_Receive 串口發(fā)送函數(shù)(不需要開發(fā)送中斷)發(fā)送一個(gè)數(shù)組(8個(gè)字節(jié))voidUSART_Send(unsignedchar*pData){unsignedchari;for(i=0;i<8;i++){TXBUF0=pData[i]; //裝入發(fā)送寄存器whileIFG1&UTXIFG00判斷:發(fā)送是否完成IFG1&=~(UTXIFG0);}}unsignedchar unsignedchar unsignedcharFlag_Receive //串口接受函數(shù)(需要開接受中斷)#pragmavector=UART0RX_VECTORinterruptvoidUSART0_RXIRQ{unsignedcharTemp

溫馨提示

  • 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ù)覽,若沒有圖紙預(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)論