PDA

Visualizza la versione completa : [C] visibilità variabili


loutek
20-07-2010, 00:05
Ciao a tutti, dato che ho sempre scritto piccoli codici in c, ho dei problemi sulla visibilità delle variabili tra diversi source file.
Nel main.c ho una routine che conta quante volte viene premuto un pulsante e il valore viene memorizzato in una variabile di tipo int,

while (j==1) { if (!left) { button_debouncing(); _delay_ms(250); i++; } else if (!right) { button_debouncing(); _delay_ms(250); i--; } unsigned char button_counting (int i); lcd_gotoxy(8,3); lcd_puts(displayed); }
tale valore deve essere poi usato dalla funzione unsigned char button_counting (int i) ed essere traformato in una stringa per essere visualizzato su un lcd. Tale funzione si trova invece nel file button.c.

unsigned char button_counting (int i) { unsigned char displayed [8]; sprintf(displayed, "%d", i); return displayed[8]; }
Il mio problema è come passare il valore di i nel main.c alla funzione nel button.c.
Grazie.

oregon
20-07-2010, 00:15
Così come hai inviato il codice, non si capisce nulla ...

loutek
20-07-2010, 00:36
Mi spiego meglio:il codice è scritto per il micro della ATMEL ATMEGA32.
Il mio problema è capire, in generale, come passare i valori delle variabili tra file.c diversi all'interno dello stesso programma.
Es:
#include <button.h>
....
....
....
void main (void) {
...
...
if (premo +) {
i++;
else if (premo -) {
i--;
}
button_count(i);
lcd_visualizza(displayed);
}

Nel button.c ho la funzione button_count che deve convertire la variabile di tipo int i nella variabile di tipo char displayed e restituire tale valore nuovamente al main.

Grazie.

oregon
20-07-2010, 00:51
La funzione button_counting non può essere quella ... è sbagliata ...

L'hai scritta tu o l'hai trovata ?

loutek
20-07-2010, 09:46
La funzione button_counting è:

unsigned char button_counting (int i) {
unsigned char displayed ;
ssprintf(displayed, "%d", i);
return dispayed;
}

LeleFT
20-07-2010, 10:13
Il linguaggio va espressamente indicato nel titolo.
Va bene usare i tag CODE per il codice... basta avere cura di postarlo in modo leggibile (facendo copia-incolla da un qualunque editor che mantenga l'indentazione e avendo cura che ci sia un ritorno a capo si ciascuna riga...).

Aggiungo il titolo.


Ciao. :ciauz:

oregon
20-07-2010, 12:22
Originariamente inviato da loutek
La funzione button_counting è:

unsigned char button_counting (int i) {
unsigned char displayed ;
ssprintf(displayed, "%d", i);
return dispayed;
}

No ... non è questa quella che hai proposto ... l'hai copiata male?

Insomma ... non si capisce neanche da dove partiamo ...

Dichiara un vettore di char esternamente alla funzione (nel button.c) e dichiarala extern nel main.c. A questo punto la puoi usare.

Loading