ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
26 апреля
1095038
Rxvg (22.04.2021 19:49, просмотров: 1421)
IAR, ньанс по типам данных... в общем atmega16, понадобилось обработать 24 входа и выхода... 

формирую общую переменную, после unsigned int -16 бит, идет long.


unsigned long out;

out = 1<<shift;


где, shift = 0..23. Такое написание работает пока shift<=15. При shift>15, в out не попадает ничего...

пробовал приведение типа перед выражением типа out =(unsigned long)(1<<shift); не помогло...


покопался в настройках IAR и не нашел решения...он у меня правда древний :) IAR C/C++ Compiler for AVR 4.11A/W32


пришлось переделать так:

unsigned long out, tempo;

tempo=1;

out = tempo<<shift;

так заработало...но как-то не красиво....смотрится.


Подозреваю как-то можно красиво поправить ограничение компилятора в два байта при выполнении сдвига...