ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
29 июня
241577 Топик полностью
Barinov (03.03.2011 18:53, просмотров: 1) ответил mazur на Есть битовое поле. Скажем, 24 бита, то есть, 3 байта. И нужно проверить определенный бит. Когда писал проверочный код, это получилось 24 функции, которые отличались только номерами битов. Попытался возложить эту функцию микроконтроллеру.
Вот вам пример подпрограмма, уважаемый. Задаете номер бита и получаете его значение в бите T. Это для IAR, для других сред адрес задаваемого массива кажется надо писать (ИМЯ_МАССИВА*2). Ну, попробуйте.;;;;;;;;;;;;;;;;;;;;;;;; объявление некого флеш- массив бит 0...31TABLE: DB 0xaa, 0xbb, 0xcc, 0xdd ldi r16, 30 ; задаю номер интересующего бита в массиве TABLE (диапазон значений 0...31) call BITS nop ; значение бита находится в пользовательском бите T регистра SREG ret ;;;;;;;;BITS: ; вот она,подпрограмма mov R18,R16 lsr R18 lsr R18 lsr R18 clr R31 mov R30,R18 subi R30, LOW((-(TABLE) & 0xFFFF)) sbci R31, (-(TABLE) & 0xFFFF) >> 8 lpm R18,Z ldi R20,0x07 andi R16,0x07 sub R20,R16 ldi R16,0x01 clr R17lab0: dec R20 brmi lab1 lsl R16 rol R17 rjmp lab0lab1: and R18,R16 clt breq lab2 setlab2: ret;---end