Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Как из нескольких бит (переменных) - сделать одну переменную?


Как из нескольких бит (переменных) - сделать одну переменную?

Сообщений 1 страница 12 из 12

1

Вопрос который нынче меня поставил в тупик. Есть 20 бит которые читаются с устройства. Каждый бит помещается в определенную переменную. Но это как то совсем не вариант... Зная что 1 байт это 8 бит, начинаешь думать что, что то не клеиться))) Подскажите как можно сделать из этих 20 бит переменную типа word или long.

0

2

используй dword + оверлей

0

3

RDW спасибо что откликнулись) Но не могли бы дать пример для новичка? А то для меня это как темный лес)

0

4

Код:
Dim T As Dword
Dim T0 As Byte At T + 0 Overlay
Dim T1 As Byte At T + 1 Overlay
Dim T2 As Byte At T + 2 Overlay
Dim T3 As Byte At T + 3 Overlay

Т - переменная 4 байта
Т0-3 - одно байтовая переменная
Получаем данные с устройства по байтно, распихиваем значения с Т0 по Т3 (с учетом старших байтов и младших).
В итоге на выходе полученные данные считываем из переменные Т.
Система счисления байт должна совпадать (знаковые или нет).

0

5

Дело в том что я биты получаю и они записываются в переменные.

0

6

и что?

0

7

(хорошо, начинаем разговор сначала)

какие входные данные? конкретно
какие переменные?

0

8

Вот такие биты

Dim Count0 As Bit                                           
Dim Count1 As Bit
Dim Count2 As Bit
Dim Count3 As Bit
Dim Count4 As Bit
Dim Count5 As Bit
Dim Count6 As Bit
Dim Count7 As Bit
Dim Count8 As Bit
Dim Count9 As Bit
Dim Count10 As Bit
Dim Count11 As Bit
Dim Count12 As Bit
Dim Count13 As Bit
Dim Count14 As Bit
Dim Count15 As Bit
Dim Count16 As Bit
Dim Count17 As Bit
Dim Count18 As Bit
Dim Count19 As Bit

Вот их и надо сложить в кучу. Извиняюсь если плохо поставил вопрос.

Отредактировано Atmel (2014-09-11 17:00:36)

0

9

Тут надо всё вначале преобразовывать в байт, если не юзать асм, только бэйсик, то первое, что приходит на ум:

Код:
Dim T As Dword
T=0
If Count0=1 Then Set T.0
If Count1=1 Then Set T.1
If Count2=1 Then Set T.2
If Count3=1 Then Set T.3
If Count4=1 Then Set T.4
If Count5=1 Then Set T.5
If Count6=1 Then Set T.6
If Count7=1 Then Set T.7
If Count8=1 Then Set T.8
If Count9=1 Then Set T.9
If Count10=1 Then Set T.10
If Count11=1 Then Set T.11
If Count12=1 Then Set T.12
If Count13=1 Then Set T.13
If Count14=1 Then Set T.14
If Count15=1 Then Set T.15
If Count16=1 Then Set T.16
If Count17=1 Then Set T.17
If Count18=1 Then Set T.18
If Count19=1 Then Set T.19

Если такой вариант не прокатит (по разрядности), то надо использовать в группе с оверлеем.

+1

10

То есть все "сливается" в переменную Т? Или я ошибаюсь? И как это будет выглядеть? То есть в двоичном виде или в десятичном будет Т?

0

11

Интересный однако вариант! Спасибо большое что помогаете) Сегодня уже поздно, попробую завтра что получиться)

0

12

Atmel написал(а):

То есть все "сливается" в переменную Т? Или я ошибаюсь? И как это будет выглядеть? То есть в двоичном виде или в десятичном будет Т?

Т - это DWORD, почитайте что такое "типы переменных" (в данном случае 32-бита, 4 байта).

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Как из нескольких бит (переменных) - сделать одну переменную?