进入AD之后无法跳出AD服务中断函数,请教各位大神指教!谢谢,以下是代码:/*************************************************************************** 函数名称:main** 工作环境: IAR 5.22 ** 相关文件:** 修改日志:功能: AD转换多通道多次转换*************************************************************************/#define Num_of_Results 32static unsigned int resultss[36]; // 转换值存取变量volatile long temp;volatile long IntDegC;void main(void){ unsigned int i; WDTCTL = WDTPW+WDTHOLD; // 关闭看门狗 UCSCTL4 = SELM__DCOCLK + SELS__DCOCLK; // 选择时钟源 P6DIR &= ~(BIT2 + BIT3 + BIT4); // 选择6.2,6.3,6.4口为输入端口 P6SEL |= (BIT2 + BIT3 + BIT4); // P6口第二功能 ADC12CTL2 = ADC12RES_2 + ADC12REFOUT; // AD基本配置 ADC12CTL0 = ADC12ON + ADC12MSC + ADC12SHT03 + ADC12REFON + ADC12REF2_5V; //ADC12MCTL10 |= ADC12SREF_0 + ADC12INCH_10; // 采样温度 ADC12MCTL2 |= ADC12SREF_0 + ADC12INCH_2; // 采样6.2端口数据输入 ADC12MCTL4 |= ADC12SREF_0 + ADC12INCH_4 + ADC12EOS; // 采样6.4端口数据输入 ADC12CTL1 = ADC12SHP + ADC12CONSEQ_3; // 选择转换模式 for (i=0;i<0xFFFF;i++); // 等待基准电压建立 UCSCTL8 |= MODOSCREQEN; ADC12IE |= 0X08; // 使能通道4中断 ADC12CTL0 |= ADC12ENC; // 开启转换 _EINT(); // 打开总中断 ADC12CTL0 |= ADC12SC; // 转换开始// while (!(ADC12IFG & BIT0)); //display1(sj); //LPM3; // 进入低功耗3}/*************************************************************************** 函数名称:AD转换中断函数** 工作环境: IAR 5.22** 功能: 保存转换值** 相关文件:** 修改日志:*************************************************************************/#pragma vector = ADC12_VECTOR__interrupt void ADC12ISR(void){ static uint index = 0; resultss[index++] = ADC12MEM2; // Move results if(index == Num_of_Results) uchar i; unsigned long sum = 0; index = 0; for(i = 0; i < Num_of_Results; i++) { sum += resultss; } sum >>= 5; Trans_val(sum); delay1(200); //ADC12CTL0 &= ~ADC12ENC; //ADC12CTL0 &= ~ADC12ON; //_DINT(); } } |
共 2 个关于本帖的回复 最后回复于 2014-7-24 15:42