Технический форум по робототехнике.
Myp » 22 май 2010, 22:06
подскажите по синтаксису
есть переменная Dim X As Byte
там лежит нечто вроде 00010010
и есть две ноги мк как выход
хочу сделать так:
- Код: Выделить всё • Развернуть
X = 00010010
Portc.2 = 4 бит переменной X
Portc.3 = 7 бит переменной X
немогу никак найти как это записать нормально
galex1981 » 22 май 2010, 23:15
- Код: Выделить всё • Развернуть
X = 00010010
Portc.2 = X.4
Portc.3 = X.7
Учти, что биты начинаются с 0
Myp » 22 май 2010, 23:25
ахаха
как изящно...
galex1981 » 22 май 2010, 23:32
А чего ты хотел

? Все элементарно!
EdGull » 23 май 2010, 22:22
а я всегда говорил, что васик это сила!

Duhas » 24 май 2010, 20:22
асм листинг можна ? )
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]
Myp » 25 май 2010, 10:01
ну вот
абсолютно никакой разницы
совершенно непонятные буковки

galex1981 » 25 май 2010, 10:19
to blindman А как ты васиковский листинг получил? (просто что-то подзабыл как можно его получть)
blindman » 25 май 2010, 11:27
В AVR studio хекс загрузил
Duhas » 25 май 2010, 18:42
а хде в листинге от васика вывод в порт? или я туплю ?
blindman » 25 май 2010, 18:46
ST X,R24
Duhas » 25 май 2010, 18:53
понял осознал, старею )))
вот только не ясно почему из сей адрес порта 0х15 а с васика 0х35 ) или там оно от типа обращения на +20 ? что-то такое было, сам ак-то в порты по адресу никогда не писал )
blindman » 25 май 2010, 19:13
когда регистры адресуются как память, добавляется смещение 0x20. С нулевого адреса памяти идут 32 РОНа
Duhas » 25 май 2010, 19:14
спс за разъяснения )