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

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日

悬赏问题

  • ¥15 Attributeerror:super object has no attribute '__sklearn_tags__'_'
  • ¥15 逆置单链表输出不完整
  • ¥15 宇视vms-B200-A16@R启动不了,如下图所示,在软件工具搜不到,如何解决?(操作系统-linux)
  • ¥500 寻找一名电子工程师完成pcb主板设计(拒绝AI生成式答案)
  • ¥15 关于#mysql#的问题:UNION ALL(相关搜索:sql语句)
  • ¥15 matlab二位可视化能否针对不同数值范围分开分级?
  • ¥15 已经创建了模拟器但是不能用来运行app 怎么办😭自己搞两天了
  • ¥15 关于#极限编程#的问题,请各位专家解答!
  • ¥20 win11账户锁定时间设为0无法登录
  • ¥45 C#学生成绩管理系统