das kommt immer drauf an, was du genau möchtest.
ist es nur ne simplexverbindung und es macht nix
wenn auch mal n falsches relais anzieht
gehts am einfachsten.
senden mit udr=zustaende,
empfangen mit zustaende=udr

ist aber was "wichtiges" dran, sodass fehlschaltungen
unbedingt unterbunden sein müssen brauchts ne
prüfsumme um die korrekte übermittlung zu checken.
nur, woher weiß der controller, das das übertragene
byte kein datenbyte ist, sondern ne prüfsumme
und auch so behandelt werden muss ...
es gibt auch da mehrere wege.
zum einen kann man auch mit der 9-bit-uart arbeiten
und das neunte bit als marker verwenden
oder man bastelt sich n protokoll, das definierte
startzeichen, endzeichen und/oder definierte paketlängen
hat.
soll der bus um zusätzliche mitglieder erweitert werden
brauchts noch mindestens ne empfängeradresse.
dann hätten wir schon mindestens 2 bytes zu übertragen,
so in etwa 1.byte mit 9 bit, paketstart, zweites byte empfänger.
sinnigerweise währen aber 3 byte, also start, empfänger, anweisung.
das währ dann bei 8-bit-uart. bei 9-bit kann man sich das erste byte
wieder schenken, weil da das 9. bit als startzeichen herhalten kann,
als erstes zeichen 8-bit empfänger, neuntes bit ist paketstart.
zweites zeichen, ist dann 8-bit, ist dann die anweisung.

bei wichtiger fehlerlosigkeit käme dann noch die entsprechende
prüfsumme als byte mit hinten dran.
das kann man dann noch ausbauen mit zeichenzähler für datenpakete
unterschiedlicher länge, mit endzeichen usw. usw.

ein recht komplexes protokoll findest du z.b.
unter https://www.roboternetz.de/phpBB2/fi...tabellev12.pdf
beschrieben

es sind dir da schon viele möglichkeiten gegeben, was du brauchst
weißt nur du alleine.