Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

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:
I've messed that up a time or two =O
 
Status
Not open for further replies.

Latest threads

Back
Top