![](https://www.baronerosso.it/img/t.gif)
![]() | #11 (permalink) Top |
User Data registr.: 29-11-2002 Residenza: Mountain View, CA
Messaggi: 4.390
|
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.
__________________ The number you dialed is imaginary. Please rotate your phone 90 degrees and redial. |
![]() | ![]() |
![]() | #12 (permalink) Top |
User Data registr.: 16-11-2008 Residenza: Riva del Garda - TN
Messaggi: 429
|
ma degli array come quell'esempio che ho fatto prima non potrebbe andare bene? ![]() 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? ![]() ciao e grazie lol21 |
![]() | ![]() |
![]() | #14 (permalink) Top | |
User Data registr.: 29-11-2002 Residenza: Mountain View, CA
Messaggi: 4.390
| Citazione:
__________________ The number you dialed is imaginary. Please rotate your phone 90 degrees and redial. | |
![]() | ![]() |
![]() | #16 (permalink) Top |
User Data registr.: 29-11-2002 Residenza: Mountain View, CA
Messaggi: 4.390
| Se sono array statici non è detto, il compilatore potrebbe allocarle in ROM. Ma dovrebbe essere documentato nel manuale.
__________________ The number you dialed is imaginary. Please rotate your phone 90 degrees and redial. |
![]() | ![]() |
![]() | #17 (permalink) Top |
User Data registr.: 16-11-2008 Residenza: Riva del Garda - TN
Messaggi: 429
|
oooooooooooooooooooooooooooooooooooooook, vaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaa bene ![]() ora provo con il metodo degli array (si sono duro di testa ![]() ![]() ![]() grazie a tutti intanto, vi farò sapere se funziona ![]() ciao lol21 |
![]() | ![]() |
![]() | #18 (permalink) Top |
User Data registr.: 06-08-2007 Residenza: Empoli
Messaggi: 1.813
|
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... ![]()
__________________ ....... |
![]() | ![]() |
![]() | #19 (permalink) Top |
User Data registr.: 16-11-2008 Residenza: Riva del Garda - TN
Messaggi: 429
|
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 |
![]() | ![]() |
![]() | #20 (permalink) Top | |
User Data registr.: 29-11-2002 Residenza: Mountain View, CA
Messaggi: 4.390
| Citazione:
Codice: // MAXPAGLIONI e' il numero massimo di paglioni int mask, i; if (PORTA) for (mask=1, i=1; mask < (1 << MAXPAGLIONI); mask = mask << 1, i++) if (PORTA & mask) break; // al termine del ciclo, i contiene il numero del paglione colpito
__________________ The number you dialed is imaginary. Please rotate your phone 90 degrees and redial. | |
![]() | ![]() |
![]() |
Bookmarks |
| |
![]() | ||||
Discussione | Autore discussione | Forum | Commenti | Ultimo Commento |
alimentatore insufficiente??? | molale81 | Batterie e Caricabatterie | 2 | 10 aprile 09 00:35 |