-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathADC.h
62 lines (61 loc) · 840 Bytes
/
ADC.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
void init_ADC()
{
TRISA=0xFF;
ADCS0 = 0;
ADCS1 = 0; // FOSC / 2
ADFM = 1;
ADON = 1;
GO_nDONE = 0;
//ANSELH=0x00;
//////ADCS2 = 0;
//PCFG0 = 0;
//PCFG1 = 0;
//PCFG2 = 0;
//PCFG3 = 0;
}
void set_ch(int channel)
{
CHS0 = 0;
CHS1 = 0;
CHS2 = 0;
//CHS3 = 0;
if((channel == 4 || channel >4) && (channel <8))
{
CHS2 = 1;
channel = channel - 4;
}
if((channel == 2 || channel >2) && (channel < 4))
{
CHS1 = 1;
channel = channel - 2;
}
if(channel == 1)
{
CHS0 = 1;
channel = channel - 1;
}
}
int read_ADC(int ch)
{
init_ADC();
set_ch(ch);
__delay_ms(1);
GO_nDONE = 1;
while(GO_nDONE);
int a = ADRESL;
if(ADRESH == 1)
{
a =a+256;
}
else if(ADRESH == 2)
{
a = a+512;
}
else if(ADRESH == 3)
{
a = a+256+512;
}
else
{}
return a;
}