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:
Programování ATmega8 v jazyce C
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)
Díky!!!
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