Time_B触发ADC12,不使用中断

2019-03-24 12:45发布

请教用Time_B为触发信号源怎么弄,不使用中断的那种。
下面是我写的,设计采样频率为15Hz,但采样频率不对。我用中断写的就可以。哪位高手帮忙看看

/*******************************************
                  ADC12初始化
*******************************************/
void ADC_Init()
{
  P6SEL|=BIT0;                             //选择ADC通道,设置对应IO口的功能模式
  ADC12CTL0 &= ~ENC;                       
  ADC12CTL0|= ADC12ON + REFON+MSC+REF2_5V; //ADC电源控制开,16个CLK,内部基准
  //采用中断
//  ADC12CTL1|=SHP+CONSEQ_1 ;                //SMCLK做时钟源
  //不采用中断
  ADC12CTL1|=SHP+SHS_3+ADC12SSEL_3;                //SMCLK做时钟源
  ADC12IE|= 0x01;                          //中断允许
}               
  TBCTL=TBSSEL_1+MC_1+TBCLR;
  TBCCTL1=OUTMOD_3;
  TBCCR0=2184;
  TBCCR1=1092;

while(1)
  {
   ADC12CTL0|=ENC+ADC12SC;   
   while((ADC12IFG&BIT0)==0);
   _NOP();
   ADC12CTL0 &= ~ENC;
   TEMP1=ADC12MEM0;
   if(TEMP1>4096)TEMP1=4095;
    if(x<RsetX)
    {
    //i是用来标记保存5个原始数据,之后做平滑处理,
      uint a;
      a=TEMP1/16;                                                                                                                       
      if(a<=0) a=0;
      if(a>=200) a=200;                                                //等到采集到第5个点的时候在做运算,之后显示
      B=a;
      i++;
      if(i>4) i=0;
      for(uint j=0;j<5;j++)
      {
        sum+=B[j];
      }
//          a=sum/5;
      if(x<RsetX-1)
        {
          GUI_Line(x-1,A[0],x,a,GREEN);
          A[0]=a;
          GUI_RLine(x+1,0,200,GRAY1);
          GUI_RLine(x+2,0,200,GRAY1);
          x++;//x增加是使坐标判断前移
        }
      else
        {
          x=10;
          GUI_RLine(9,0,200,GRAY1);
          GUI_RLine(10,0,200,GRAY1);
        }
    }
  } 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
wstt
1楼-- · 2019-03-24 23:23
 精彩回答 2  元偷偷看……
ljtyqb
2楼-- · 2019-03-25 02:51
< :TI_MSP430_内容页_SA7 --> msp430f149

一周热门 更多>

相关问题

    相关文章