roboforum.ru

Технический форум по робототехнике.

как в васике установить ноги битами из переменной

как в васике установить ноги битами из переменной

Myp » 22 май 2010, 22:06

подскажите по синтаксису

есть переменная Dim X As Byte
там лежит нечто вроде 00010010
и есть две ноги мк как выход
хочу сделать так:
Код: Выделить всёРазвернуть
X = 00010010
Portc.2 = 4 бит переменной X
Portc.3 = 7 бит переменной X


немогу никак найти как это записать нормально

Re: как в васике установить ноги битами из переменной

galex1981 » 22 май 2010, 23:15

Код: Выделить всёРазвернуть
X = 00010010
Portc.2 = X.4
Portc.3 = X.7

Учти, что биты начинаются с 0

Re: как в васике установить ноги битами из переменной

Myp » 22 май 2010, 23:25

ахаха
как изящно...

Re: как в васике установить ноги битами из переменной

galex1981 » 22 май 2010, 23:32

А чего ты хотел ;)? Все элементарно!

Re: как в васике установить ноги битами из переменной

EdGull » 23 май 2010, 22:22

а я всегда говорил, что васик это сила! :D

Re: как в васике установить ноги битами из переменной

Duhas » 24 май 2010, 20:22

асм листинг можна ? )

Re: как в васике установить ноги битами из переменной

blindman » 25 май 2010, 09:43

Да пожалуйста :)
Код: Выделить всёРазвернуть
0000004F:   E6A0        LDI       R26,0x60       Load immediate
00000050:   E0B0        LDI       R27,0x00       Load immediate
00000051:   918C        LD        R24,X          Load indirect
00000052:   FB84        BST       R24,4          Bit store from register to T
00000053:   E3A5        LDI       R26,0x35       Load immediate
00000054:   E0B0        LDI       R27,0x00       Load immediate
00000055:   918C        LD        R24,X          Load indirect
00000056:   F982        BLD       R24,2          Bit load from T to register
00000057:   938C        ST        X,R24          Store indirect
00000058:   E6A0        LDI       R26,0x60       Load immediate
00000059:   E0B0        LDI       R27,0x00       Load immediate
0000005A:   918C        LD        R24,X          Load indirect
0000005B:   FB87        BST       R24,7          Bit store from register to T
0000005C:   E3A5        LDI       R26,0x35       Load immediate
0000005D:   E0B0        LDI       R27,0x00       Load immediate
0000005E:   918C        LD        R24,X          Load indirect
0000005F:   F983        BLD       R24,3          Bit load from T to register
00000060:   938C        ST        X,R24          Store indirect



Для сравнения эквивалентный код в AVR-gcc, когда x объявлена как volatile
Код: Выделить всёРазвернуть
  92:   80 91 60 00    lds   r24, 0x0060
  96:   84 ff          sbrs   r24, 4
  98:   02 c0          rjmp   .+4         ; 0x9e <main+0xc>
  9a:   aa 9a          sbi   0x15, 2   ; 21
  9c:   01 c0          rjmp   .+2         ; 0xa0 <main+0xe>
  9e:   aa 98          cbi   0x15, 2   ; 21
  a0:   80 91 60 00    lds   r24, 0x0060
  a4:   87 ff          sbrs   r24, 7
  a6:   02 c0          rjmp   .+4         ; 0xac <main+0x1a>
  a8:   ab 9a          sbi   0x15, 3   ; 21
  aa:   f3 cf          rjmp   .-26        ; 0x92 <main>
  ac:   ab 98          cbi   0x15, 3   ; 21
Последний раз редактировалось Vooon 25 май 2010, 13:13, всего редактировалось 1 раз.
Причина: [code=avrasm]

Re: как в васике установить ноги битами из переменной

Myp » 25 май 2010, 10:01

ну вот
абсолютно никакой разницы
совершенно непонятные буковки :D

Re: как в васике установить ноги битами из переменной

galex1981 » 25 май 2010, 10:19

to blindman А как ты васиковский листинг получил? (просто что-то подзабыл как можно его получть)

Re: как в васике установить ноги битами из переменной

blindman » 25 май 2010, 11:27

В AVR studio хекс загрузил

Re: как в васике установить ноги битами из переменной

Duhas » 25 май 2010, 18:42

а хде в листинге от васика вывод в порт? или я туплю ?

Re: как в васике установить ноги битами из переменной

blindman » 25 май 2010, 18:46

ST X,R24

Re: как в васике установить ноги битами из переменной

Duhas » 25 май 2010, 18:53

понял осознал, старею )))


вот только не ясно почему из сей адрес порта 0х15 а с васика 0х35 ) или там оно от типа обращения на +20 ? что-то такое было, сам ак-то в порты по адресу никогда не писал )

Re: как в васике установить ноги битами из переменной

blindman » 25 май 2010, 19:13

когда регистры адресуются как память, добавляется смещение 0x20. С нулевого адреса памяти идут 32 РОНа

Re: как в васике установить ноги битами из переменной

Duhas » 25 май 2010, 19:14

спс за разъяснения )


Rambler\'s Top100 Mail.ru counter