Jste zde

Programování ATmega8 v jazyce C

Jsem začátečník a nechodí mi velice jednoduchá věc, přiřazovací příkaz i=5;

Program vypadá takto:

 

unsigned int i;

int  main(void)

{  

while(1)
{
    i=0x05;
}

}
 

soubor .lss (část) pak takto:

int  main(void)

{  
  48: ff cf        rjmp .-2       ; 0x48 <main>

0000004a <_exit>:
  4a: f8 94        cli

0000004c <__stop_program>:
  4c: ff cf        rjmp .-2       ; 0x4c <__stop_program>

 

přiřazení i=5 nikde. Normálně bych nelezla do překladu, ale nešel mi tento příkaz ve složitějším programu, až jsem se dostala k .lss

Používám AVR Studio 4 a WINAVR

 

Díky za radu,

Helena

Forums: 

Tomu se rika optimalizace

nejspise se hodila do te promenne 0x05 uz pri inicializaci a protoze while (1) se provadi porad a uvnitr by akorat bylo zbytecne i=0x05 a stejne se to nikde nikdy nemuze pouzit .. tak se to vynecha

pokud chces aby to tam urcite bylo tak modifikator "volatile"
tj. volatile unsigned int i;
pak jako by clovek rekl prekladaci: tato promenna se muze zmenit i jinde!!! musis ji nastavit pokazde (napriklad u preruseni)

Joooo, bylo to ono! Já jsem právě měnila podmínky v hlavním prgmu a přerušení to mělo vykonávat a nedostalo se mu té informace.
To je ale podraz, když chci něco přiřadit v průběho programu jinak, tak mě nezajímá názor překladače. A je mi divné, že jsem se o tom ještě nedočetla.

Ale chodí mi to, díky díky moc!

Helena