打印

请教用Time_B为触发信号源怎么弄,不使用中断的那种。

[复制链接]
1172|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
taihezhibanh|  楼主 | 2013-5-25 21:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
taihezhibanh|  楼主 | 2013-5-25 21:53 | 只看该作者
下面是我写的,设计采样频率为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);
        }
    }
  }

使用特权

评论回复
板凳
heibaiyinjiag| | 2013-5-25 22:07 | 只看该作者
你用的具体型号是什么

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

955

帖子

1

粉丝