产生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条回答
wangfuchong
1楼-- · 2019-03-24 20:11
 精彩回答 2  元偷偷看……
t_shaojun126
2楼-- · 2019-03-25 00:49
< :TI_MSP430_内容页_SA7 --> 请问大侠  我这个通过按键调节占空比的的PWM信号 程序 还有问题吗,可以实现吗? 非常感谢您的指导
wangfuchong
3楼-- · 2019-03-25 06:35
唉,碰到了说的不一定对,也没多看,自己查资料,我错了,正好是您加深印象的机会,反正看样子您是刚接触不久的

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

#include 
#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;//关闭电平转换 //可能是要养成习惯,out,dir顺序颠倒一下
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   //可能要养成习惯,开定时器计数要放在定时器各设置最后。我的习惯,用MC_1更明了
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--);
}
[ 本帖最后由 wangfuchong 于 2012-3-10 19:40 编辑 ]
t_shaojun126
4楼-- · 2019-03-25 07:13
 精彩回答 2  元偷偷看……
t_shaojun126
5楼-- · 2019-03-25 08:21
再麻烦您一下 请问我的程序 按键 没反应怎么回事 我把相应的按键 设置成灯亮也没反映啊 我卡住了
t_shaojun126
6楼-- · 2019-03-25 10:56
是不是我延时不够啊&nbsp;&nbsp; 还是P1.2与键盘有冲突啊

[ 本帖最后由 t_shaojun126 于 2012-3-11 10:14 编辑 ]

一周热门 更多>

相关问题

    相关文章