Weight_Bed/ADC_Init.c

60 lines
1.4 KiB
C
Raw Normal View History

2024-05-17 15:11:04 +08:00
#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;
}