智能车制作

标题: AD转换是否完成的判断 [打印本页]

作者: akueiye    时间: 2009-4-7 22:14
标题: AD转换是否完成的判断
AD转换中判断转换是否完成,读ATD0STAT1_CCFx的值 或者读ATD0STAT0_SCF的值有什么不同么?有什么特别需要注意的地方?

这是我编的一段检测mcu能否采集到探测器的信号,最终只得到  case 8: PORTB=0xf0;  这个状况的灯亮。希望高手帮忙诊断一下,感激不尽!!
void main(void)
{   int max,AD_wData[10],i,m;
    max=AD_wData[0];
    DDRB=0XFF;
    PORTB=0xff;
    while(1)
    {
    ATD0CTL2=0XC2;
    ATD0CTL3=0X38;
    ATD0CTL4=0Xe3;
    ATD0CTL5=0XB0;
    ATD0DIEN=0X00;
  
    ATD1CTL2=0XC2;
    ATD1CTL3=0X18;
    ATD1CTL4=0Xe3;
    ATD1CTL5=0XB4;
    ATD1DIEN=0X00;
   
   
    while(ATD0STAT0_SCF==0);
     
    AD_wData[0] = ATD0DR0L;
    AD_wData[1] = ATD0DR1L;
    AD_wData[2] = ATD0DR2L;
    AD_wData[3] = ATD0DR3L;
    AD_wData[4] = ATD0DR4L;
    AD_wData[5] = ATD0DR5L;
    AD_wData[6] = ATD0DR6L;
  
    while(ATD1STAT0_SCF==0);
   
    AD_wData[7] = ATD1DR6L;
    AD_wData[8] = ATD1DR5L;
    AD_wData[9] = ATD1DR4L;
   
    for(i=0;i<10;i++)
    {
    if(AD_wData[i]>max)
    max=AD_wData[i];
    m=i;
    }
    switch(m)
    {
     case 0: PORTB=0xfe;        break;
     case 1: PORTB=0xfd;        break;
     case 2: PORTB=0xfb;        break;
     case 3: PORTB=0xf7;        break;
     case 4: PORTB=0xef;        break;
     case 5: PORTB=0xdf;        break;
     case 6: PORTB=0xbf;        break;
     case 7: PORTB=0x7f;        break;
     case 8: PORTB=0xf0;        break;
     case 9: PORTB=0x0f;        break;
    }
     
    }
}
作者: zhaodong584    时间: 2009-4-7 22:14
你出来的应该是case9吧
if(AD_wData[i]>max)
    max=AD_wData[i];
    m=i;
是不是少加括号 了?
作者: yudongx    时间: 2009-4-8 00:08
我觉得是程序里AD模块初始化的时候那几个寄存器有问题
作者: yyjz    时间: 2009-4-8 20:18
你显示的肯定是case 9 啊
作者: akueiye    时间: 2009-4-12 09:42
4# zhaodong584 对,不过其他地方也有问题,现在改好了。谢谢啦!




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2