| 
 
| 我用C8051F350,利用其自带的差分AD采样外部压力传感器传递过来的差分信号。 其中AD0-AD1,对应传感器A,其中AD2-AD3,对应传感器B.
 
 要求是实时采样A\B两个传感器的信号,所以我采样一次A传感器,便切换到B传感器采样一次,再切换到A传感器采样一次,周而复始。
 
 遇到的问题如下:
 单独采样A或者B传感器均正确。
 循环切换采样A\B两个传感器时,A传感器信号变大,B传感器信号不变,采样的结果是A\B两个传感器信号均变大;
 同样,B传感器信号变大,A传感器信号不变,采样结果也是A\B同时变大。
 信号变小,情况也是这样。
 
 费解啊,现将采样部分代码和通道切换代码贴到下面,求指教。
 void ADC0_ISR (void) interrupt 10
 {
 static LONGDATA rawValue;
 unsigned long mV;
 
 while(!AD0INT);                     // Wait till conversion complete
 AD0INT = 0;                         // Clear ADC0 conversion complete flag
 
 // Copy the output value of the ADC
 rawValue.Byte[Byte3] = 0x00;
 rawValue.Byte[Byte2] = (unsigned char)ADC0H;
 rawValue.Byte[Byte1] = (unsigned char)ADC0M;
 rawValue.Byte[Byte0] = (unsigned char)ADC0L;
 
 
 mV = 0;
 mV = rawValue.result  / 690;        //  mV = rawValue.result *10  / 6710;放大10倍          16776802         16738484
 
 
 ADC0MD  &= ~0x70;                           //使AD空闲
 
 if(ADC0MUX == 0x01 )          //切换通道
 {
 ADC0MUX = 0x32 ;
 
 printf("RIGHT:AA55%5ld55AA",mV);
 }
 else if(ADC0MUX == 0x32 )//切换通道
 {
 ADC0MUX = 0x01;
 
 printf("    LEFT:AA55%5ld55AA\r\n",mV);
 }
 
 
 ADC0MD = 0x83;                //使能AD
 
 
 }
 | 
 |