有没有大神帮忙看看我编的AD转换有什么问题么?

2019-03-24 14:25发布

#define REFVOL 2.5 //参考电压2.5V unsigned int result[6][50]; unsigned char adc_Flag; unsigned char count_cov; uchar adcTBuff[8]; //***********************************************// // 初始化AD转换 //***********************************************// void ADC_init(void) { P6SEL = 0x1F; //选择P6的0-4口为AD转换端口 ADC12CTL0 = ADC12ON + REFON + REF2_5V + SHT0_6 + MSC; ADC12CTL1 = SHS_0 + SHP + CONSEQ_3;  ADC12MCTL0 = INCH_0 + SREF_1; //通道0,单片机P6.0口 ADC12MCTL1 = INCH_1 + SREF_1 + EOS; //通道1,单片机P6.1口 ADC12CTL1 &= 0x0fff; //设置起始采样通道为ADC12MCTL0所对应的通道 ADC12CTL0 |= ENC; //使能转换; }  //***********************************************// // 启动AD转换 //***********************************************// void ADC_start() { ADC12IE = 0x0020; //使能中断;  ADC12CTL0 |= ADC12SC; //开始采样  } //***********************************************// // 数据处理 //***********************************************//  void format_Data(void) { unsigned char m,n; for(m=0; m<5; m++) { for(n=0; n<50; n++) {  result[m][n] = (int)(((REFVOL * result[m][n]) / 4096) );  } } USART_AdcCover(result); } //***********************************************// // 中断服务程序 //***********************************************// #pragma vector = ADC_VECTOR __interrupt void ADC_Interrupt(void) { switch(ADC12IFG)  { case 0x003F:  { result[0][count_cov] = ADC12MEM0; result[1][count_cov] = ADC12MEM1; count_cov++; if(count_cov>50 || count_cov==50) { count_cov = 0; } } break;  default: break; }  format_Data(); ADC12IE &= 0X00;  delay_ms(100); }     为什么我程序测出的数值全都是0呢。。。找了半天都没找到原因。。 此帖出自小平头技术问答
0条回答

一周热门 更多>

相关问题

    相关文章