60 lines
1.4 KiB
C
60 lines
1.4 KiB
C
|
#include "H/Function_Init.H"
|
|||
|
|
|||
|
void ADC_Init(uint Channel);
|
|||
|
unsigned int ADCValue = 0x0000;
|
|||
|
bit AdcFlag = 0;
|
|||
|
|
|||
|
/***********ADC<44><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>*************/
|
|||
|
#if (IC_MODEL == SC95F7617B || IC_MODEL == SC95F7616B)
|
|||
|
enum Channel {AIN0=0,AIN1,AIN2,AIN3,AIN4,AIN5,AIN6,AIN7,AIN8,AIN9,AIN10,AIN11,AIN12,AIN13,AIN14,AIN15,VDD4=31};
|
|||
|
#endif
|
|||
|
|
|||
|
#if (IC_MODEL == SC95F7615B || IC_MODEL == SC95F7613B)
|
|||
|
enum Channel {AIN4=4,AIN5,AIN6,AIN7,AIN12=12,AIN13,AIN14,AIN15,VDD4=31};
|
|||
|
#endif
|
|||
|
|
|||
|
/*****************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>void ADC_Test(void)
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD>ADC<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>void
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>void
|
|||
|
*****************************************************/
|
|||
|
void ADC_Test(void)
|
|||
|
{
|
|||
|
ADC_Init(AIN4);
|
|||
|
while(1)
|
|||
|
{
|
|||
|
ADCCON |= 0X40; //<2F><>ʼADCת<43><D7AA>
|
|||
|
while(!AdcFlag); //<2F>ȴ<EFBFBD> ADCת<43><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
AdcFlag = 0;
|
|||
|
ADCValue = (ADCVH<<4)+(ADCVL>>4);
|
|||
|
}
|
|||
|
}
|
|||
|
/*****************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>void ADC_Init(uint Channel)
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD>ADC<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Channel
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>void
|
|||
|
*****************************************************/
|
|||
|
void ADC_Init(uint Channel)
|
|||
|
{
|
|||
|
ADCCON = 0X80|Channel; //<2F><><EFBFBD><EFBFBD>ADC<44><43>ADC<44><43><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>Ϊ2M ,ѡ<><D1A1>ChannelλADC<44><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(Channel<8)
|
|||
|
{
|
|||
|
ADCCFG0 = 1<<Channel; //<2F><><EFBFBD><EFBFBD>Channel<65><6C>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
ADCCFG1 = 1<<(Channel-8); //<2F><><EFBFBD><EFBFBD>Channel<65><6C>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
ADCCFG2 = 0x10; //ADC<44><43><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
IE |= 0X40; //<2F><><EFBFBD><EFBFBD>ADC<44>ж<EFBFBD>
|
|||
|
EA = 1;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
void ADC_Interrupt(void) interrupt 6
|
|||
|
{
|
|||
|
ADCCON &= ~(0X20); //<2F><><EFBFBD>жϱ<D0B6>־λ
|
|||
|
AdcFlag = 1;
|
|||
|
}
|