Битовые переменные.

В данный форуме Вы можете создавать темы посвящённые расширению функционала программы или сайта. После рассмотрения Ваше предложение будет перенесено в соответствующее место
Ответить
seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09.04.2016{, 12:17}
Репутация: 22
Откуда: Кременчуг
Имя: Сергей

Битовые переменные.

#1

Сообщение seri0shka » 07.04.2018{, 22:02}

Не хотел поднимать новую тему, но через поиск не нашёл упоминаний. Для простейшей логики используются переменные типа boolean, каждая из которых занимает байт в памяти. На самом деле в байт можно поместить 8 битовых переменных (ни для кого не секрет). Проблема в том, что для работы с битами (сложение, вычитание, инверсия и т. д.) приходится преобразовывать их снова в boolean. Создать пользовательские блоки не представляется возможным, так как скомпилированный результат должен должен быть соединением нескольких частей в одну строку. Простейший пример применения: имеем входной байт, полученный с 8 входов регистра, и выходной байт, отправленный через выходной регистр на 8 выходов. Выходной байт получается преобразованием входного байта в соответствии с заданной логикой работы. Как задать подобное для примеров на рисунке? (Только вместо пинов должны быть два бита входного байта и один бит выходного. На картинке одна и та же операция для разных языков программирования, лично мне удобней LAD.) Поднималась ли такая тема на форуме? Возможно ли создать блоки?
биты.png
биты.png (4.18 КБ) 1277 просмотров
Спросите: зачем это нужно? Во-первых, для общего развития. Во-вторых, связался в последнее время с ATtiny13A - прикольный маленький контроллер с 1 килобайтом памяти. Проекты прекрасно создаются в FLProg (просто подставляется другой тип контроллера). После компилирования уже в IDE выбирается ATtiny13A, и заливается скетч по способу, описанному здесь: https://ngin.pro/arduino/299-obnovlenno ... o-ide.html Для простеньких проектов не требуется никаких лишних движений, работают любые блоки, содержащие в себе простейшие операторы типа pinMode(), digitalRead(), digitalWrite() и ещё несколько, а также программирование на Си. Но уже для чуть больших проектов, чем помигать светиком, нужно оптимизировать полученный скетч, убирая промежуточные переменные. Ну и доступно только 64 байтовых переменных, что не так много.

seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09.04.2016{, 12:17}
Репутация: 22
Откуда: Кременчуг
Имя: Сергей

Битовые переменные.

#2

Сообщение seri0shka » 09.04.2018{, 09:19}

А что ответят админы? У вас вроде х опыта больше. Это неосуществимо или просто не нужно?

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Битовые переменные.

#3

Сообщение pan » 09.04.2018{, 09:25}

в создании блоков нет смысла. ибо входа и выхода блоков это те же переменные, каждая из которых занимает байт

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Битовые переменные.

#4

Сообщение Sancho » 09.04.2018{, 09:56}

seri0shka,
Вот так
СпойлерПоказать
2018-04-09_10-00-22.png
2018-04-09_10-00-22.png (8.14 КБ) 1213 просмотров
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09.04.2016{, 12:17}
Репутация: 22
Откуда: Кременчуг
Имя: Сергей

Битовые переменные.

#5

Сообщение seri0shka » 09.04.2018{, 10:41}

А если так:
биты2.png
биты2.png (5.31 КБ) 1204 просмотра
Блок "битовая арифметика" пока пуст. Вместо 16 промежуточных переменных получаем 2. Но вот дальше у меня проблемы, битовые операции- как китайский язык.

Отправлено спустя 21 минуту 58 секунд:
Sancho, что за блок "bitwise OR" ? Я в LAD намного лучше разбираюсь, извините.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Битовые переменные.

#6

Сообщение Sancho » 09.04.2018{, 11:11}

seri0shka,
Это побитовое ИЛИ.
Операции с битами-> побитовые операции...
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09.04.2016{, 12:17}
Репутация: 22
Откуда: Кременчуг
Имя: Сергей

Битовые переменные.

#7

Сообщение seri0shka » 09.04.2018{, 14:31}

Sancho писал(а):
09.04.2018{, 11:11}
Это побитовое ИЛИ.
Понял, просто не мог найти в версии 2-1.
Скажите, а это только на моём компе не удаляются соединения? В языке LAD всё нормально, а в FBD не удаляются в версии 2-1 и 2-3. приходится блок удалять и снова добавлять.
СпойлерПоказать
биты3.png
биты3.png (7.64 КБ) 1177 просмотров

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Битовые переменные.

#8

Сообщение Sancho » 09.04.2018{, 15:36}

seri0shka писал(а):
09.04.2018{, 14:31}
Скажите, а это только на моём компе не удаляются соединения? В языке LAD всё нормально, а в FBD не удаляются в версии 2-1 и 2-3. приходится блок удалять и снова добавлять.
seri0shka, не знаю, у меня всё нормально. 3.0.3
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Аватара пользователя
kulibinsvv
Лейтенант
Сообщения: 478
Зарегистрирован: 18.09.2015{, 10:04}
Репутация: 54
Откуда: Омск

Битовые переменные.

#9

Сообщение kulibinsvv » 09.04.2018{, 15:43}

seri0shka писал(а):
09.04.2018{, 14:31}
Скажите, а это только на моём компе не удаляются соединения?
Если соединены только два вывода, достаточно щёлкнуть два раза ЛКМ по линии возле вывода блока.
Если соединены более двух выводов, то наводим курсор на линию возле вывода, зажимаем ЛКМ и тянем курсор в сторону, отпускаем ЛКМ.

ЛКМ - левая кнопка мыши.
Мой змей, этот ползучий соблазн сомнения,всё шевелится, побуждая «искать концы»... (Станислав Ермаков)

seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09.04.2016{, 12:17}
Репутация: 22
Откуда: Кременчуг
Имя: Сергей

Битовые переменные.

#10

Сообщение seri0shka » 09.04.2018{, 16:16}

kulibinsvv, спасибо. Только не по линии, а по входу блока, получается. Надо же, как по-разному в LAD и FBD.

Ответить

Вернуться в «Новые»