STM8S??????????AD?????????????
?????????stm8s???????AD??????????????AN0??AN9????????????????е???·AN5??AN7??//ADC?????
void ADC_Init(void)
{
ADC_CR1 = 0x50;
ADC_CR2 = 0x38;
ADC_TDRL = 0xE0; //???????????
}
unsigned int Read_ADC_Temp(unsigned channel)
{
unsigned int i,ADtemp;
ADC_Init();
//ADC_CSR = 0x00;
ADC_CSR = channel;
ADC_CR1 = 0x01; // CR1??????????λ??1?????ADC???
for(i = 0;i < 300;i ++); // ?????????????7uS?????ADC??????????
ADC_CR1 = ADC_CR1 | 0x01; // ??ν?CR1??????????λ??1
// ???ADC???
while(!(0x80&ADC_CSR)); // ???ADC????
ADtemp = (unsigned int)(ADC_DRH<<8) | ADC_DRL;
ADC_CR1 = 0x00;
return ADtemp;
}
????????????????
adtemp = read_a2d_dis(0x07);
printf("%d ",adtemp);
??????????????????????0???VDDA????1023??
????
adtemp = read_a2d_dis(0x07);
adtemp1 = read_a2d_dis(0x06);
printf("%d ",adtemp);
printf("%d ",adtemp1);
?л??????????????????????????????768??254???л??????????????????С????????????β?????????????????????????????????????????1S??????С????????????????????datasheet?????????????????????Σ????????Σ??????????????????
????????????????????????????Ρ????????????????
unsigned int read_a2d_dis(unsigned char channel)
{
unsigned int tempTab[5];
unsigned int i,j,temp;
temp = 0;
for(i = 0;i < 5;i ++)
{
tempTab[i] = Read_ADC_Temp(channel);
}
for(j=0;j<5;j++)
{
for (i=0;i<5-j;i++)
{
if (tempTab[i]>tempTab[i+1])
{
temp=tempTab[i];
tempTab[i]=tempTab[i+1];
tempTab[i+1]=temp;
}
}
}
return tempTab[2];
}
????????????????????????????λ??????????????????????????????л???????????????β??????????????????????????????????????л????????????????洢??ADC_DRH????ADC_DRL?????λ????????????λ???????????????????

????admin ?????????2018-12-27