Beruflich Dokumente
Kultur Dokumente
c
Pgina 1 de 3
Ter 20 Mar 2012 09:01:49 BRT
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #fuses XT, WDT, NOPUT, NOMCLR, NOBROWNOUT, NOLVP,NODEBUG,PLL1,CPU
DIV1,VREGEN
15
16 #include <string.h>
17 #include <stdlib.h>
18
19
20 #use
fast_io(a)
21 #use
fast_io(b)
22
23 #byte
porta = 0xf80
24 #byte
portb = 0xf81
25
26 #byte
tris_porta = 0xf92
27 #byte
tris_portb = 0xf93
28
29
30
31 #bit led_heart = portb.7 // bit7 do port
sinal para monitoramen
to heart beat
32 #bit tris_led_heart= tris_portb.7 // bit5 do port
33
34 const int MAX = 21; // mximo de caracteres na string
35
36 int16 T;
37
38 void le_transmite(n){
39
40
int16 valor;
41
42
set_adc_channel(n);
43
delay_us(20);
44
valor = read_adc();
45
printf("C%02d:%04lu",n,valor);
46 }
47
48 #int_timer1
- 1 -
/home/trindade/rea de Trabalho/dataloguer/PIC/Serial/DataLogger.c
Pgina 2 de 3
Ter 20 Mar 2012 09:01:49 BRT
49 void trata_t1() // utiliza a interrupcao do timer1 para gerar eve
ntos a cada 10ms
50 {
51
static int tempo_heart = 0;
52
int i;
53
54
set_timer1(T+get_timer1()); // T para 10ms
55
tempo_heart++;
56
if (tempo_heart == 50){ // 50*10ms-> 500ms
57
tempo_heart = 0;
58
led_heart = !led_heart;
59
for (i=0; i<6; i++){
60
le_transmite(i);
61
}
62
printf("\r\n");
63
}
64
65 }
66
67 void trata_st(char *st)
68
{
69
char ch;
70
71
ch = st[0];
72
if (ch == 'F') // fora start com PWM mximo ou stop zerando
variveis
73
{
74
75
76
}
77
else if (ch == 'T') // valor de set do timer1
78
{
79
printf("T=%04lu, ",T);
80
}
81
else if (ch == '?') // lista os parmetros internos
82
{
83
printf("Parmetros: \n\r T=%04lu, ",T);
84
}
85
}
86
87 void main()
88 {
89
char st[MAX];
90
91
delay_ms(100); // para estabilizar
92
93
tris_led_heart = 0;
94
95
led_heart = 1;
96
97
// setup_wdt(WDT_2304MS);
- 2 -
/home/trindade/rea de Trabalho/dataloguer/PIC/Serial/DataLogger.c
Pgina 3 de 3
Ter 20 Mar 2012 09:01:49 BRT
98
99
- 3 -