求MSP430 的 4*1键盘的控制程序,想用4*1键盘控制PWM波的输出

2019-07-16 18:38发布

本帖最后由 gk320830 于 2015-3-4 12:29 编辑

#include <msp430x11x1.h>//输出PWM可以输出,按键出现问题
#define keyin    (P1IN & 0x0f)
void delay(void);
void main(void)
{
  unsigned char temp;
  P1DIR = BIT7;               //设置P1.0~P.3为输入状态,P.7为输出
  P1OUT = 0;
  WDTCTL = WDTPW + WDTHOLD;
  P1SEL|=BIT2;
  P1DIR|=BIT2;
   while(1)
    {
       TACTL|=MC_1+TASSEL_1;
       TACCTL1=OUTMOD_7;
       TACCR0=33-1;
       TACCR1=8;//调整参数输出了20%的PWM波
        if(keyin != 0x0f)       //如果有键被按下
        {
            delay();            //延时消抖
            if(keyin != 0x0f)   //再次检测按键状态
            {
                temp=keyin;
                while(keyin != 0x0f);   //等待按键被放开
                switch(temp)    //转换键值   
                {
                case 0x0e:
                             TACCR1=8;break;
                case 0x0d:
                             TACCR1=16;break;
                case 0x0b:
                             TACCR1=24;break;
                case 0x07:
                             TACCR1=32;break;
                default:
                             TACCR1=0;break;
                }
            }
        }
    }
}
void delay(void)
{
    unsigned int tmp;
    for(tmp = 12000;tmp > 0;tmp--);
}
求大神解答

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。