![]() |
Fai un ciclo, e in ciascun passo confronti la variabile con una maschera a bit, che sposti di volta in volta con l'operatore di spostamento bitwise a sinistra. Quando trovi che l'AND bitwise è 1, hai trovato quale bit è acceso, quindi quale paglione. |
ma degli array come quell'esempio che ho fatto prima non potrebbe andare bene? :blink: conta che questo è uni dei miei primi programmi ed è per questo che uso anche le librerie esterne, non mi pareva così complicato, programmi di gestione lcd led e pulsanti ne avevo già fatti, questo sarebbe più un'unione di più programmi già fatti. dunque non sarebbe più facile fare una cosa del genere sapendo poi che dovrei probabilmente fare altre modifiche in futuro e se aggiungessi pulsanti mi basterebbe aggiungere un valore all'array? :wacko: ciao e grazie lol21 |
per illez::: ma che fine hai fatto? ti ho mandato pm e nn rispondi.... |
Citazione:
|
ok grazie dell'aiuto vi farò sapere :wink: ma le variabili comunque non occupano RAM? io ho problemi di ROM ciao lol21 |
Citazione:
|
oooooooooooooooooooooooooooooooooooooook, vaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaa bene :P ora provo con il metodo degli array (si sono duro di testa :D :P) poi magari riprovo coi cicli cercando anche altri esempi online perchè non ho mai fatto come hai detto tu :D grazie a tutti intanto, vi farò sapere se funziona :wink: ciao lol21 |
Ho guardato un po' il codice e devo dire che con un ciclo FOR non risolveresti: hai delle eccezioni da gestire che riguardano i casi 'somma', voglio dire i valori 3,5,6,9 che non sono diretta potenza di 2. Probabilmente hai già una buona riduzione del codice raccogliendo tutti i casi in una funzione che richiamerai da tutto il codice. ad esempio unsigned int function check_porta() { switch(PORTA) { case 1: return 1; case 2: return 2; case 3: return 9; etc etc } } Nel codice scriveresti, per esempio: arciereb[freb] = check_porta(); Attenzione che comunque hai un paio di eccezioni, come qui: case 6: arciereb[freb] = 0; freb = freb-1; break; in questo caso devi comunque controllare porta==6 e decrementare freb Non conoscendo bene il funzionamento, non credo che si possa fare sempre dentro la funzione. Ma insomma, vedi tu...:wink: |
per il case 6 infatti mettevo un if il fatto che non siano potenze di 2 in realtà è perchè per alquni tasti uso un solo bit acceso per altri anche 2 ad esempio case 1 (0b00000001) case 2 (0b00000010) case 4 (0b00000100) ... case 3 (0b00000011) da quì non sono più potenze di 2 uso questo modo per non usare pin eccessivi. grazie dell'aiuto, appena ho un po di tempo butto giù il codice completo ciao lol21 |
Citazione:
Codice: // MAXPAGLIONI e' il numero massimo di paglioni |
Tutti gli orari sono GMT +2. Adesso sono le 07:48. |
Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002