3428|8

54

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

产生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;//关闭电平转换
    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--);
}

最新回复

按键哪一个呀?和硬件相关,我没仔细看 P1DIR |= 0x04; // P1.2 输出 P1SEL |= 0x04; // P1.2 TA1模式 1.2位按键?那怎么能设为输出呢?  详情 回复 发表于 2012-3-11 14:34
 
点赞 关注

回复
举报

5276

帖子

5

TA的资源

裸片初长成(中级)

沙发
 
没仔细看,也那么多括号

_BIS_SR(LPM3_bits); // 进入LPM3省电模式
停在这里了吧?
 
 

回复

54

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

回复 沙发 wangfuchong 的帖子

请问大侠  我这个通过按键调节占空比的的PWM信号 程序 还有问题吗,可以实现吗? 非常感谢您的指导
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

4
 
唉,碰到了
说的不一定对,也没多看,自己查资料,我错了,正好是您加深印象的机会,反正看样子您是刚接触不久的

产生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 编辑 ]
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

54

帖子

0

TA的资源

一粒金砂(中级)

5
 

回复 4楼 wangfuchong 的帖子

谢谢您的指教 学生我刚学习430F149不久 自己学的不太明白 都是自学 有点困难 希望长辈不吝赐教 非常感谢您的指教
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(中级)

6
 

回复 沙发 wangfuchong 的帖子

再麻烦您一下 请问我的程序 按键 没反应怎么回事 我把相应的按键 设置成灯亮也没反映啊 我卡住了
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(中级)

7
 

回复 沙发 wangfuchong 的帖子

是不是我延时不够啊   还是P1.2与键盘有冲突啊

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

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

8
 
按键哪一个呀?和硬件相关,我没仔细看

P1DIR |= 0x04; // P1.2 输出
P1SEL |= 0x04; // P1.2 TA1模式

1.2位按键?那怎么能设为输出呢?
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

54

帖子

0

TA的资源

一粒金砂(中级)

9
 

回复 8楼 wangfuchong 的帖子

我之后改成p2.3口输出,可以实现TA1输出吧
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表