- Messaggi: 353
- Ringraziamenti ricevuti 8
linguaggio c
- elpablito
- Autore della discussione
- Platino Utente
Less
Di più
8 Anni 2 Settimane fa #1
da elpablito
linguaggio c è stato creato da elpablito
Buon giorno
La domanda potrebbe essere banale, ma non so la risposta.
Che differenza fa tra queste due istruzioni?
#define pippo PB1
int pippo = PB1;
Dove PB1 = port B bit1
al solito si ringrazia
Paolo
La domanda potrebbe essere banale, ma non so la risposta.
Che differenza fa tra queste due istruzioni?
#define pippo PB1
int pippo = PB1;
Dove PB1 = port B bit1
al solito si ringrazia
Paolo
Si prega Accesso o Crea un account a partecipare alla conversazione.
- alfa75
- Platino Utente
Less
Di più
- Messaggi: 527
- Ringraziamenti ricevuti 86
8 Anni 2 Settimane fa #2
da alfa75
Risposta da alfa75 al topic linguaggio c
Salve ,
Paolo.
la #define è una costante è fa parte delle direttive al preprocessore, quando il codice viene compilato il compilatore non fa altro che assocciare ai vari "pippo" che trova la porta RB1 (che a sua volta è gia definità all'interno di una struct nel file header del compilatore).
con la seconda istruzione dichiari una variabile intera che occuperà 2 byte di memoria è che potrai manipolare all'interno del codice.
Saluti,
Andrea
Paolo.
la #define è una costante è fa parte delle direttive al preprocessore, quando il codice viene compilato il compilatore non fa altro che assocciare ai vari "pippo" che trova la porta RB1 (che a sua volta è gia definità all'interno di una struct nel file header del compilatore).
con la seconda istruzione dichiari una variabile intera che occuperà 2 byte di memoria è che potrai manipolare all'interno del codice.
Saluti,
Andrea
Si prega Accesso o Crea un account a partecipare alla conversazione.
- elpablito
- Autore della discussione
- Platino Utente
Less
Di più
- Messaggi: 353
- Ringraziamenti ricevuti 8
8 Anni 1 Settimana fa #3
da elpablito
Risposta da elpablito al topic linguaggio c
Alfa75 si ringrazia, ciò che mi dicevi mi è abbastanza chiaro, ma dimmi dove sbaglio.
In ambedue i casi mi vado a definire una porta e ogni volta scrivo pippo è come scrivessi PB1, con la differenza che con int mi sono giocato due byte, dove è memorizzato lo stato della porta, qualora interessi. In definitiva nel secondo caso mi sono risparmiato un define e nulla più, visto che lo stesso risultato lo posso ottenere con un define più una variabile.
Paolo
In ambedue i casi mi vado a definire una porta e ogni volta scrivo pippo è come scrivessi PB1, con la differenza che con int mi sono giocato due byte, dove è memorizzato lo stato della porta, qualora interessi. In definitiva nel secondo caso mi sono risparmiato un define e nulla più, visto che lo stesso risultato lo posso ottenere con un define più una variabile.
Paolo
Si prega Accesso o Crea un account a partecipare alla conversazione.
- alfa75
- Platino Utente
Less
Di più
- Messaggi: 527
- Ringraziamenti ricevuti 86
8 Anni 1 Settimana fa #4
da alfa75
Risposta da alfa75 al topic linguaggio c
Aspetta!
analizziamo un caso più specifico:
se io dichiaro
int pippo = PORTBbits.RB0;
pippo assumerà il valore del pin RB0 (cioè 0 o 1)
ma se io volessi "scrivere" su quel pin (ad esempio portarlo semplicemente ad 1 )
cioè:
pippo = 1;
la variabile pippo assumerebbe valore 1 ma il valore del port rimarebbe invariato.
analizziamo un caso più specifico:
se io dichiaro
int pippo = PORTBbits.RB0;
pippo assumerà il valore del pin RB0 (cioè 0 o 1)
ma se io volessi "scrivere" su quel pin (ad esempio portarlo semplicemente ad 1 )
cioè:
pippo = 1;
la variabile pippo assumerebbe valore 1 ma il valore del port rimarebbe invariato.
Si prega Accesso o Crea un account a partecipare alla conversazione.
- Cosimix
- Elit Utente
Less
Di più
- Messaggi: 198
- Ringraziamenti ricevuti 26
8 Anni 1 Settimana fa - 8 Anni 1 Settimana fa #5
da Cosimix
Risposta da Cosimix al topic linguaggio c
Salve!
I due esempi citati non sono proprio la stessa cosa.
Con:
stai definendo un nuovo nome (molto più semplice da ricordare) che potrai utilizzare all'interno del codice per una più facile stesura e lettura dello stesso.
Nel secondo caso:
stai inizializzando una variabile intera di nome pippo, assegnandole il valore attuale di PB1.
Così come spiegato da alfa75, il contenuto di questa variabile può variare durante l'esecuzione del codice (in base alle tue necessità), ma non potrà mai essere utilizzata in sostituzione di PB1.
Saluti,
Cosimo
In ambedue i casi mi vado a definire una porta e ogni volta scrivo pippo è come scrivessi PB1
I due esempi citati non sono proprio la stessa cosa.
Con:
Code:
#define SEMPLICE QUESTA_COSA_NON_RIESCO_PROPRIO_A_RICORDARLA
stai definendo un nuovo nome (molto più semplice da ricordare) che potrai utilizzare all'interno del codice per una più facile stesura e lettura dello stesso.
Nel secondo caso:
Code:
int pippo = PB1;
stai inizializzando una variabile intera di nome pippo, assegnandole il valore attuale di PB1.
Così come spiegato da alfa75, il contenuto di questa variabile può variare durante l'esecuzione del codice (in base alle tue necessità), ma non potrà mai essere utilizzata in sostituzione di PB1.
Code:
// Esempio banale.. Supponiamo che RB0 valga 0:
int pippo = PORTBbits.RB0; // pippo è pari a 0
pippo = 1;
// Supponiamo di voler eseguire qualcosa nel caso in cui RB0 valga 1:
if(pippo == 1)
{
// Eseguo qualcosa... ma RB0 non vale 1!!!
}
Saluti,
Cosimo
Ultima Modifica 8 Anni 1 Settimana fa da Cosimix.
Si prega Accesso o Crea un account a partecipare alla conversazione.
Moderatori: Mauro Laurenti, StefA
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.
Forum - Ultimi messaggi
-
- Freedom III e compilazioni fallite
- da Black
-
- MODULO GSM SIM900A
- da FABRIZIO
-
- LTerminal - nuove funzioni
- da Mauro Laurenti
-
- Aggiornamento sito completato
- da Mauro Laurenti
-
- registro a scorrimento PIPO in cascata
- da Mauro Laurenti