AM bester verstehst du die Wirkung des DDR, wenn du dir im Handbuch den Blockschalt eines Ports anschaust. Da ist dann alles schematisch zusammengeschaltet: DDR, PORT, PUN, PUD, etc

Wenn du DDR auf IN stellst, dann legt PORT fest, ob der interne PullUp aktiv ist.

Bei deinem Protokoll musst du folgendes beachten: Wenn ein Fehler auftritt (beim Entwickeln nicht sooo selten) und 2 Ports von µC1 und µC2 kollidieren, dann kann es Schäden an der Hardware geben.

Alternativ könntest du den Port auf IN stellen und einen externen PU dranhängen.

Dann kannst du so was senden:
DDR=0, PORT=0 (passive HIGH (durch PU))
DDR=1, PORT=0 (active LOW)

Den PU extern, weil: Die internen sind recht groß und mit internem PU müsstest du umschalten zwischen
DDR=0, PORT=1
DDR=1, PORT=0

Wenn du erst den DDR schaltest kannst du einen Konflikt haben --> es raucht
Wenn du erst PORT schaltest, hängt der Pin kurz in der Luft.

Willst du ein One-Wire bauen?