这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 电源与模拟 » 利用MSP430 Launchpad PWM实现LED 的控制

共2条 1/1 1 跳转至

利用MSP430 Launchpad PWM实现LED 的控制

高工
2014-01-20 17:16:31     打赏
PWM控制LED,给出几个示例程序。

简单PWM的生成其实很简单,CCR0和时钟控制周期,CCR1控制占空比,如图:



用按键来控制占空比

器件是430G2452

用开发板是的按键P1.3中断,来控制LED1和LED2 分别是P1.0和P1.6的通断。从而达到控制亮灭的目地

IAR有一个很不好的地方,就是设仿真器默认是模拟的,要改成硬仿真


#include <msp430x20x2.h>

#define LED0 BIT0
#define LED1 BIT6 
#define BUTTON BIT3
unsigned char count;


int main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 关看门狗
P1DIR |= (LED0 + LED1); // 设LED口为输出 
P1OUT &= ~(LED0 + LED1); // 关LED先
P1IE |= BUTTON; // 按键中断使能

P1IFG &= ~BUTTON; // 清除按键中断标志

__enable_interrupt(); // enable all interrupts
for(;;)
{}
}


// P1中断服务函数
#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
  
  
  if(count==0)
  {
    P1OUT =!(LED0 +LED1); // 关LED
    count++;
  }
  else
  {
    P1OUT =(LED0 + LED1);
    count = 0;
  }
  P1IFG &= ~BUTTON; // P1.3 中断标志清除

}





关键词: MSP430     实现     控制     利用    

高工
2014-01-21 10:05:18     打赏
2楼

使用按键中断
#include  <msp430g2553.h>
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                
  P1DIR|=BIT0;
  P1OUT|=BIT0; 
P1DIR &= ~BIT3;          //P1.3输入
  P1IES=0xff;           //下降沿触发
  P1IE=0xff;
  _EINT();
  while (1);                                 
}


#pragma vector = PORT1_VECTOR
__interrupt void test(void)
{
   unsigned  int count;
   for(count=5000;count>0;count--);//去抖延时   
   if((P1IN&BIT3)!=0x08)           //按键按下   
       P1OUT^=BIT0;
   P1IFG=0x00;  
}



共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]