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

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条回答 默认 最新

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

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

      悬赏问题

      • ¥15 结构体数组文件读取问题
      • ¥15 写c++代码,第7题说一下使用的计算方法
      • ¥15 postman接口自动化测试报告实践总结
      • ¥15 有关c++的问题,利用相关知识
      • ¥15 求香农编码和解码的matlab代码
      • ¥20 ROS中的TEB局部规划问题
      • ¥20 关于#matlab#的问题:要求测出上面图片中所有同心圆的半径
      • ¥20 epanet软件运行问题
      • ¥15 Python 文件读取
      • ¥60 dpabi进行Alff计算时脑池有干扰信号