简单PWM的生成其实很简单,CCR0和时钟控制周期,CCR1控制占空比,如图:
用按键来控制占空比
器件是430G2452
用开发板是的按键P1.3中断,来控制LED1和LED2 分别是P1.0和P1.6的通断。从而达到控制亮灭的目地
IAR有一个很不好的地方,就是设仿真器默认是模拟的,要改成硬仿真
#include <msp430x20x2.h>
#define LED0 BIT0
P1IFG &= ~BUTTON; // 清除按键中断标志
__enable_interrupt(); // enable all interrupts
}
#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; // 按键中断使能
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 中断标志清除