我用单通道单次转换试了
能读出来数据
Proteus7.8版读的不准但有数据
Proteus8.1版很准确
void main(void)
{
uchar i;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P3DIR = 0XFF;P3OUT = 0XFF; //端口配置
P4DIR = 0XFF;P4OUT = 0XFF;
ADC12CTL0 = SHT0_2 + ADC12ON; // Set sampling time, turn on ADC12
ADC12CTL1 = SHP; // Use sampling timer
ADC12IE = 0x01; // Enable interrupt
ADC12CTL0 |= ENC; // Conversion enabled
P6SEL |= 0x01; // P6.0 ADC option select
Init_LCD();
for (;;)
{
ADC12CTL0 |= ADC12SC; // Sampling open
_BIS_SR(GIE); // LPM0, ADC12_ISR will force exit
for(i=0;i<4;i++)
{
LCD_Wdat(a1
+0x30);
}
}
}
// ADC12 interrupt service routine
#pragma vector=ADC12_VECTOR
__interrupt void ADC12_ISR (void)
{
ADC_Result=ADC12MEM0;
a1[0]=(ADC_Result)/1000;
a1[1]=(ADC_Result)/100%10;
a1[2]=(ADC_Result)%100/10;
a1[3]=(ADC_Result)%10;
}
这是我的单通道设置直接显示ADC_MEM的值没有处理
后面注释不用管
我用单通道单次转换试了
能读出来数据
Proteus7.8版读的不准但有数据
Proteus8.1版很准确
void main(void)
{
uchar i;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P3DIR = 0XFF;P3OUT = 0XFF; //端口配置
P4DIR = 0XFF;P4OUT = 0XFF;
ADC12CTL0 = SHT0_2 + ADC12ON; // Set sampling time, turn on ADC12
ADC12CTL1 = SHP; // Use sampling timer
ADC12IE = 0x01; // Enable interrupt
ADC12CTL0 |= ENC; // Conversion enabled
P6SEL |= 0x01; // P6.0 ADC option select
Init_LCD();
for (;;)
{
ADC12CTL0 |= ADC12SC; // Sampling open
_BIS_SR(GIE); // LPM0, ADC12_ISR will force exit
for(i=0;i<4;i++)
{
LCD_Wdat(a1+0x30);
}
}
}
// ADC12 interrupt service routine
#pragma vector=ADC12_VECTOR
__interrupt void ADC12_ISR (void)
{
ADC_Result=ADC12MEM0;
a1[0]=(ADC_Result)/1000;
a1[1]=(ADC_Result)/100%10;
a1[2]=(ADC_Result)%100/10;
a1[3]=(ADC_Result)%10;
}
这是我的单通道设置直接显示ADC_MEM的值没有处理
后面注释不用管
举报