本帖最后由 肥羊 于 2019-6-26 10:30 编辑
sbit SEN_A = P4^5; //时钟
sbit SEN_B = P4^6; //数据
void InitADC(void)
{
Bank0;
P4CR|=(1<<5);
P4CR|=(1<<6);
REGCON=0x03; //开稳压电源 3.3V
ADCON = 0x04; //使用内部基准电源
ADT=0xC4; //100KHz
ADCH = 0xE2; //VREF = 0.40 X VDDR
ADCDS=0x00;
PGAM=0x08;
ADDH=0x00;
ADDM=0x00;
ADDL=0x00;
EADC=1;//开启ADC中断
}
上面是初始化ADC
下面是中断
//选择转换通道
void SiwtchChanl(u8 num)
{
switch(num)
{
case 0: SEN_A=1; SEN_B=0; break; // 通道0 DEF_Prot 化霜探头
case 1: SEN_A=1; SEN_B=0; break; //通道1
default:break;
}
}
u8 textIndex=0;
u16 TxexFoalt=0;
u16 Textvalua[4];
//开始转换
void StartADC(u8 num)
{
SiwtchChanl(num);
ADCON=0x84;//开始转换
}
u8 dataL=0;
u8 dataM=0;
u8 dataH=0;
u16 GetADCData(void)
{
u32 dataRe=0;
dataL=ADDL;
dataL=(dataL<<4);
dataM=ADDM;
dataH=ADDH;//数据高8位
dataRe=dataH;
dataRe=(dataRe<<8);
dataRe=dataRe|dataM;
dataRe=(dataRe<<8);
dataRe=dataRe|dataL;
dataRe=(dataRe>>4);
return dataRe;
}
void ADCinterrupt() interrupt 6
{
ADC_FinshFlag=1;
ADC_Data=GetADCData();
ADCON=0X04;// 清除中断标志位
textIndex++;
}
能进入中断但是
dataL
dataM
dataH
这三个数据一直为零转换不出数据 |