Про UART почитайте в книге М.Гук «Интерфейсы ПК», думаю проще уж не куда.
Накидал Вам функциональную схему (не принципиальную), как видите, она проста.
Спойлер

Алгоритм работы передающего контроллера:
1. При включении питания контроллер инициализирует себя, в том числе модуль UART (он сейчас есть в каждом контроллере). В модуле UART настраиваете скорость передачи данных, количество бит данных (в Вашем случае это явно 8 ), количество стоповых бит (если надо).
2. Считывает состояния Порта к которому подключены датчики. Очередной раз повторюсь, что это как раз один байт данных.
3. Кидаете этот байт в передающий регистр модуля UART, который «без спроса» сразу начинает его передавать на витую пару через драйвер 485.
4. Ожидаете когда закончится передача, возвращаетесь к п.2.
Как видно, что для этого никакого протокола придумывать не надо. Контроллер просто молотит на витую пару пока не сгорит или не вырубится источник питания.
Алгоритм работы принимающего контроллера:
1. При включении питания контроллер инициализирует себя. В модуле UART настройки точно такие же как и в передающем.
2. Ожидаете когда контроллер что-то примет.
3. Считываете принятый байт информации.
4. Кидаете этот байт на выходной порт контроллера тем самым зажигая светодиоды. И к п.2
Про C не спрашивайте, даже не пробовал программировать контроллеры на нем. Про Asm рассказывать не буду.
P.S. А программатор то есть?