Код:
// проверка на "иголки" светодиодов внешних - работа не нормальная
В чем проявляется ненормальность?
Даже если Вы передаете эти значения на внешние выхода 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
т.е. как только схема увидит, что какой-то бит меняется, запускает импульс с задержкой фронта (выждет время на изменение всех бит), после чего защелкнет новые данные.