Цитата Сообщение от EFrol Посмотреть сообщение
Почему в ФБ IO_a Вы комментируете?
Комменты - это признак хорошего тона в программировании.
Значит была такая необходимость, что не мешает программе.

Код:
// проверка на "иголки" светодиодов внешних - работа не нормальная
В чем проявляется ненормальность?

Даже если Вы передаете эти значения на внешние выхода K1..K4, то в конце программного цикла ПР точно так же (по-битно) выдает их на транзисторы.
Т.е. если предыдущее состояние было K1=1, K2=1, K3=1, K4=0 (десятичное 7), то при записи десятичной 8 пройдет несколько промежуточных состояний:
- K1=0, K2=1, K3=1, K4=0 -> 6
- K1=0, K2=0, K3=1, K4=0 -> 4
- K1=0, K2=0, K3=0, K4=0 -> 0
- K1=0, K2=0, K3=0, K4=1 -> 8

Вы можете попробовать обратиться к разработчикaм с просьбой, что если эти биты принадлежат одному регистру, производить запись всей маски одной командой.
Или добавить в схему регистр со схемой сравнения, которая будет стробировать запись в регистр с задержкой (так чтобы вывелись все биты на K1..K2).
OWEN_2.jpg
т.е. как только схема увидит, что какой-то бит меняется, запускает импульс с задержкой фронта (выждет время на изменение всех бит), после чего защелкнет новые данные.
Схемное решение переусложнено для данного варианта.

производить запись всей маски одной командой
По их информации последовательность следующая:
1. Читаются входы в регистр(ы)
2. Выполняется программа пользователя.
3. Выполняются служебные программы
- последовательный обмен
- вывод на индикацию
- клавиатура
- ещё чё нибудь
4. Записываются результаты в порты.

Это примерно 1 мс и есть.

Никак в процессе пользовательской программы не могут данные побитно писаться в порт.