
Re: Достъп до индивидуален байтове в C
timer |= byte << 16;
byte << 16 е винаги нула

Малко е 8 битова променлива

При компилаторите за пик е грубо решение. Дори да го направш както си трябва с 32 битова променлива,хич няма да оптимизира и ще шифтне и после ще направи анд.
Като работиш с PIC 12,16,18 най правилно е да се ползва union.
Ама milenjs си го знаем. Хич и не си е напрегнал главата да прочете какво е това union и има ли почва у нас.
И milenjs обърни внимание че в C е приетo имената на макросите да са с главни букви изцяло. За яснота на кода. Отделно твоя вариант ще даде код който работи в зависимост от това дали процесора ти е с big или litle endian организация. А трябва да си създаваш навици да пишеш портируем код ако искаш да се занимаваш професионално с програмиране.
И отделно с използването на макроси не трябва да се прекалява. Едно че са проблем като дебъгваш,не се получава добра визуализация на ставащото,и второ че кода често не се оптимизира добре в някои случаи. Като в този случай например. Почти на 100 процента съм сигурен че ще даде по раздут код от използването на union. При тоз малоумен компилатор който ползваш трябва изразяването да става максимално близко до това което трябва да стане и просто.