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

 

上一篇:MSP430定时器应用


下一篇:电子技术经典资料汇总:嵌入式开发12.9G