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è?

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Chuck_Norris
  • Avatar di Chuck_Norris
  • Premium Member
  • Premium Member
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
  • Avatar di paoletto
  • Elite Member
  • Elite Member
Di più
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 :cheer:

// 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
  • Avatar di Chuck_Norris
  • Premium Member
  • Premium Member
Di più
11 Anni 6 Mesi fa #4 da Pinna
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

Chi vola vale, chi vale vola, chi non vola è un vile

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Pinna
  • Avatar di Pinna
  • Moderator
  • Moderator
Di più
11 Anni 6 Mesi fa - 11 Anni 6 Mesi fa #5 da paoletto
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? :lol:
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
  • Avatar di paoletto
  • Elite Member
  • Elite Member
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login