rotten Postat Decembrie 14, 2006 Partajează Postat Decembrie 14, 2006 daca intru intr-o bucla while, de genul : while((!kp_ok) | (kb!=15)){}; sistemul de blocheaza , desi intreruperea care altereaza kp_ok si kb functioneaza. daca bag in while-ul ala cateva instructiuni , de genul : while((!kp_ok) | (kb!=15)){LCD_set_xy(0,0);fprintf(stdout,"%02d %02d",kp_ok,kb);}; bucla se comporta normal - adica isi termina executa cand kb=15 si kp_ok=1 LE: am scos optimizarea de pe "s" - size si am obtinnut: optimizare 0 - merge bucla directa pe restul (1,2,3,s) nu mai merge Link spre comentariu
ciocead4 Postat Decembrie 15, 2006 Partajează Postat Decembrie 15, 2006 Incearca sa declari variabilele kp_ok,kb ca volatile. Acest lucru anunta compilatorul ca variabilele pot fi modificate din mai multe locuri (de ex. intrerupere) si nu vor fi optimizate de compilare.Sper sa ajute,Daniel Link spre comentariu
Laci Postat Decembrie 15, 2006 Partajează Postat Decembrie 15, 2006 Sau uita-te in fisierul .lss, acolo vezi in assamblare.Am avut si eu probleme de genul asta Link spre comentariu
rotten Postat Decembrie 15, 2006 Autor Partajează Postat Decembrie 15, 2006 i-am dat de cap am declarat variabilele alea ca volatile . multam Link spre comentariu
lucicop Postat Decembrie 15, 2006 Partajează Postat Decembrie 15, 2006 Desi zici ca functioneaza, ma bag si eu cu o parere: poate ai vrut sa scrii || in if in loc de | care e o operatie pe biti intre cele doua rezultate. In cazul asta e acelasi lucru, dar in altele se poate sa nu fie. Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum