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);
}
|