YuanYong程 2021-10-20 19:34 采纳率: 0%
浏览 61
已结题

msp430f149按键调节占空比和频率我怎么调都不正确该如何写正确的程序?

代码只能完成一部分我想调节的是频率出来的却是调节占空比


```c


#include <msp430x14x.h>
#define uchar unsigned char 
#define uint unsigned int
#define keyin (P1IN & 0x0f)
uchar T[]={10,20,40,100,150,200};        //高电平持续

void delay(void)

{
  
  uint tmp;
  
  for(tmp = 12000;tmp > 0;tmp--);
  
}

int main( void )
{
  
  WDTCTL = WDTPW + WDTHOLD;
  TACTL=TASSEL_1+TACLR;
  
  uchar temp,keyval= 0;
  char i =0;
  
  CCR0=200;//PWM周期
  CCTL1=OUTMOD_7;
  CCR1=100;
  CCTL2=OUTMOD_7;
  CCR2=100;
  P2DIR |= 0x08;                       // P2.3 输出
  
  P2SEL |= 0x08;                     // P2.3 TA1
  
  P2DIR |= 0x10;                        // P2.4 输出
  
  P2SEL |= 0x10;                     // P2.4 TA2
  
  P2DIR |= 0x24;
  
  P2OUT &= (~BIT5) +(~BIT2);         //P2.2与P2.5点亮
  
  TACTL|=MC_1;//增计数模式
  while(1)
    
  {
    
    if(keyin != 0x0f)                //如果有键被按下
      
    {
      
      delay();                     //延时消抖
      
      if(keyin != 0x0f)            //再次检测按键状态
        
      {
        
        temp=keyin;
        
        while(keyin != 0x0f);    //等待按键被放开
        
        switch(temp)             //转换键值    
          
        {
          
        case 0x0e:
          
          keyval = 1;break;
          
        case 0x0d:
          
          keyval = 2;break;
          
        default:
          
          keyval = 0;break;
          
        }            
        
        if(keyval==1)            //按键加
          
        {
          P2DIR |= 0x80;
          
          P2OUT^=BIT7;        //按键指示
          
          i++;
          
          if(i>5)
            
            i=0;
          
        }
        
        if(keyval==2)            //按键减
          
        {
          
          if(i==0)
            
            i=5;
          
          else
            
            i--;
          
          P2DIR |= 0x80;
          
          P2OUT^=BIT7;          //按键指示
          
          
        }
        
      }
      
      CCR1 = T[i];                      //占空比: T[i] / 200
      
      CCR2 = T[i];                      //占空比: T[i] / 200
      
    }
  }
  
}
  • 写回答

2条回答 默认 最新

  • 有问必答小助手 2021-10-22 10:47
    关注

    你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


    本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


    因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月30日
  • 已采纳回答 10月22日
  • 创建了问题 10月20日

悬赏问题

  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法