Adc

Status
Not open for further replies.

sahanaashwin

New Member
Ad1con1

--------------------------------------------------------------------------------

HI i am new in c programming,i have one doubt in the below coding.in this coding already set AD1CON2bits.BUFS=0(AD1CON2 = 0x041Fthen why we write code if (AD1CON2bits.BUFS==1),else if(AD1CON2bits.BUFS==0)
pls explain me, i am using P24FJ64GA002


#
void ADCInit()
{
AD1CON1 = 0x80E4; AD1CON2 = 0x041F;
AD1CON3 = 0x1102;
.
.
}
void _ISR _ADC1Interrupt(void)
{
unsigned int Temp;

if (AD1CON2bits.BUFS==1)
{
Temp = ADC1BUF1;
Temp += ADC1BUF3;
Temp += ADC1BUF5;
Temp += ADC1BUF7;
Temp = Temp/4;
Adc_Vo += Temp;
Adc_Vo = Adc_Vo/2;


}
else if(AD1CON2bits.BUFS==0)
{
Temp = ADC1BUF9;
Temp += ADC1BUFB;
Temp += ADC1BUFD;
Temp += ADC1BUFF;
Temp = Temp/4;
Adc_Vo += Temp;
Adc_Vo = Adc_Vo/2;
}
 
Ad1con1

in this coding already set AD1CON2bits.BUFS=0(AD1CON2 = 0x041F
then why we write code if (AD1CON2bits.BUFS==1),
else if(AD1CON2bits.BUFS==0)

pls explain me
The important thing to note here is the equality operator: ==, which differs from the assignment operator: =

The = is used to assign, as you have done with

AD1CON1 = 0x80E4; AD1CON2 = 0x041F;
AD1CON3 = 0x1102;

And this one == is used to test.

this line - if (AD1CON2bits.BUFS==1) - tests the bit BUFS in the AD1CON register, and if it is set (equal to 1,) executes everything between the { and } directly after that line.

IE: if the bit is set then
{
Temp = ADC1BUF1;
Temp += ADC1BUF3;
Temp += ADC1BUF5;
Temp += ADC1BUF7;
Temp = Temp/4;
Adc_Vo += Temp;
Adc_Vo = Adc_Vo/2;
}
will execute.

Or ELSE if the bit is clear (equal to 0) everything after that statement -
else if(AD1CON2bits.BUFS==0) -
and between the {} brackets will execute.
 
Last edited:
Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…