

Podivné chování programu pro Arduino
Zdar, může mi někdo fundovanej vysvětlit co dělám špatně? Uvedu část programu:
//tady je nějaká předchozí část programu
byte bajt1;
byte bajt2;
//tady se v programu načtou hodnoty bajt1 a bajt2
bajt1 = (bajt1 & 0b10000000) >> 7 | (bajt2 << 1);
//pokračuje program
tohle nefunguje a v bajt1 je vždy jen bajt2 posunutý o jedno místo doleva.
//tady je nějaká předchozí část programu
byte bajt1;
byte bajt2;
//tady se v programu načtou hodnoty bajt1 a bajt2
bajt1 = (bajt1 & 0x80) >> 7 | (bajt2 << 1);
//pokračuje program
tohle funguje a v bajt1 je správně jeho poslední bit plus bajt2 posunutý o jedno místo doleva.
je něco shnilého v AVR GCC nebo je chyba někde jinde?
Si si isty? Ked si pozres prelozene instrukcie tak tam je co? (prekladac by mal byt schopny generovat nejaky lst file)
Jsem si stoprocentně jistý. Programoval jsem algoitmus Conway's Game of Life. Pokud jsem použil binární interpretaci, generovalo to buňky v rámci jednoho řádku, tj. 8 bitů a přes to to nepřelezlo - nezkontrolovalo to souseda v řádku nad a pod. Jakmile jsem použil hexa, začlo se to chovat tak jak má. Mám k dispozici *.hex, zkusím to rozpitvat.
Tak už to vím:
takže kompilátor ten tvar neumí. Je zajímavé, že při překladu nehlásí chybu.