1.流水燈
#include "msp430f149.h" #include "config.h" void delay(int i) { while(i--); } void main( void ) { WDTCTL = WDTPW + WDTHOLD;//關閉看門狗 BoardConfig(); unsigned int io=0x01,i=0;//用來控制燈亮滅,現在最低位為1,其余為為0 //初始化 P2DIR|=0xff;//設置P2所有端口為輸出方向 P2OUT=0xff; while(1) { io=0x01; for(i=0;i<8;i++) { P2OUT=~io; delay(10000); io<<=1; } } }
2.按鍵控制LED燈
#include "msp430f149.h" #include "config.h" void delay(int i) { while(i--); } void main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; BoardConfig(); _EINT(); P1IE|=0X01; P1IES!=0X01; P1IFG&=~0X01; //清除中斷標志位 //P1REN|=0X01; //使能上下拉電阻 P1OUT|=0X01; //設置為上拉電阻 P2DIR|=0X01; //設置P2.0口為輸出 P2OUT|=0X01; while(1) {; } } #pragma vector=PORT1_VECTOR __interrupt void PORT2_ISR(void)//端口2中斷 { delay(100); if(P1IFG&0X01) { while(P1IN&0X01==0);//等待 delay(500); P2OUT^=0X01;//反轉燈的亮滅狀態 } //清除中斷標志位 P1IFG&=~0X01; }
3.數碼管靜態顯示
#include "msp430f149.h" #include "config.h" void delay(int i) { while(i--); } void main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; unsigned int i=0; BoardConfig(); unsigned int data[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; P5DIR|=BIT5; P6DIR|=BIT6;//P5.5 P5.6設置為輸出方向 P6OUT&=~BIT6;//P5.6初始為低電平 P5OUT|=BIT5;//P5.5初始為高電平 P4DIR|=0XFF;//P4所有端口設置為輸出方向 P4OUT=0X00; P4OUT|=0XEF;//選擇Y4; P5OUT&=~BIT5;//關閉位選 P6OUT|=BIT6;//打開段選 P4OUT=0X3F;//首先為0 while(1) { for(i=0;i<=15;i++) { P4OUT=data[i]; delay(10000); delay(10000); delay(10000); if(i>15) { i=0; } } } }