Первая задача
Вложение 44570
Вложение 44571
Вид для печати
Первая задача
Вложение 44570
Вложение 44571
Имеет значение порядок нажатия переключателей?Цитата:
И вторая задача: необходимо сделать заполнение инструмента "линейка" по 4м переключателям. То есть есть 4 переключателя, при нажатии на первый- заполнение линейки на 1/4, если отжать его, линейка уходит в нулевое положение. При нажатии сначала на 1й- заполнение на 1/4, на 2й- заполнение происходит на 1/2. Если отпустить 2й, заполнение снова становится 1/4. Тоже самое с 3м и 4м переключателями. Нажат 1- 1/4, нажаты 1 и 2- 1/2, нажаты 1, 2 и 3- 3/4, и нажаты все 4 - заполнение 100%. При отжатии переключателей- все в обратную сторону.
Т.е. №2 можно нажать если №1 не включен? Или только в такой последовательности сначала №1 затем №2 и выключение строго в обратной последовательности?
№3 и №4 допускается включать если не включены №1 и №2?
Пример во вложении
Вложение 44576
Скрытый текст:
Вся логика сделана на ф. кнопках
для индикации вкл. состояния используются битовые лампы (Этап 1)
Скрытый текст:
Затем у ламп меняется оформление, внешний вид ламп выбран имитирующий состояние кнопок (Этап 2)
Скрытый текст:
Последний штрих лампы помещаются поверх ф.кнопок (Этап 3)
Скрытый текст:
Хотелось бы пояснить логику работы функций в кнопках, т.к. есть не очевидные моменты
Для контроля последовательности нажатия кнопок 1-2-3-4 используются вспомогательные биты PSB300..303. Регистр со значением для линейки выбран PSW500.
Задача: - в зависимости от комбинации бит PSB300..303 при нажатии любой кнопки нужно записывать в PSW500 фиксированные значения 25, 50, 75, 100.
И так в каждой кнопке есть цепочка функций, функции выполняются последовательно, сверху вниз, в том порядке как они расположены. Некоторые функции выполняются безусловно, а на выполнение остальных наложены ограничения. Ограничения на выполнение для отдельных функций спрятаны за кнопкой "Пароль", например
Вложение 44582
1. Кнопка №1
Вложение 44580
цепочка состоит из следующих функциий
- Инвертировать бит PSB300(бит состояния самой кнопки №1), выполняется безусловно. Визуально - нажали Включилось следующие нажатие Выключилось
- Включить бит PSB300(бит состояния кнопки №1), выполняется по условию если включен бит PSB301(состояние кнопки №2). Нивелирует результат предыдущей функции, т.е. если следующая кнопка включена, то эту кнопку выключить нельзя!
- функция PSW500 =PSW500 - 25, выполняется безусловно. Но фактически будет выполняться когда в PSW500 уже есть число 25, как результат предыдущего нажатия кнопки.
- функции PSW500 = 25, выполняется по условию если в текущем нажатии бит PSB300 установился первой функцией цепочки или второй. Нивелирует результат предыдущей функции, т.е. в PSW500 значение < 0 не возникнет.
- функции PSW500 = 50, выполняется по условию если бит PSB301(если кнопка №2) вкл. Нивелирует результат предыдущей функции. Если больше нет нажатых кнопок это значение будет результатом нажатия кнопки.
- функции PSW500 = 75, выполняется по условию если бит PSB302(если кнопка №3) вкл. Нивелирует результат предыдущей функции. Если больше нет нажатых кнопок это значение будет результатом нажатия кнопки.
- функции PSW500 = 100, выполняется по условию если бит PSB303(если кнопка №4) вкл. Нивелирует результат предыдущей функции и это значение будет результатом нажатия кнопки.
2. Кнопка №2.
Вложение 44581
цепочка функций аналогичная, меньше на одну функцию (нет функции PSW500 = 25)
3. Кнопки №3 и №4
цепочки функций аналогичные, в каждой меньше на одну функцию (нет функции PSW500 = 50 и PSW500 = 75 соответственно)
Добрый день! Стоит задача получить модуль знакопеременного значения переменной float и записать его во внутренний регистр. Руководство по макросам не помогло, прошу помощи
Добрый день.
Простейший пример:
Код:*(float*)(PSW+302) = fabs(*(float*)(PSW+300));
Спасибо, Евгений!