产生pwm 占空比可变 请问程序下进去没反映啊

2019-03-24 14:49发布

#include <msp430x14x.h>
#define uint unsigned int
#define uchar unsigned char

#define keyin    (P1IN & 0x0F)
void delay(void);
void main(void)
{
    uchar temp= 0;
    uint PWM_T = 1000;   //占空比控制变量
    WDTCTL = WDTPW + WDTHOLD;   //关闭看门狗
    P6DIR |= BIT2;P6OUT |= BIT2;//关闭电平转换
    P1DIR = BIT7;               //设置P1.0~P.3为输入状态,P.7为输出
    P1OUT = 0;
    P2DIR=0XFF;
    P1DIR |= 0x04;                            // P1.2 输出
    P1SEL |= 0x04;                            // P1.2 TA1模式
    P3DIR |= BIT4;              //设置P3.4为输出状态
    //P3OUT |= BIT4;              //P3.4输出1
   

  TACTL = TASSEL_1  + MC0;         // ACLK, 清零Tar,增模式启动Timer_A
   CCR0=65535-1;                        // PWM 周期2S
  CCTL1 = OUTMOD_7;                     // CCR1 reset/set模式
   CCR1= PWM_T ;                        // CCR1 PWM 任务周期
   

while(1)
    {
        if(keyin != 0x0f)       //如果有键被按下
        {
            delay();            //延时消抖
            if(keyin != 0x0f)   //再次检测按键状态
            {
                temp=keyin;
                while(keyin != 0x0f);   //等待按键被放开
                switch(temp)    //转换键值   
                {
                case 0x0e:
                            P2OUT&=~BIT3;break;//1110CCR1= ++PWM_T
                case 0x0d:
                            CCR1= --PWM_T ;break;//1101
                case 0x0b:
                            break;//1011
                case 0x07:
                            break;//0111
                default:
                            CCR1= PWM_T ;break;                       
                }
                P3OUT &= ~BIT4;           //P3.4连接的LED闪烁一下
                delay();delay();
                P3OUT |= BIT4;
                _BIS_SR(LPM3_bits);                 // 进入LPM3省电模式
               // _NOP();                             // C-spy使用
            }
        }
    }
}
/*******************************************
函数名称:delay
功    能:用于消抖的延时
参    数:无
返回值  :无
********************************************/
void delay(void)
{
    uint tmp;
   
    for(tmp = 1000;tmp > 0;tmp--);
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
t_shaojun126
2019-03-25 08:21
再麻烦您一下 请问我的程序 按键 没反应怎么回事 我把相应的按键 设置成灯亮也没反映啊 我卡住了

一周热门 更多>

相关问题

    相关文章