- Messaggi: 144
- Ringraziamenti ricevuti 3
problema idiota che mi sta facendo impazzire
11 Anni 6 Mesi fa #1
da Chuck_Norris
problema idiota che mi sta facendo impazzire è stato creato da Chuck_Norris
Ciao a tutti, vi scrivo per una domanda abbastanza stupida ma non riesco a venirne a capo.
Devo provare una routine per un mio programma più complesso quindi ho creato un progetto "di prova" e ho scritto tra le altre cose un for di 4 conteggi che mi shifti un registro, una cosa tipo:
for (cont=0; cont<4; cont++)
{
registro = registro << 1;
}
Però quando vado a compilare, MPLAB mi da un warning e mi dice che la variabile registro non è usata, perchè?
Devo provare una routine per un mio programma più complesso quindi ho creato un progetto "di prova" e ho scritto tra le altre cose un for di 4 conteggi che mi shifti un registro, una cosa tipo:
for (cont=0; cont<4; cont++)
{
registro = registro << 1;
}
Però quando vado a compilare, MPLAB mi da un warning e mi dice che la variabile registro non è usata, perchè?
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Chuck_Norris
- Autore della discussione
- Premium Member
Riduci
Di più
11 Anni 6 Mesi fa #2
da paoletto
Risposta da paoletto al topic problema idiota che mi sta facendo impazzire
Posta il codice completo se puoi.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- paoletto
- Elite Member
Riduci
Di più
- Messaggi: 186
- Ringraziamenti ricevuti 3
11 Anni 6 Mesi fa - 11 Anni 6 Mesi fa #3
da Chuck_Norris
Risposta da Chuck_Norris al topic problema idiota che mi sta facendo impazzire
è semplicemente questo sotto, perchè volevo provare l'operatore "<<" che non avevo mai usato e prima di inserirlo in roba più complessa volevo capire come funzionava
// pic12f683
#include <htc.h>
#include <pic.h>
__CONFIG (FOSC_XT & WDTE_OFF & PWRTE_ON & MCLRE_OFF & IESO_OFF & FCMEN_OFF & BOREN_OFF & CPD_OFF & CP_OFF) ;
int cont, reg;
void main(void)
{
ANSEL = 0b00000000;
INTCON = 0;
CMCON0 = 0b00000111;
TRISIO = 0b011100000;
reg = 1;
while (1)
{
for (cont=0; cont<4; cont ++)
{
reg = reg <<1;
}
}
}
e quando vado a compilare mi da una warning con scritto: variable "_reg" is not used.
Poi se vado a simulare salta sia "reg = 1;" che tutto il for come se non esistesse. Se invece provo a mettere un istruzione tipo GPIO = reg; nel ciclo for senza cambiare il resto, tutto funziona. E' una cosa strana....
// pic12f683
#include <htc.h>
#include <pic.h>
__CONFIG (FOSC_XT & WDTE_OFF & PWRTE_ON & MCLRE_OFF & IESO_OFF & FCMEN_OFF & BOREN_OFF & CPD_OFF & CP_OFF) ;
int cont, reg;
void main(void)
{
ANSEL = 0b00000000;
INTCON = 0;
CMCON0 = 0b00000111;
TRISIO = 0b011100000;
reg = 1;
while (1)
{
for (cont=0; cont<4; cont ++)
{
reg = reg <<1;
}
}
}
e quando vado a compilare mi da una warning con scritto: variable "_reg" is not used.
Poi se vado a simulare salta sia "reg = 1;" che tutto il for come se non esistesse. Se invece provo a mettere un istruzione tipo GPIO = reg; nel ciclo for senza cambiare il resto, tutto funziona. E' una cosa strana....
Ultima Modifica 11 Anni 6 Mesi fa da Chuck_Norris.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Chuck_Norris
- Autore della discussione
- Premium Member
Riduci
Di più
- Messaggi: 144
- Ringraziamenti ricevuti 3
11 Anni 6 Mesi fa #4
da Pinna
Chi vola vale, chi vale vola, chi non vola è un vile
Risposta da Pinna al topic problema idiota che mi sta facendo impazzire
Ciao, non ho sinceramente capito cosa vuoi fare ma per fare lo shift potresti usare questo:
for (cont=0; cont<4; cont ++)
{
reg = 1 << cont;
}
in questo modo otterrai i valori 1,2,4,8
for (cont=0; cont<4; cont ++)
{
reg = 1 << cont;
}
in questo modo otterrai i valori 1,2,4,8
Chi vola vale, chi vale vola, chi non vola è un vile
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Pinna
- Moderator
Riduci
Di più
- Messaggi: 1010
- Ringraziamenti ricevuti 107
11 Anni 6 Mesi fa - 11 Anni 6 Mesi fa #5
da paoletto
Mah in fondo tanto strano non è, ora io non conosco i pic12 ma immagino che una variabile semplicemente riempita con un valore ma non utilizzata sia inutile, tant'evvero che non appena l'hai assegnata al port in uscita è andato tutto a buon fine!
PS: ma a che serve questo codice?
Risposta da paoletto al topic problema idiota che mi sta facendo impazzire
Poi se vado a simulare salta sia "reg = 1;" che tutto il for come se non esistesse. Se invece provo a mettere un istruzione tipo GPIO = reg; nel ciclo for senza cambiare il resto, tutto funziona. E' una cosa strana....
Mah in fondo tanto strano non è, ora io non conosco i pic12 ma immagino che una variabile semplicemente riempita con un valore ma non utilizzata sia inutile, tant'evvero che non appena l'hai assegnata al port in uscita è andato tutto a buon fine!
PS: ma a che serve questo codice?
Ultima Modifica 11 Anni 6 Mesi fa da paoletto. Motivo: ho messo codice, non citazione
Si prega Accedi o Crea un account a partecipare alla conversazione.
- paoletto
- Elite Member
Riduci
Di più
- Messaggi: 186
- Ringraziamenti ricevuti 3
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.