MSP430 流水燈 按鍵控制LED燈 數碼管靜態顯示


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;
      }
    }
  }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM