ciao!
ho un dubbio legato all'implementazione del ciclo for in linguaggio C per PIC se uso una variabile di tipo INT (8 bit) è possibile fare un ciclo for da
256 ripetizioni?
facendo: int i; for (i=0; i
ciao!
ho un dubbio legato all'implementazione del ciclo for in linguaggio C per PIC se uso una variabile di tipo INT (8 bit) è possibile fare un ciclo for da
facendo: int i; for (i=0; i
codificalo cosi'
unsigned char i; /* garantisce valori tra 0 e 255 */ i=0; while(1) { /* fai tutto quello che devi */ i++; if(i==0) break; }
P.S. NON FARLO VEDERE SUL GRUPPO it.comp.lang.c
interessante, non ci avevo pensato! ora la testo perchè il motivo per cui mi serviva un ciclo unico e un INT8 era per ottenere codice compatto e velocità di esecuzione (gli int8 sono più veloci degli int16) poi faccio sapere
grazie!
-ice-
ecco i risultati:
- usando un unico ciclo for e una variabile int16 di controllo ottengo la prestazione peggiore (100%)
- usando il ciclo da te suggerito (while/break) si guadagna in velocità (126%) mantenendo il codice compatto
- usando un ciclo for a 254 passaggi, variabile di controllo int8 e aggiungendo a fine ciclo lo stesso codice contenuto nel ciclo si ha un ulteriore piccolo guadagno in termini di velocità (128%) ma il codice richiede di più in termini di spazio flash
per cui direi che la soluzione da te proposta è la migliore! grazie 1000!
-ice-
aspe''''
hai ancora due possibilita' da testare:
do { } while();
e quella col l'innominabile goto :-)
provale!!!!!
ed al limite prova anche le versioni con i a decrementare , sempre se compatibile col contenuto del ciclo, su alcune architetture ( quelle con l'istruzione di "decrementa e salta se non zero" dovrebbe essere la piu' performante
la provo
questa mi rifiuto! cmq una GOTO incondizionata mi pare richieda 2 cicli di clock per cui è cassata in partenza
nei pic ++ e -- si equivalgono e per gli int8 sono più veloci di +=1 e -=1
-ice-
Have something to add? Share your thoughts — no account required.
Ask the community — no account required