ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
29 сентября
241107 Топик полностью
leon_ (28.02.2011 22:44 - 23:20, просмотров: 221) ответил mazur на Есть битовое поле. Скажем, 24 бита, то есть, 3 байта. И нужно проверить определенный бит. Когда писал проверочный код, это получилось 24 функции, которые отличались только номерами битов. Попытался возложить эту функцию микроконтроллеру.
Может быть, что-то такое? Если подходит, можно оформить подпрограммой.  .set IN_VALUE = 0x810002 .set TEST_VALUE = 0x010400 ; Хотя бы один бит из указаных == 1 ldi R16, low(IN_VALUE) ldi R17, byte2(IN_VALUE) ldi R18, byte3(IN_VALUE) ldi R31, low(TEST_VALUE) andi R31, R16 ldi R30, byte2(IN_VALUE) andi R30, R17 or R31, R30 ldi R30, byte3(IN_VALUE) andi R30, R18 or R31, R30 breq LABEL1 ; Среди указаных позиций есть хотябы одна в состоянии 1 ;....................... rjmp LABEL2 LABEL1: ; Среди указаных позиций нет в состоянии 1 ;....................... LABEL2: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Или так ldi R16, low(IN_VALUE) ldi R17, byte2(IN_VALUE) ldi R18, byte3(IN_VALUE) ldi R31, low(TEST_VALUE) andi R31, R16 brne LABEL1 ldi R31, byte2(IN_VALUE) andi R31, R17 brne LABEL1 ldi R31, byte3(IN_VALUE) andi R31, R18 brne LABEL1 ; Среди указаных позиций нет в состоянии 1 ;....................... rjmp LABEL2 LABEL1: ; Среди указаных позиций есть хотябы одна в состоянии 1 ;....................... LABEL2: