




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C例C例Page1ofMSP430C語言編程。MSP430C語言編程。8P38P2口相連,引腳號標在按鈕上方C語言編程MSP430C語言編#include<msp430x14x.h>//voidmain(void)//主函數{庫i;WDTCTL=WDTPW+WDTHOLD;P3DIR|=BIT0;P3.0為輸出,這里BIT0=0x0001while(1)//無限次while循環{for(i=0;i<20000;i++)//for語句,i為循環變量,i每次循環加1,當i<20000P3OUT=0x00;P3.0輸出低電平,發光二極管亮,(低電平使發光二極管亮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:定時器控制的發光二極管閃爍。這里使用了源。用定時器A定時1s,發光二極管滅0.5s,亮.0.5sPage2of的32768Hz低頻晶體振蕩器作為時#include<msp430x14x.h>voidmain(void){WDTCTL=WDTPWWDTHOLD;TACTL=0TACLR;A//TACLR=0x0004,清除定時器ACCTL0CCIE;//設置捕獲/比較控制寄存器,CCIE=0x0010CCR0=16384; #include<msp430x14x.h>voidmain(void){WDTCTL=WDTPWWDTHOLD;TACTL=0TACLR;A//TACLR=0x0004,清除定時器ACCTL0CCIE;//設置捕獲/比較控制寄存器,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連接的發光二極管閃爍(1)XT2時鐘源,8MHz頻率,用定時器A分頻,產生1sP3.7引腳的發光二極管閃爍#include<msp430x14x.h>#defineXTOFF0x40;voidmain(void){WDTCTL=WDTPWWDTHOLD;BCSCTL1&=BCSCTL2SELSDIVS1DIVS0;BCSCTL2設置,第3位置1TACTLCCTL0=CCIE;//CCIE=0x0010,使能定時器A中斷CCR0=62500;//設置計數器CCR0的初值,((8MHz/8)/8)/2=62500,相當于0.5s的時間P3DIR|=BIT7;//將P3.7設置為輸出();//調用C430while(1);}errupt[TIMERA0_VECTOR]voidTimer_A(void)//定時器A{P3OUT^=BIT7;//P3.7}(2)使用32768Hz晶體產生1s信號的程序如下voidmain(void){WDTCTL=WDTPW+WDTHOLD;TACTL=TA CCTL0=CCIE;CCR0=16384;P3DIRPage3of}{P3OUT^=}(3)看門}{P3OUT^=}(3)看門狗使輸出P3.7引腳連接的發光二極管每秒閃爍一次的例子voidmain(void){WDTCTL=WDTPW+WDTTMSEL+WDTP3DIR;}{T_VECTOR]voidWDT_erruptP3OUT^=}5P4P5輸出口連接的數碼管顯示12#include<msp430x14x.h>voidmain(void){unsignedchar//hgfg//0=1100//1=1111//2=1010//9=1001WDTCTL=WDTPW+WDTHOLD;P4DIR=0XFF;//設置P4口為輸出}6P5口連接的數碼1P4口相連的數碼管顯示數字8#include<msp430x14x.h>voidmain(void){i,x; unsignedcharseg[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};P4DIR=0XFF;//P4口為輸出,連接有共陽極數碼管P5DIR=0XFF;//P5口為輸出,連接有共陽極數碼管P4OUT=seg[8];//P4輸出數字8P5OUT=seg[0];//P5輸出數字0while(1)//無限次While{for(i=0;i<=9;i++)//循環變量I從0到9循環for(x=0;x<20000;x++)for循環,用于延遲時間P5OUT=seg[i];//按照循環變量i的數值,取出相應的數組元素}}例0開始計時,數碼管顯示~60秒,每隔1秒使數碼管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計數器CCTL0=CCIE;//使能定時器A捕捉與中斷功能,CCIE=0x0010CCR0=32768;//設置計數器CCR0初值TACTL|=MC0;CCR0初值P3DIR=0XFF;//P3口為輸出P4DIR0XFF;//P4口為輸出P5DIR0XFF;//P5P3OUT0X7E;//P3口輸出為0111();調用C430while(1);while}errupt[TIMERA0_VECTOR]voidTimer_A(void)A{i+=1;i每次循環加1if(i==10){ j+=1;j每次加P3OUT^=bit[j];j個元素取反后從P3口輸出,使發光二極管順序點亮if(j==6)//如果j=6{j=0;}}P4OUT=seg_7[i];//數碼管字型數組中取第i個元素,送到P4口輸出P5OUTseg_7[j];j個元素,送到P5口輸出}例8:連接在P1.0口的按鍵控制數碼管顯示數值,數碼管顯示按動次數#include<msp430x14x.h>//charKey_Pressed(void);//voidmain(void){unsignedchari=0;WDTCTLWDTPWWDTHOLD;P1DIR&=~BIT0;//P1.0引腳設置成輸入,該引腳連接的按鍵按下時,按鍵輸出低電平P4DIR=0xff; P4OUT=seg[8];//P4口輸出數字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循環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循環if(!(P1IN&BIT0))P1輸入寄存器P1IN的第0位還是0,則返回1,表示按鍵按下return1;return}使用AD單通道多次轉換P6.0輸入的模擬電壓值(變化范圍:0~3.3V),轉換為數字建立二維數組和通過順序查表的方法得回來的電壓值。然后通過數碼管顯示當前電壓值,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口設置為輸出P5DIR0XFF;//P5ADC12CTL0|=ENC+ADC12SC;//設置轉換控制寄存器ADC12CTL0,ENC=0x002使轉換允許位為while}voidInit(void){WDTCTL=WDTPW+WDTHOLD;P6SEL|=0x01;ADC12CTL0&=~ENC;P6口的P6.0ADC12CTL0=ADC12ON+SHT0_2+REFON+//TurnonandsetupADC12CTL1SHPCONSEQ_2;//設置AD轉換控制寄存器ADC12CTL1Page6ofSHP=0x0200SAMPON//CONSEQ_2=2*2ADC12MCTL0SREF_0;//設置通道0選擇參考電壓為VR=AVCC,VR-=AVSSADC12IE|=}errupt[ADC_VECTOR]voidADC12(void)//AD{unsignedSHP=0x0200SAMPON//CONSEQ_2=2*2ADC12MCTL0SREF_0;//設置通道0選擇參考電壓為VR=AVCC,VR-=AVSSADC12IE|=}errupt[ADC_VECTOR]voidADC12(void)//AD{unsignedcharunsignedcharunsignedADC12CTL0&=~ENC;//設置AD轉換控制寄存器ADC12CTL0,ENC=0x002,~ENC=0xFFD,停止ADfori=0i<4;i++)//掃描Table數組行下{for(j=0;j<10;{if};//如果Table}:{P4OUTseg_7[j];//P4P5OUT=seg_8[i];ADC12CTL0|ENC+ADC12SC;//使能再次轉}例10P2.3(~3.3V0.5VCCP2.3,P1.0LED注意:順時針調節電位器,輸入的模擬電壓值增大#include<msp430x14x.h>voidmain(void){P3DIR|=CACTL1=CARSELCAREF1CAON;//設置控制寄存器//CAON=0x08,打開比較器CACTL2P2CA0;while(1)//無限次循環{if((CACTL2&CAOUTCAOUT)//CAOUT=0x01,如果比較器輸出為P3OUT&=P3OUT|=}}:單片機UART以9600PC發送字符Data[Page7of#includevoidcharData[20]="xialaoshinihao!";voidmain(void){WDTCTL=WDTPW+#includevoidcharData[20]="xialaoshinihao!";voidmain(void){WDTCTL=WDTPW+Init();//調用初始化函數while(1)//無限次循環{{TXBUF0=Data[i];}}}TL0&0x01)==0);void{UCTL0&=~SWRST;//USART控制寄存器UCTL0,SWRST=0x01,~SWRST=0xFEUCTL0=0X10;//UCTL0的第4位置1,設置數據長度為8位,第5位為0,設置1位停止位UBR00=0x03;//使用32768Hz晶體,波特率為9600UBR10=0x00;UMCTL0=TL00X10;4位置1,選擇輔助時鐘ME1|=UTXE0ME1,UTXE0=0x80,設置ME1的第7位為 P3DIR|=BIT4;//P3口方向寄存器的第4位置1,選擇輸出}12:MSP430F149USARTPC盤輸入的數值并顯示在串口調試助手中的發送區選中進制發送”和“自動發送”進制形式,以字節為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口收發送發送:從單片機P1、P2入按鍵信號,PCRS232C口接接收:PC機由RS232C口發送數字時,P4連接的數碼管顯示。需要發送十進3,應該發送03。#include進制數,例如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;//設置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位數據,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的發送緩沖器送數字“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;//將接收緩沖器的內容賦予xP4OUT=seg[x];P4口顯示,需要PC機發送}9.2簡單控制類單片機程1時控制程Page11of#include<msp430x14x.h>unsigneddata1;voidmain{unsignedunsignedcharseg[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};WDTCTL=WDTPW+WDTHOLD;//設置看門狗控制寄存器,關看門狗#include<msp430x14x.h>unsigneddata1;voidmain{unsignedunsignedcharseg[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};WDTCTL=WDTPW+WDTHOLD;//設置看門狗控制寄存器,關看門狗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引腳取反,就是使發光二極管閃爍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的中斷服務程序errupt[PORT2_VECTORvoidPORT2void){unsignedchartemp1;if{{case1:keyvaluep2=8;break;case2:case4:Page13ofcase8:case16:case32:case64:case128:case8:case16:case32:case64:case128:}}}3.90延時開關程P1.0第一次按下時,P3.0P3.190秒后全滅。P4、5#include<msp430x14xh>errupt[PORT1_VECTOR]voidPORT1(void);voiddelay( unsigneddata1;voidmain(void){unsignedse;unsigned//WDTCTL=WDTPW+WDTHOLD;//設置看門狗控制寄存器,關看門狗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的中斷服務程序{unsignedtemp1;//局部變量://temp//if{{case1:keyvaluep1=0;break;case2:case4:case8:case16:case32:case64://case128:}}}4.鄉村小路交叉大路的交通燈程說明:小路有傳感器p1.0,有車時, #include<msp430x14xh>voidvoid //unsigneddata1;//全局變量,用于傳遞時間unsignedkk;voidmain{unsignedse;unsignedPage15ofWDTCTL=WDTPW+WDTHOLD;//設置看門狗控制寄存器,關看門狗0TACLR;//A////WDTCTL=WDTPW+WDTHOLD;//設置看門狗控制寄存器,關看門狗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;//設置A/D轉換結果變voidAdcvolt(void);voidmain(void){a[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//數
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智慧林業推動林業生產力提升的路徑研究
- 能源業務培訓課件
- 2025至2030中國運動頭帶行業項目調研及市場前景預測評估報告
- 2025至2030中國前列地爾行業發展趨勢分析與未來投資戰略咨詢研究報告
- 2025至2030中國墻紙行業發展趨勢與發展趨勢分析與未來投資戰略咨詢研究報告
- 2025至2030中國散熱底座行業營銷策略與競爭格局分析報告
- 系統防范極端氣候下突發環境事件風險的策略及實施路徑
- 2025年中國UPVC配水管數據監測報告
- 2025年中國PE點斷塑料袋數據監測報告
- 2025年中國FR條紋蓮花數據監測研究報告
- GB/T 28575-2020YE3系列(IP55)三相異步電動機技術條件(機座號63~355)
- 國際公法學 馬工程課件 4 第四章
- 青海省西寧市《職業能力測試》事業單位國考真題
- 溝通中的提問技巧課件
- 2023年浙江黃龍體育發展有限公司招聘筆試模擬試題及答案解析
- 外科學骨折概論課件
- 阿片類藥物鎮痛機制課件
- 產品成本核算流程圖
- 母線槽安裝檢驗批質量驗收記錄
- 生物吸附課件
- 游泳池水質檢測記錄表
評論
0/150
提交評論