430單片機學(xué)習(xí)應(yīng)用程序_第1頁
430單片機學(xué)習(xí)應(yīng)用程序_第2頁
430單片機學(xué)習(xí)應(yīng)用程序_第3頁
430單片機學(xué)習(xí)應(yīng)用程序_第4頁
430單片機學(xué)習(xí)應(yīng)用程序_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C例C例Page1ofMSP430C語言編程。MSP430C語言編程。8P38P2口相連,引腳號標在按鈕上方C語言編程MSP430C語言編#include<msp430x14x.h>//voidmain(void)//主函數(shù){庫i;WDTCTL=WDTPW+WDTHOLD;P3DIR|=BIT0;P3.0為輸出,這里BIT0=0x0001while(1)//無限次while循環(huán){for(i=0;i<20000;i++)//for語句,i為循環(huán)變量,i每次循環(huán)加1,當i<20000P3OUT=0x00;P3.0輸出低電平,發(fā)光二極管亮,(低電平使發(fā)光二極管亮for(i=0;i<20000;i++)P3OUT=0x01;P3.0}}#include<msp430x14x.h>voidmain(void){P3DIR=0XFF;P3口為輸出{forP3OUT=0X55;1、3、5、72、4、6、8for}}例3:定時器控制的發(fā)光二極管閃爍。這里使用了源。用定時器A定時1s,發(fā)光二極管滅0.5s,亮.0.5sPage2of的32768Hz低頻晶體振蕩器作為時#include<msp430x14x.h>voidmain(void){WDTCTL=WDTPWWDTHOLD;TACTL=0TACLR;A//TACLR=0x0004,清除定時器ACCTL0CCIE;//設(shè)置捕獲/比較控制寄存器,CCIE=0x0010CCR0=16384; #include<msp430x14x.h>voidmain(void){WDTCTL=WDTPWWDTHOLD;TACTL=0TACLR;A//TACLR=0x0004,清除定時器ACCTL0CCIE;//設(shè)置捕獲/比較控制寄存器,CCIE=0x0010CCR0=16384; P3DIR|=BIT7;//P3.7為輸出TACTL|=MC0;A控制寄存器,MC0=0x0010 while(1);while}errupt[TIMERA0_VECTOR]voidTimer_A(void)A的CC0址{P3OUT^=BIT7;P3.7}例4:選擇不同的時鐘源,使P3.7連接的發(fā)光二極管閃爍(1)XT2時鐘源,8MHz頻率,用定時器A分頻,產(chǎn)生1sP3.7引腳的發(fā)光二極管閃爍#include<msp430x14x.h>#defineXTOFF0x40;voidmain(void){WDTCTL=WDTPWWDTHOLD;BCSCTL1&=BCSCTL2SELSDIVS1DIVS0;BCSCTL2設(shè)置,第3位置1TACTLCCTL0=CCIE;//CCIE=0x0010,使能定時器A中斷CCR0=62500;//設(shè)置計數(shù)器CCR0的初值,((8MHz/8)/8)/2=62500,相當于0.5s的時間P3DIR|=BIT7;//將P3.7設(shè)置為輸出();//調(diào)用C430while(1);}errupt[TIMERA0_VECTOR]voidTimer_A(void)//定時器A{P3OUT^=BIT7;//P3.7}(2)使用32768Hz晶體產(chǎn)生1s信號的程序如下voidmain(void){WDTCTL=WDTPW+WDTHOLD;TACTL=TA CCTL0=CCIE;CCR0=16384;P3DIRPage3of}{P3OUT^=}(3)看門}{P3OUT^=}(3)看門狗使輸出P3.7引腳連接的發(fā)光二極管每秒閃爍一次的例子voidmain(void){WDTCTL=WDTPW+WDTTMSEL+WDTP3DIR;}{T_VECTOR]voidWDT_erruptP3OUT^=}5P4P5輸出口連接的數(shù)碼管顯示12#include<msp430x14x.h>voidmain(void){unsignedchar//hgfg//0=1100//1=1111//2=1010//9=1001WDTCTL=WDTPW+WDTHOLD;P4DIR=0XFF;//設(shè)置P4口為輸出}6P5口連接的數(shù)碼1P4口相連的數(shù)碼管顯示數(shù)字8#include<msp430x14x.h>voidmain(void){i,x; unsignedcharseg[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};P4DIR=0XFF;//P4口為輸出,連接有共陽極數(shù)碼管P5DIR=0XFF;//P5口為輸出,連接有共陽極數(shù)碼管P4OUT=seg[8];//P4輸出數(shù)字8P5OUT=seg[0];//P5輸出數(shù)字0while(1)//無限次While{for(i=0;i<=9;i++)//循環(huán)變量I從0到9循環(huán)for(x=0;x<20000;x++)for循環(huán),用于延遲時間P5OUT=seg[i];//按照循環(huán)變量i的數(shù)值,取出相應(yīng)的數(shù)組元素}}例0開始計時,數(shù)碼管顯示~60秒,每隔1秒使數(shù)碼管Page4of#include<msp430x14x.h>#defineXTOFF0x40;i=0,j=0;unsignedcharvoidmain{WDTCTL=WDTPWWDTHOLD;#include<msp430x14x.h>#defineXTOFF0x40;i=0,j=0;unsignedcharvoidmain{WDTCTL=WDTPWWDTHOLD;TACTL=0TACLR;A//TACLR=0x0004,清除定時器A計數(shù)器CCTL0=CCIE;//使能定時器A捕捉與中斷功能,CCIE=0x0010CCR0=32768;//設(shè)置計數(shù)器CCR0初值TACTL|=MC0;CCR0初值P3DIR=0XFF;//P3口為輸出P4DIR0XFF;//P4口為輸出P5DIR0XFF;//P5P3OUT0X7E;//P3口輸出為0111();調(diào)用C430while(1);while}errupt[TIMERA0_VECTOR]voidTimer_A(void)A{i+=1;i每次循環(huán)加1if(i==10){ j+=1;j每次加P3OUT^=bit[j];j個元素取反后從P3口輸出,使發(fā)光二極管順序點亮if(j==6)//如果j=6{j=0;}}P4OUT=seg_7[i];//數(shù)碼管字型數(shù)組中取第i個元素,送到P4口輸出P5OUTseg_7[j];j個元素,送到P5口輸出}例8:連接在P1.0口的按鍵控制數(shù)碼管顯示數(shù)值,數(shù)碼管顯示按動次數(shù)#include<msp430x14x.h>//charKey_Pressed(void);//voidmain(void){unsignedchari=0;WDTCTLWDTPWWDTHOLD;P1DIR&=~BIT0;//P1.0引腳設(shè)置成輸入,該引腳連接的按鍵按下時,按鍵輸出低電平P4DIR=0xff; P4OUT=seg[8];//P4口輸出數(shù)字while(1)while{if(Key_Pressed())Page5ofP4OUT=seg[i++];1P4if(i>9)i大于9,則使i=0}}charKey_Pressed(void){i;while(!(P1IN&BIT0));P1輸入寄存器P1IN的第0位為0時,開始while循環(huán)if(!(P1IN&BIT0))P1輸入寄存器P1IN的第0位還是0,則返回1,表示按鍵按下return1;return}P4OUT=seg[i++];1P4if(i>9)i大于9,則使i=0}}charKey_Pressed(void){i;while(!(P1IN&BIT0));P1輸入寄存器P1IN的第0位為0時,開始while循環(huán)if(!(P1IN&BIT0))P1輸入寄存器P1IN的第0位還是0,則返回1,表示按鍵按下return1;return}使用AD單通道多次轉(zhuǎn)換P6.0輸入的模擬電壓值(變化范圍:0~3.3V),轉(zhuǎn)換為數(shù)字建立二維數(shù)組和通過順序查表的方法得回來的電壓值。然后通過數(shù)碼管顯示當前電壓值,2.37V2.4#include庫voiderrupt[ADC_VECTOR]voidADC12(void); Table[4][10]={{0x040,0x0BC,0x138,0x1B4,0x230,0x2AC,0x328,0x3A4,0x420,0x49C{0x518,0x594,0x610,0x68C,0x708,0x784,0x800,0x87C,0x8F8,0x974{0x9F0,0xA6C,0xAE8,0xB64,0xBE0,0xC5C,0xC08,0xD54,0xDD0,0xE4C{0xEC8,0xF44,0xFC0,}voidmain(void){P4DIR0XFF;//P4口設(shè)置為輸出P5DIR0XFF;//P5ADC12CTL0|=ENC+ADC12SC;//設(shè)置轉(zhuǎn)換控制寄存器ADC12CTL0,ENC=0x002使轉(zhuǎn)換允許位為while}voidInit(void){WDTCTL=WDTPW+WDTHOLD;P6SEL|=0x01;ADC12CTL0&=~ENC;P6口的P6.0ADC12CTL0=ADC12ON+SHT0_2+REFON+//TurnonandsetupADC12CTL1SHPCONSEQ_2;//設(shè)置AD轉(zhuǎn)換控制寄存器ADC12CTL1Page6ofSHP=0x0200SAMPON//CONSEQ_2=2*2ADC12MCTL0SREF_0;//設(shè)置通道0選擇參考電壓為VR=AVCC,VR-=AVSSADC12IE|=}errupt[ADC_VECTOR]voidADC12(void)//AD{unsignedSHP=0x0200SAMPON//CONSEQ_2=2*2ADC12MCTL0SREF_0;//設(shè)置通道0選擇參考電壓為VR=AVCC,VR-=AVSSADC12IE|=}errupt[ADC_VECTOR]voidADC12(void)//AD{unsignedcharunsignedcharunsignedADC12CTL0&=~ENC;//設(shè)置AD轉(zhuǎn)換控制寄存器ADC12CTL0,ENC=0x002,~ENC=0xFFD,停止ADfori=0i<4;i++)//掃描Table數(shù)組行下{for(j=0;j<10;{if};//如果Table}:{P4OUTseg_7[j];//P4P5OUT=seg_8[i];ADC12CTL0|ENC+ADC12SC;//使能再次轉(zhuǎn)}例10P2.3(~3.3V0.5VCCP2.3,P1.0LED注意:順時針調(diào)節(jié)電位器,輸入的模擬電壓值增大#include<msp430x14x.h>voidmain(void){P3DIR|=CACTL1=CARSELCAREF1CAON;//設(shè)置控制寄存器//CAON=0x08,打開比較器CACTL2P2CA0;while(1)//無限次循環(huán){if((CACTL2&CAOUTCAOUT)//CAOUT=0x01,如果比較器輸出為P3OUT&=P3OUT|=}}:單片機UART以9600PC發(fā)送字符Data[Page7of#includevoidcharData[20]="xialaoshinihao!";voidmain(void){WDTCTL=WDTPW+#includevoidcharData[20]="xialaoshinihao!";voidmain(void){WDTCTL=WDTPW+Init();//調(diào)用初始化函數(shù)while(1)//無限次循環(huán){{TXBUF0=Data[i];}}}TL0&0x01)==0);void{UCTL0&=~SWRST;//USART控制寄存器UCTL0,SWRST=0x01,~SWRST=0xFEUCTL0=0X10;//UCTL0的第4位置1,設(shè)置數(shù)據(jù)長度為8位,第5位為0,設(shè)置1位停止位UBR00=0x03;//使用32768Hz晶體,波特率為9600UBR10=0x00;UMCTL0=TL00X10;4位置1,選擇輔助時鐘ME1|=UTXE0ME1,UTXE0=0x80,設(shè)置ME1的第7位為 P3DIR|=BIT4;//P3口方向寄存器的第4位置1,選擇輸出}12:MSP430F149USARTPC盤輸入的數(shù)值并顯示在串口調(diào)試助手中的發(fā)送區(qū)選中進制發(fā)送”和“自動發(fā)送”進制形式,以字節(jié)為03,“03020”,單PC的以96003、、5。#include<msp430x14x.h>voidInit(void);voidmain{P4DIR=0XFF;//P4口為輸出while(1);}voidInit(void){UCTL0UCTL0UBR000X03;//9600波特率,32kHz時鐘UBR01=0X00;UMCTL0Page8ofTL00;ME1|=UTXE0+URXE0;//模塊允許寄存器//UTXE0=0x80//URXE0=0x40接收允許P3SEL|=BIT4+BIT5;//P3口第4、5引腳供P3DIR|=BIT4+BIT5;//P3口的第4、5位為輸出IE1|=URXIE0;IE1,第6位為1,使能接收中斷}errupt[UART0RX_VECTOR]voidTL00;ME1|=UTXE0+URXE0;//模塊允許寄存器//UTXE0=0x80//URXE0=0x40接收允許P3SEL|=BIT4+BIT5;//P3口第4、5引腳供P3DIR|=BIT4+BIT5;//P3口的第4、5位為輸出IE1|=URXIE0;IE1,第6位為1,使能接收中斷}errupt[UART0RX_VECTOR]voidUART0RX(void){unsignedchar{P4OUT=seg[x];//再送P4}}13RS232口收發(fā)送發(fā)送:從單片機P1、P2入按鍵信號,PCRS232C口接接收:PC機由RS232C口發(fā)送數(shù)字時,P4連接的數(shù)碼管顯示。需要發(fā)送十進3,應(yīng)該發(fā)送03。#include進制數(shù),例如voidInit(void);//voidDelay(void);voidmain(void){P1DIR=0X00;P1口方向寄存器P1P1IES=0X00;P1口中斷邊沿選擇寄存器,置1為下跳沿,置0P1IE=0XFF;P1中斷使能寄存器,置1為允許中斷,置0為P2IE=0XFF;P2中斷使能寄存器,置1為允許中斷,置0為P4DIR=0XFF;//設(shè)置P4口方向寄存器,使P4口為輸出WDTCTLWDTPWWDTHOLD;Init();C_BIS_SR(LPM1_bits);CSCG0=0x0040,進入LPM1CPUOFF=0x0010CPU_NOP();C}voidInit(void){UCTL0&=~SWRST;//USART控制寄存器UCTL0,SWRST=0x01,~SWRST=0xFEUCTL0=0X10;//8位數(shù)據(jù),1位停止位UBR000x03;//9600波特率,32kHz時鐘UBR10=0x00;UMCTL0=TL00X10;4位置1,選擇輔助時鐘ACLK1ME1|=UTXE0+URXE0;//模塊允許寄存器ME1//UTXE0=0x80//URXE0=0x40P3SEL|=BIT4+BIT5;//P3口第4、5Page9ofP3DIR|=BIT4+BIT5;//P3口的第4、5IE1|=URXIE0;IE1,第6位為1,使能接收中斷}errupt[PORT1_VECTOR]voidPORT1(void)P3DIR|=BIT4+BIT5;//P3口的第4、5IE1|=URXIE0;IE1,第6位為1,使能接收中斷}errupt[PORT1_VECTOR]voidPORT1(void)//P1{if(P1IFG&BIT0)0位為1{Delay();{TXBUF0=0X30;USART的發(fā)送緩沖器送數(shù)字“0”P1IFG&=~BIT0;}//清除中斷標志}{TXBUF0=0X31;{TXBUF0=0X32;{TXBUF0=0X33;P1IFG&=~BIT3;}{TXBUF0=0X34;{TXBUF0=0X35;{TXBUF0=0X36;{TXBUF0=0X30;}errupt[PORT2_VECTOR]voidPORT2(void)//P2{}Page10of{TXBUF0=0X38;{TXBUF0=0X39;{TXBUF0=0X38;{TXBUF0=0X39;{TXBUF0=0X30;{TXBUF0=0X30;{TXBUF0=0X30;P2IFG&=~BIT5;{TXBUF0=0X30;P2IFG&=~BIT6;}{TXBUF0=0X30;P2IFG&=~BIT7;}}voidDelay(void){unsignedlongi;}errupt[UART0RX_VECTOR]voidUART0RX(void){unsignedcharx=RXBUF0;//將接收緩沖器的內(nèi)容賦予xP4OUT=seg[x];P4口顯示,需要PC機發(fā)送}9.2簡單控制類單片機程1時控制程Page11of#include<msp430x14x.h>unsigneddata1;voidmain{unsignedunsignedcharseg[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};WDTCTL=WDTPW+WDTHOLD;//設(shè)置看門狗控制寄存器,關(guān)看門狗#include<msp430x14x.h>unsigneddata1;voidmain{unsignedunsignedcharseg[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};WDTCTL=WDTPW+WDTHOLD;//設(shè)置看門狗控制寄存器,關(guān)看門狗0TACLR;//A////CCTL0=CCIE;CCR0=16384;P3DIR=0XFFP3=////p4初始化while(1)while{x1=data1%10;//個位y1=data1/10;//十位P5OUT=seg[y1];//顯示if(data1==0)if(data1==2)}}]////TIMERA0_VECTOR=6*2,等{//P3OUT^=BIT7;將P3.7引腳取反,就是使發(fā)光二極管閃爍if(data1>=3)}2.按鍵中斷顯示程#include<msp430x14xh>voiddelay( unsignedkeyvaluep1;unsignedkeyvaluep2;//unsignedv;voidmain(void){WDTCTL=WDTPWWDTHOLD;//p3P3DIR0XFF;P3//p4Page12ofP4DIR=0XFFP4為輸出P5DIR=0XFFP5為輸出//P1////P1//P2P4DIR=0XFFP4為輸出P5DIR=0XFFP5為輸出//P1////P1//P2//P1//P2while(1)while{P5OUT=seg[keyvaluep2];//顯示}}void {}{unsigned////temp//if{{case1:keyvaluep1=0;break;case2:case4:case8:case16:case32:case64://case128:}}}//port2的中斷服務(wù)程序errupt[PORT2_VECTORvoidPORT2void){unsignedchartemp1;if{{case1:keyvaluep2=8;break;case2:case4:Page13ofcase8:case16:case32:case64:case128:case8:case16:case32:case64:case128:}}}3.90延時開關(guān)程P1.0第一次按下時,P3.0P3.190秒后全滅。P4、5#include<msp430x14xh>errupt[PORT1_VECTOR]voidPORT1(void);voiddelay( unsigneddata1;voidmain(void){unsignedse;unsigned//WDTCTL=WDTPW+WDTHOLD;//設(shè)置看門狗控制寄存器,關(guān)看門狗0TACLR;//A////CCTL0=CCIE;CCR0=16384;TACTL|MC0;A控制寄存器,MC0=0x0010//CP3DIR=0XFF;P3為輸出P4DIR=0XFF;//P4為輸出P5DIR=0XFF;//P5為輸出swhile(1)while{x1=data1%10;//個位y1=data1/10;//十位P5OUT=seg[y1];//顯示if(se==0&&keyvaluep1==0se=1;if(se==1&&//P1////P1//P2//P1//P2Page14ofse=2;ifse==2&&data1==15)//data1se=0;}}errupt[TIMERA0_VECTORvoidTimer_A(void)se=2;ifse==2&&data1==15)//data1se=0;}}errupt[TIMERA0_VECTORvoidTimer_A(void)A的CC0//TIMERA0_VECTOR=6*2,等{//P3OUT^BIT7;將P3.7}void {}////port1的中斷服務(wù)程序{unsignedtemp1;//局部變量://temp//if{{case1:keyvaluep1=0;break;case2:case4:case8:case16:case32:case64://case128:}}}4.鄉(xiāng)村小路交叉大路的交通燈程說明:小路有傳感器p1.0,有車時, #include<msp430x14xh>voidvoid //unsigneddata1;//全局變量,用于傳遞時間unsignedkk;voidmain{unsignedse;unsignedPage15ofWDTCTL=WDTPW+WDTHOLD;//設(shè)置看門狗控制寄存器,關(guān)看門狗0TACLR;//A////WDTCTL=WDTPW+WDTHOLD;//設(shè)置看門狗控制寄存器,關(guān)看門狗0TACLR;//A////CCTL0=CCIE;CCR0=16384;TACTL|MC0;A控制寄存器,MC0=0x0010//CP3DIR=0XFF;P3為輸出P4DIR=0XFF;//P4為輸出P5DIR=0XFF;//P5為輸出se=0;while(1)while{x1=data1%10;//y1=se;//P1IN;//data1/10;//十位P4OUT=seg[x1];顯示個位P5OUT=seg[y1];顯示十位if(se==0&&data1==4//P1{P3OUT=0X7D;//主路紅,小路綠se=1;if(se==1&&data2==7&&se=2;if(se==2&&data1==4se=3;if(se==3&&(data1==9||sdata1=0;}//0}}errupt[TIMERA0_VECTORvoidTimer_A(void)A的CC0//TIMERA0_VECTOR=6*2,等{//P3OUT^BIT7;將P3.7if(data2>=7)}void {//77//Page16of}void//P1.0{if(P1IN==0xFE)//如果按鍵按{if(P1IN==0xFE)//}}}void//P1.0{if(P1IN==0xFE)//如果按鍵按{if(P1IN==0xFE)//}}P6.1//unsignedunsignedADresult0,ADresult1;//設(shè)置A/D轉(zhuǎn)換結(jié)果變voidAdcvolt(void);voidmain(void){a[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//數(shù)

溫馨提示

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

評論

0/150

提交評論