本帖最后由 肥羊 于 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
这三个数据一直为零转换不出数据
|