-
Notifications
You must be signed in to change notification settings - Fork 0
/
practica9.c
84 lines (66 loc) · 1.12 KB
/
practica9.c
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include<16F877A.h>
#device adc=10
#include<math.h>
#use delay (clock = 4000000)
#fuses XT,NOWDT,PUT,NOLVP,NOBROWNOUT
#use fast_io(b)
int8 d1,d2,d3,d4,itr=0,con=0;
int8 num[10]={63,6,91,79,102,109,125,7,127,111};
float cif=0,aux=0,dec=0;
#INT_RTCC
void_isr(void)
{
itr += 1;
if (itr==1){
output_b(num[d1]);
output_c(0);
output_c(1);
}
if (itr==2){
output_b(num[d2]);
output_c(0);
output_c(2);
}
if (itr==3){
output_b(num[d3]);
output_c(0);
output_c(4);
}
if (itr==4){
output_b(num[d4]);
output_c(0);
output_c(8);
itr=0;
con+=1;
}
}
void main ()
{
set_tris_a(0xff);
set_tris_c(0x00);
set_tris_b(0x00);
output_c(0x00);
output_b(0x00);
setup_adc_ports(RA0_ANALOG);
set_adc_channel(0);
setup_adc(ADC_CLOCK_DIV_32);
enable_interrupts(int_rtcc);
enable_interrupts(GLOBAL);
set_timer0(0);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_16);
while (true)
{
if(con==9){
cif = read_adc();
cif *= .488281; //por que Vref / 1024 = 0.004882 x 100
aux=floor(cif); //floor me regresa el entero de cif en aux
dec=cif-aux;
d1=floor(aux/10);
aux-=d1*10;
d2=floor(aux);
d3=floor(dec/0.1);
d4=(floor(dec/0.01))-(d3*10);
con=0;
}
}
}