msp430系列常用模塊應用原理_第1頁
msp430系列常用模塊應用原理_第2頁
msp430系列常用模塊應用原理_第3頁
msp430系列常用模塊應用原理_第4頁
msp430系列常用模塊應用原理_第5頁
免費預覽已結束,剩余58頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

為了更好地引導MSP430單片機者的入門,微控設計網為大家整理了一個份MS430單片如果你在學習或應用MSP430單片機過程中想與歡迎微控設計網MSP430單片機開發工DC版主模塊列復位模時鐘模WDT看門狗模TimerA定時器模AADC12數模轉換模USART串行異步通訊模CPU模塊及全局資MSP430其它應用介復位模號POR(PowerOnReset)和上電清除信號PUC(PowerUpClear)。會引起產生PUC信號的事件:POR信號的產生會導致“系統復位”并“PUC信號”PUC信號不會引POR信號無論是POR信號還是PUC信號觸發的復位,都會使MSP430從地址0xFFFE處復位中斷向量,程序從中斷向量所指的地址處開始執行。觸發PUC信號的條件中,除了POR產生觸發PUC信號外,其他的豆科一通過相應的中斷向量來判斷是何種原因引起的PUC信號,以便系統復位(指POR)后的RST/NMI管腳功能被設置為復位功能所有I/O管腳被設置為輸入模塊被初始化,其寄存器值為相關手冊上的默認值狀態寄存器SR復位看門狗激活,進入工作模式程序計數器PC載入0xFFFE處的地址,典型的復位電路有一下3種在RST/NMI管腳上接100K歐的上拉電阻在[1]的基礎上再接0.1uf的電容,電容的一端接地,時鐘模MSP430系列單片機基礎時鐘主要是由低頻晶體振蕩器,高頻晶體振蕩器,數字控制振蕩器(DCO),鎖頻環(FLL)FLL+430系列單片機中的型號不同,生出來的結果是相同的.MSP430F1314中是TX2振蕩器的MSP430F11X,F11X1中是用LFXT1CLK來代替XT2CLK時鐘信號的.在時鐘模塊中有3個(對于F13,F14)時鐘信號源(或2個時鐘信號源,對于F11X、F11X1):LFXT1CLK:低頻/高頻時鐘源.由外接晶體振蕩器,而無需外接兩個振蕩電容器.較常使用的晶體振蕩器是32768HZ。XT2CLK:高頻時鐘源.由外接晶體振蕩器。需要外接兩個振蕩電容器,較常用的晶體振蕩器是8MHZ。 數字可控制的RCACLK:輔助時鐘信號.由圖所示,ACLKFLXT1CLK1/2/4/8分頻器分CPU功能模塊作時鐘信號使用.MCLK:主時鐘信號.由圖所示,MCLK是由3SMCLK:子系統時鐘,SMCLK是由2個時鐘源信號所提供他們分別是MSP430X1X1系列產品中,XT13種應用。F13、14XT1相同。需要注意的是,LFXT1只有工作在高頻模式下才需要外接電容。MSP430X11X1:LFXT1CLK,DCOMSP430F12X:LFXT1CLK,DCOMSP430F13X/14X/15X/16X:LFXT1CLK,DCO,XT2CLKMSP430F4XX:LFXT1CLK,DCO,XT2CLK,FLL+MSP430采用了一個折衷的辦法:就是用一個低頻晶鎮振,將其倍頻在高頻的工作頻率它采用數字控制器DCO和頻率積分來產生高頻的運行時鐘頻率。2、LPM3DC發生器關閉期間,只有晶振是活動的。但此時設置的基本時序條DCDC電流被關閉。由于此電路的高阻設計,使功耗被抑制。注:當從DC關閉到啟動DC0要花一端時間(ns-us)結合上述特點,在寫程序時要綜合考慮低功好耗特性,對外部事件的安排也很LPM3從in430.h文件看到它們的定義。76543210 MOD.0-MOD.432個DCOFdco+1DCO周期Fdco周期DCODCO+1選擇的兩種頻率。如DCO常數為7,表示已經選擇最高頻率,此時不能利用MOD.0-MOD.4進行頻率調整。BCSCTL1基本時鐘系統控制寄存器76543210XT2OFF控制XT2 XTS=0,LFXT1工作在低頻模式(默認248BCSCTL2基本時鐘系統控制寄存器765432100DCOCLK(默認1于MSP430F13/14/15/16X);3LFTXTICLK01(默認1224380DCOCLK(默認于MSP430F13/14/15/16X)。01122448DCORDCO01PUC信號之后,DCOCLK被自動選擇MCLK時鐘信號,根據需要,MCLK的時鐘源可以另外設置為LFXT1或者XT2。設置順序如下:時基模塊應用范例本例程是設置時鐘模塊的工作方式和相關的控制寄存器.以MSP430F149和C程序編寫.設置主時鐘信號MCLK=TX2,子時鐘信號SMCLK=DCOCLK,將MCLK從MSP430F149的P5.4口輸出,在F14X系列中P5.4和MCLK是復用的,(看#includevoidmain{unsignedintWDTCLWDTPW+WDTHOLD;P5DIR= P5SEL= BCSCTL1&= TX2,TX2{IFG1&=~OFIFG; for(i=0xff;i>0;i--);//延時,待穩定.}while((IFG1& BCSCTL2|= MCLK}時基模塊應用范例引腳功能輸出ACLK(高頻).同時P1.1輸出一個方波.voidmain(void){unsignedintWDTCTL=WDTPW+ BCSCTL1|=//設置時基寄存器1,使ACLK=LFXT1=HFXTAL,也就是高頻模式.P2DIR|=0x01; //設置P2.0方向寄存器為輸出P2SEL|=0x01; //設置P2.0口為模塊用作ACLK信號輸出P1DIR|=0x02; //設置P1.1方向寄存器為輸{IFG1&= for(i0xFF;i0;i--);}while((IFG1& BCSCTL2|=2,MCLKLFXT1for {P1OUT|= //P1.1=P1OUT&= //P1.1=}}IO端口S√√√√√√√√√√√√√√√√√√√√√√√√√√√P1、P3、P4、P5、S、PxDIR寄存76543210 1PxIN輸入寄存76543210 PxOUT寄存76543210 PxIFG中斷標專寄存器76543210 01PxIES中斷觸發沿選擇寄存器76543210 01PxIE中斷使能寄存器76543210 0中176543210 1選擇引腳為模塊功關于端口P3、P4、P5、端口P3、P4、P5、P6是沒有中斷功能的,其它功能與P1、P2相同。所以關于端口COM、WDT看門時時間可以通過WDTCTL中的低三位(SSEL、IS1、IS0)選擇,當系統時鐘為1MHz時,最大可設置為1秒鐘,最小可設置64微秒。WDTCTL是一個16位寄存器,其高字節為口令,口令為5AH,當對它寫入操作時必須寫 WDT,WDTCTL時器中斷源是單源的,當得到中斷服務時其WDTCTL標志位復位。T計數單15--15--計數到計數溢出為止所用的時間就不同。T須通過看門狗定時器的控制寄存器WDTCTL來控制。WDTCTL控制寄存15--76543210WDTCTL由高8位口令和低8位控制命令組成。要寫入操作WDT的控制命令,出于安5AH,如果口令寫錯將導致系統WDTCTLNMI 0Tx1Tx2Tx3Tx 時間。下表列出了WDT可選的定時時間(晶體為32768HZ,SMCLK=1MHZ)。定時時間011Tsmclkx010Tsmclkx111Taclkx0018Tsmclkx110Taclkx000Tsmclkx2(15)(PUC101Taclkx100TaclkxCNTCL當該位為1時,清除 TMSEL工作模式選擇NMI選擇RST/NMI引腳功能,在PUC后被復RST/NMI引腳為邊沿觸發的非中斷輸入NMIESHOLD時鐘輸入,計數停定時功看門基本定時,當程序發生錯誤時執行一個受控的系統重啟動基本基本定時,支持軟件和各種模塊工作在低頻率、低功耗條件下定時器基本定時,支持同時進行的多種時序控制、多個捕獲、比較功能和多種輸出波形(),可以以硬件方式支持串行通信定時器基本定時,功能基本同定時器A,但比較定時器A靈定時器由于MSP430系列單片機不同系列可能包含不同數目的捕獲/比較器,這里列出含3Timer_A時,延時,信號頻率測量,信號觸發檢測,脈沖脈寬信號測量,信號發生。另功能會比A增強些。看關于定時器B應用范例。獲/比較控制寄存器CCTLx但計數是一定走到CCR0后在循環進行,以下也一樣)。連續計數模式:從0到65535連續增計比較模式:TAR時EQUx信該號位為真。否則為假利用它可以控制輸出產生占空比可變的波形件查詢處理、也可結合輸出產生脈沖時序發生信號,信號等。完成捕獲后相應的中斷標志CCIFGx置為位。捕獲是當外部有信號進來后(觸發),將定時器TxR的值捕獲到自己的鎖存寄存器TxCCRx中,你可以隨時讀出。TxCCRx16位可讀可寫。捕獲模式用于事件的精確再一個例子就是同時應用比較模式和捕獲模式用軟件實現UART通訊器或用軟件通過CLR連續計數模式:從0開始到0FFFFH在從0開始,當回到0TAIFG置位(TAIFG為溢出標志但并不中斷,只有TAIE=1時才產生中斷。可以設置不同的CCR0的值來產生中斷CCIFG。TACTL寄存15--9876543210SSEL1、SSEL0選擇定時器輸入分頻器00011011ID1,ID0MC1,MC00001CLRPOR或CLR置位時定時器和輸入分頻器復位。CLR由硬件自動復位,其讀出0。定時器在下一個有效輸入沿開始工作。如果不是被清除模式控制暫停,TAIETAIFGCCR00TAIFG15--15--因為它與CPU時鐘不同步,可能引起時間競爭。CCTLx捕獲/比較控制寄存器CAPTMOD1-CCIS1-CAPTMOD1-0選擇捕獲模式00捕獲模01CCISI1-00001SCSCCIFGCAPOUTMODx0XX1X0X1200011001130001100114X0X15X0X1060001101110CCIx比較模式:CCIx復位。OUTCOVCCIFGx15--15--15--4--00--0 TAIV240ACLK=TACLK=32768Hz,MCLK=SMCLK=defaultDCO例程 voidmain(void){WDTCTL=WDTPW+WDTHOLD; P1DIR|=0x01; //設P1.0為輸出TACTLTASSEL_1MC_2 ,+ }#pragmavector=TIMERA1_VECTORinterruptvoid{ //CCR1比較/捕獲寄存器的中斷 case P1OUT^ }}簡述:ACCR0捕獲/A的值進行CCR0TimerA0P1.0作為指示,反轉速度=32768/(2*1000)=16.384。ACLK=TACLK=32768Hz,MCLK=SMCLK=defaultDCOTA(TimerA)采用增計數模式。在增計數模式時,當TA中的計數值與CCR0的值相等時(TA>CCR0的值時),TA0開始計數。在此同時,CCR0產生中斷。序處理時是自動復位。如本例中執行interruptvoidTimer_A(void)時,CCIFG0已被清除標志例程 voidmain(void){WDTCTL=WDTPW+WDTHOLD; P1DIR|=0x01; //設P1.0為輸出CCTL0 CCR01000- TACTLTASSEL_1 //ACLKA時鐘源,+ /}interruptvoidTimer_A(void){P1OUT^ //}簡述:ACLKTACLK32kHzMCLKSMCLKdefaultDCOP1.1=CCR0=32768/(2*4)=4096HzP1.2=CCR1=32768/(2*16)=1024HzP1.3=CCR2=32768/(2*100)=163.84HzP1.0=overflow=32768/(2*65536)=CCR0,CCR1,CCR0捕獲/TA的值進行比較。TACCRX中的值就可以。在本例中,CCRX每次中斷里增長了下一次中斷發生時的時差值。另外,還需設置TA模塊輸出單元OUTx的輸出模式,本例設置的輸出模式為反轉模式。需要注意的,CCR0CCR1-CCRxTA的中斷向量是硬件會自動復位這些標志;CCR0中斷服務程序執行后CCIFG0標志也被復位。interruptvoid例程 void{WDTCTL=WDTPW+WDTHOLD; P1SEL|= //設P1.1-P1.3為模塊功能P1DIR| //P1.0P1.3CCTL0OUTMOD_4 CCR0輸出為反轉模式,CCTL1OUTMOD_4 CCR1輸出為反轉模式,CCTL2OUTMOD_4 CCR2輸出為反轉模式,TACTLTASSEL_1MC_2 ACLK,連續計數模式,TA+ }interruptvoidTimer_A0(void){CCR0 }interruptvoidTimer_A1(void){{ 2:CCR1 4:CCR2 case10:P1OUT^ }}簡述:利用定時器A的自動產生波形輸出,而無需采用軟件程序來服務生產。ACLK=TACLK=LFXT1=32768Hz,MCLK=defaultDCO例程 void{WDTCTL=WDTPW+WDTHOLD; P1DIR|=0x0C; //設P1.2和P1.3為輸出P1SEL| //P1.2和P1.3TA1/2CCR0=512- //裝入周期CCTL1 CCR1= //裝入CCR1的占空CCTL2 CCR2= //裝入 , }組中,同時保存新數據。完成16次數據捕獲后LED取反。例程#include<msp430x14x.h>unsignedintold_cap=0;unsignedintcap_diff=0;unsignedint //unsignedint //unsignedcharindex=0;unsignedcharcount=void{volatileunsignedintWDTCTLWDTPW fori=0;i<20000; P1DIR P1OUT& LEDP1SEL //P1.1為TA0P2DIR P2SEL| BCSCTL1| CCTL0=CM_1+SCS+CCIS_0+CAP+//上升邊+同步CCI0AP1.1信號源)++ + }interruptvoidTimerA0(void){new_cap cap_diffnew_cap diff_array[index]=cap_diff; capture_array[index++]=new_cap; if(index==16) {index P1OUT^ //反轉}old_cap= countif(count=={count=}}比較器以下圖可以看出比較器A的結構大概可以分4部分構成,分別為模擬輸入,比較器A,首先,整個比較器A的工作必需由CAON位置為1時才能工作的,此位屬CACTL1控制寄存器。單片機上電時此位是為0的,也就是說比較器是不工作的。外部模擬引腳信號CA0,CA1(正負端)可以分別由P2CA0,P2CA1位控制開或關。經過軟件的設比較器A模塊是具有中斷功能的,如比較器功能CAIE中斷允許開了,在CAIF信號產生時將生產中斷(當然GIE要為1時)。比較器A模塊是具有中斷獨立向量的,是一個單獨的中斷,CUP接受請求后會硬件自動清除中斷標志位CAIFG。CACTL1比較A制寄存器76543210 CAEXCARSEL001101CAREF1、CAREF003選擇二極客電壓為參考電壓,必須見具體的資料01CAIESCAIE0中1CAIFG01CACTL2比較A制寄存器76543210 1P2CA01010CA01CA0CAPDCAPD端口寄存器7--的通斷開關。當輸入電壓不接近Vss或Vcc時,CMOS型的輸入緩沖器可以起到分流作用。這樣可以減少了由不是Vss或Vcc的輸入電壓所引起的流入輸入緩沖器的電流。控制位CAPD0—CAPD7初始化為0,則端口輸入緩沖器有效。當相應控制位置1時,程序范例voidmain(void){WDTCTLWDTPW //CAPD| //IOCACTL2 //P2.3為CCTL0 CCR0TACTLTASSEL_2ID_3 //while //循{CACTL1 // //CACTL1CAREF0 0.25*Vcc=P2.3, //再次CACTL1CAREF1 0.5*Vcc=P2.3, //再次進入CACTL1CAREF1CAREF0 0.55VonP2.3, //再次}}//TimerA0interruptserviceinterruptvoidTimer_A(void){ //LMP0模}ADC12模數轉換模塊MSP430模數轉換模塊--MSP430ADC1212A/D轉換模塊,他具有高速度,部分都內置了ADC模塊.而有ADC模塊的片子,也可通過利用內置的模擬比較器來實現AD的ADC10ADC12ADC12Slope12ADC12ADC12ADC14Slope12ADC12結構圖中可以看出,ADC12模塊中是由以下部分組16路模擬開關,ADC內部電壓參考源,ADC12內核,ADC時鐘源部分,與保持/觸發源部分,ADC數據輸出部分,ADC控制寄存器等組成。輸入的16路模擬開16路模擬開關分別是由IC外部的8路模擬信號輸入和內部4路參考電源輸入及1路內部溫度傳感器源及VCC-VSS/2電壓源輸入。外部8路從0-7輸入,主要是外部測量時的模擬變量信號。內部4路分別是ere+ADC內部參考電源的輸出正端,ref-/eref-ADC內部參考電源負端(內部/外部)。1路VCC-VSS/2電壓源和1路內部溫度傳感器源。片內溫度傳感器可以用于測量上的溫度,可以在設計時做一些有用的控制;在實際應用時用得較多。而其他電源參考源輸入可以用作ADC12的校驗之用,在設計時可作自身校準。ADC內部電ADC12模塊中基準電壓源可以通過軟件來設置6種不同的組合。AVCC(Vr+),ADC12ADC12的模塊內核是共用的,通過前端的模擬開關來分別來完成輸入。ADC12是一個精度為12位的DC內核,1位非線性微分誤差,1位非線性積分誤差。內核在轉換時會參用到兩個參考基準電壓,一個是參考相對的最大輸入最大值,當模擬開關輸出的模擬變量大于或等于最大值時ADC內核的輸出數字量為滿量程,也就是0xf;另一個則是最小值,當模擬開關輸出的模擬變量大小或等于最大值時ADC內核的輸出數字量為最低量程,也就是0x00。而這兩個參考電壓是可以通過軟件來編程設置的。ADC時鐘源部ADC12的時鐘源分有ADC12OSC,ACLK,MCLK,SMCLK。通過編程可以選擇其中之一時鐘源,同時還可以適當的分頻。與保持,觸發源 模塊中有著較好與保持電路,采用不同的設置有著靈活的應用ADC數據 內核在每次完成轉換時都會將相應通道上的輸出結果存貯到相應用通道緩沖區單個通道緩沖單元。同時 個通道的緩沖單元有著相對應的控制寄存器,以實現更靈活的控制ADC12MCTL0-ADC12MEM0-ADC12CTL0轉換控制寄存器15--11--76543210用);SHP=1SAMPCON來源于采樣定時器;SHP=0表示采樣直接由轉換,需要使用一條指令來完成ADC12SCENC的設置。ENC轉換允CONSEQ=0(單通道單次轉換模式)且ADC12BUSY=1(ADC12處于采樣或者轉換)時,中途撤走ENC信號(高電平變為低電平),則當前操作結束,并可能得到錯誤結果。所以在單通道單次轉換模式整個過程中,都必須保證ENC信號有效。當CONSEQ=0(非單通道單次轉換)時,ENC由高電平變為低電平,則當前轉換正ADC12TVIEADC12OVIEREFON2.5VMSCMSC0CONSE1期是ADC12CLK周期的整4倍,則:Tsample=4xTadc12clkx012345678912--N1248ADC12CTL2轉換控制寄存器15-11-987-0SHS采樣觸發輸入源選擇位SHP采樣信號(SAMPCONISSHADC12SELADC12內核時鐘源選擇CONSEQADC12BUSY只用于單通道單次轉換模式,如果ENC則轉換立即停止,轉換結果不可靠,需要在使ENC=0之前,測試ADC12BUSY位以確定是否為0。在其它ADC12MEM0-ADC12MEM15轉 11-00000ADC12MCTLx轉 器控制寄存7EOSSREFVR+=AVCC,VR-VR+=AREF+,VR-2,3VR+=AeREF+,VR-VR+=AVCC,VR-=VREF-/VeREF-VR+=VREF+,VR-=VREF-/VeREF-6,7VR+=AeREF+,VR-=VREF-/VeREF-0-7A0-VeREF-11-15(AVCC-AVSS)ADC12IFG中斷標志寄存器10ADC12IFG.x=1轉換結束,并且轉換結果已經裝入轉換ADC12IFG.x=0ADC12MEMxADC12IE中斷使能寄存器10ADC12IV中斷向量寄存器00000000000000000000000000000000000012000000000000000010400000000000000010060000000000000010008000000000000010000000000000000100000000000000001000000010000000100000000000000000000000010000000000000000100000000000000001000000000000000010000000000000000100000000000000001000000000000000010000000000000000100000000000000000優先級從高到低,分別為:數據溢出標志ADC12OV,時間溢出中斷標志ADC12EMEADC12IFG.xVr+時,ADC120x0FFF。而當輸入模擬電壓信號等于或小于Vr-時,ADC12轉換輸出為0,此時輸出值為0x0000。例程 void{WDTCTL //P6SEL| A0A/DADC12CTL0=ADC12ON+SHT0_2; //開ADC12模塊+定時器分頻系數n=4ADC12CTL1=SHP; //使用采樣定時器輸出作/轉換信號SAMPCONADC12MCTL0=SREF_2; //使用外部參考電壓Vr+=VeREF+ADC12CTL0| while{ADC12CTL0| whileADC12IFG& }}采樣定時器作為/轉換信號源(SAMPCON)時還要選擇轉換采樣時序與采樣時鐘式(MSC位決定)。/轉換周期:Tsample=4xTadc12clkxN由ADC12CTL1的CONSEQ位決定例程//ADC12內核時鐘源為ADC12OSC staticunsignedintA0results[Num_of_Results];//A0結果數組staticunsignedintA1results[Num_of_Results];//A1結果數組staticunsignedintA2results[Num_of_Results];A2結果數組staticunsignedint void{WDTCTL P6SEL= //A0-A3A/DADC12CTL1= //使用采樣定時器輸出作/轉換信號//ADC12MCTL0=INCH_0; //參考電壓ref+=AVcc,輸入通道選擇為A0ADC12MCTL1=INCH_1; //參考電壓ref+=AVcc,輸入通道選擇為A1ADC12MCTL2=INCH_2; //參考電壓ref+=AVcc,輸入通道選擇為A2ADC12MCTL3=INCH_3+EOS; //參考電壓ref+=AVcc,輸入通道選擇為A3ADC12IE ADC12CTL0| ADC12CTL0| _BIS_SR(LPM0_bits //LPM0模式,}#pragma interruptvoidADC12ISR{staticunsignedintindex ;//A1results[index]ADC12MEM1;移動A1ADC12FIG.1A2results[index]ADC12MEM2;移動A2ADC12FIG.2index=(index+1)%Num_of_Results;//增加結果的索引,取index變量的模(余數)}例程 staticunsignedint void{WDTCTL P6SEL|= //A0A/DADC12CTL0= //開ADC12模塊,+時間分頻系數//SHIADC12CTL1= //使用采樣定時器輸出/轉換信號//ADC12IE A0ADC12CTL0| ADC12CTL0| _BIS_SR(LPM0_bits //LPM0,}#pragmavector=ADC_VECTORinterruptvoidADC12ISR(void){staticunsignedintindex results[index] //index //index變量的模(余數P6.0512LPM3例程TACLK=ACLK intresults[Num_of_Results]=void{WDTCTLWDTPW| ADC12CTL0| LPM0}{P1DIR P1P1OUT P6SEL|= ADC12CTL0ADC12ON+SHT0_1+REF2_5V+REFON;//ADC12CTL1=//+單通道多次采樣+采樣觸發源為Timer_A的輸出單元out1輸出的信號(由CCR1定時產生ADC12MCTL0=INCH_0+//選擇AD通道0+正參考電壓=Vref+,負參考電壓=AVssADC12IE=0x0001; //開中斷允許-ADC12IFG.0TACCR0 //TACCTL0| TACTLTASSEL_1| _BIS_SR(LPM3_bits //LPM3TACCTL0&= //CCR0P2SEL| //P2.3為TimerAout1P2DIR| p2.3TACCR0 //TACCR1=//TACCTL1=TACTL=TACLR|MC_1|//定時器時鐘=ACLK,TA,}interruptvoidta0_isr(void){TACTL //LPM3}ADC12#pragmavector=ADC_VECTORinterruptvoidADC12ISR(void){staticunsignedintindex results[index++] //ADCresultsifindex //512{ADC12CTL0& //index=P1OUT|= // //LPM3}}USART串行異步模式UBR+UM/8PUCPUCPUC讀PUCPUCPUCPUCPUCPUC讀PUCPUCPUCUxCTL控制寄存76543210PENAPEVCHAR78LISTEN反饋選擇.選擇是否發送數據由內部反饋給MMSWRST上電時該位置位,此時USART狀態機和運行標志初始化成復狀態而接收和發送允許標志URXEUTXESWRST而更改。在串行口使用設置時,這一位起重要的作用。一次正確的USART模塊初始化應該是這樣設置過程的:先在SWRST=1時設置,設置完串口后再設置SWRST=0;最后如UxTCTL發送控制寄存器76543210CKPL時鐘極性控制位SSEL1、 時鐘源選擇,此兩位確定波特率發生器的時鐘URXSETXWAKEURCTL接收控制寄存器76543210FEPEOEBRKURXEIEURXEIE=0,如果接收內容有錯誤,該位不能置位URXIFG。0X1X000X0100010110XX11X011X1RXWAKERXWAKE置位。RXERRUxBR0波特率選擇寄存器76543210UxBR1波特率選擇寄存器76543210UxMCTL波特率調整控制寄存器76543210BRCLK整數部分寫UBR寄存由調整寄存器UxMCTL的內容反映。波特率由以下公波特率URXBUF接收數據緩76543210接收緩存存放移位寄存器最后接收的字符,可由用戶。讀接收緩存可以復位接收時產生的各種錯誤標志、RXWAKE位和URXIFGx位。如果傳輸7位數據,接收緩存內容右對齊,最為0。0100011XXX0000010XXXUTXBUF發送數據緩76543210寫操作可以復位UTXIFGx。如果傳輸出70。DivideACLK[32768HZ HZhrTX11-100---010--10--50--0--00-010-210-50-00-//ACLK=UCLK0=LFXT1=32768,MCLK=SMCLK=DCO~//32768hzXTAL@960032768Hz/96003.410003h4Ah//軟件:IAREmbeddedWorkbenchVersion: voiddelay(void); voidmain(void){WDTCTLWDTPW //P5DIR| P5.7為輸出,RS485P5OUT&= //SN75176BP1DIR| LEDP1OUT&=P3SEL|= //P3.4,5=USART0ME1|=UTXE0 //USART0UCTL0| 8UTCTL0| UCLKUBR00 //UBR10= //32k/9600-UMCTL0 //UCTL0&= //USARTIE1| //USART0for(;;){_BIS_SR(LPM3_bits //LPM3模式/while(!(IFG1& P5OUT| SN75176BTXBUF0 //delayP5OUT& SN75176BP1OUT^= }}interruptvoidusart0_rx(void){ }voiddelay{unsignedi=180;}10-CPU模塊及全局資料MSP430中斷嵌套機 默認的是關閉中斷嵌套的,除非你在一個中斷程序中再次開總中斷EINT若在中A中開了總中斷,剛可以響應后來的中B(不B的優先級A高還是低,B執行完現繼續執行。注意:進入中斷B生總中斷同樣也會關閉,如果B中斷程序執行時需響應中斷C,則此時也要開總中斷,若不需響應中斷,則不用開中斷,B執行完后中跳出中斷程序進A程序時,總中斷若在中斷中開了總中斷,后來的中斷同時有多個,則會按優先級來執行,即中斷優先級只有在多個中斷同時到來才起做用!中斷服務不執行搶先原則。對于單源中斷,只要響應中斷,系統硬件自動清中斷標志位,對于TA/TB定時器的比較/捕獲中斷,只要TAIV/TBIV,標志位倍被自動清除;對于多源中斷要手

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論