PIC16F877 ADC

3 views
Skip to first unread message

sirish

unread,
Dec 25, 2009, 7:13:51 AM12/25/09
to Hypernuclide
link:- http://hypernuclide.com/viewtopic.php?f=36&t=148

njoy!

code:-

#include<pic.h>
#include<math.h>
#include<stdio.h>
__CONFIG(0x3B31);
#define uchar unsigned char
#define uint unsigned int
union adres
{int y1;
uchar adre[2];
}adresult;
uchar k,data;
double squ,squad;
int uo;
bank3 int re[40];
bank1 uchar s[4];
void adinitial()
{ADCON0=0X41;
ADCON1=0X8E;
ADIE=1;
PEIE=1;
TRISA0=1;
}
void interrupt adint(void)
{CCP2IF=0;
ADIF=0;
adresult.adre[0]=ADRESL;
adresult.adre[1]=ADRESH;
re[k]=adresult.y1;
k++;
}
void initial()
{CCP2IE=0;
SSPIE=0;
CCP2CON=0X0B;
CCPR2H=1;
CCPR2L=0XF4;
TRISB=0;
TRISC=0;
}

void main()
{uint n;
adinitial();
initial();
while(1)
{k=0;
TMR1H=0;
TMR1L=0;
GIE=1;
T1CON=1;
while(1)
{if(k==40) break;
}
GIE=0;
for(k=0;k<40;k++)re[k]=re[k]-0x199;
for(k=0,squad=0;k<40;k++)
{uo=re[k];
squ=(double)uo;
squ=squ*5/1023;
squ=squ*squ;
squad=squad+squ;
}
squ=squad/40;
squ=sqrt(squ);
squ=squ*150.054;
squ=squ*10;
uo=(int)squ;
sprintf(s,"%4d",uo);
PORTB=(s[2]<<4)|s[3];
PORTC=(s[0]<<4)|s[1];
for(n=0;n<30000;n++);
for(n=0;n<40;n++)
re[n]=0;
PORTB=0;
PORTC=0;
}
}

Reply all
Reply to author
Forward
0 new messages