- void ADC_conf(void)
- {
- ADC_CR1=0x02; //预分频,连续转换模式,禁止转换
- ADC_CR2=0x08; //禁止外部触发转换,使用内部定时器1,右对齐,禁止扫描
-
- }
- void ADC1(void)
- {
- unsigned char A;
- ADC_CSR=0x04; //输入通道4
- // ADC_TDRL=0x10; //禁止思密特触发 0x08
- ADC_CR1|=0x01; //唤醒ADC
- for(A=0;A<20;A++);
- ADC_CR1|=0x01; //启动ADC
-
- while(!(ADC_CSR&0x80)); //等待转换
- //ADC_GetConversionValue=ADC_DRH;
- //ADC_GetConversionValue=((u16t)ADC_GetConversionValue)<<8||ADC_DRL;
- ADValue=ADC_GetConversionValue();
- //ADValue=ADC_GetConversionValue;
- ADC_CSR&=0x7F; //转换结束
-
- ADValue=0;
- for(char i=0;i<50;i++)
- {
- while(!(ADC_CSR&0x80));
- //ADC_GetConversionValue=ADC_DRH;
- // ADC_GetConversionValue=((u16t)ADC_GetConversionValue)<<8||ADC_DRL;
- ADValue+=ADC_GetConversionValue();
- ADC_CSR&=0x7F;
- }
- VCC=1024.0/ADValue*125; //实际转换电压值比例
- // DelayMS(500);
- while(PD_IDR_IDR4==0)
- {
- ADC_conf();
-
- //ADC_CSR&=0x7F;
- ADC_CSR=0x03; //输入通道3
- // ADC_TDRL=0x08; //禁止思密特触发 0x04
- ADC_CR1|=0x01; //开始转换
- for(A=0;A<20;A++);
- ADC_CR1|=0x01;
- while(!(ADC_CSR&0x80));
- //ADC_GetConversionValue=ADC_DRH;
- //ADC_GetConversionValue=((u16t)ADC_GetConversionValue)<<8||ADC_DRL;
- ADValue=ADC_GetConversionValue();
- ADC_CSR&=0x7F;
- ADValue=0;
- for(char i=0;i<50;i++)
- {
- while(!(ADC_CSR&0x80));
- //ADC_GetConversionValue=ADC_DRH;
- // ADC_GetConversionValue=((u16t)ADC_GetConversionValue)<<8||ADC_DRL;
- ADValue+=ADC_GetConversionValue();
- ADC_CSR&=0x7F;
- }
- ADValue= ADValue/50;
- VCC2=ADValue/1024.0*VCC*2; //得到的实际转换值
- DelayMS(500);
- Save(); //保存入eeprom
- //while(1);
-
- }
|