Хотелось бы пояснить логику работы функций в кнопках, т.к. есть не очевидные моменты
Для контроля последовательности нажатия кнопок 1-2-3-4 используются вспомогательные биты PSB300..303. Регистр со значением для линейки выбран PSW500.
Задача: - в зависимости от комбинации бит PSB300..303 при нажатии любой кнопки нужно записывать в PSW500 фиксированные значения 25, 50, 75, 100.
И так в каждой кнопке есть цепочка функций, функции выполняются последовательно, сверху вниз, в том порядке как они расположены. Некоторые функции выполняются безусловно, а на выполнение остальных наложены ограничения. Ограничения на выполнение для отдельных функций спрятаны за кнопкой "Пароль", например
Захват-6.png
1. Кнопка №1
Захват-4.png
цепочка состоит из следующих функциий
- Инвертировать бит 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.
Захват-5.png
цепочка функций аналогичная, меньше на одну функцию (нет функции PSW500 = 25)
3. Кнопки №3 и №4
цепочки функций аналогичные, в каждой меньше на одну функцию (нет функции PSW500 = 50 и PSW500 = 75 соответственно)




Ответить с цитированием