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

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日

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况