Ich glaub nicht, daß das Programm deswegen hängen bleibt.
Probier die Schleife mal einzeln mit Dev-C++ unter Windows aus, das läuft sauber durch.

vorher:
i=06, parity = 00, bit2send = 0f
i=05, parity = 01, bit2send = 0f
i=04, parity = 00, bit2send = 0f
i=03, parity = 01, bit2send = 07
i=02, parity = 00, bit2send = 0b
i=01, parity = 01, bit2send = 0d

nacher:
i=06, parity = 01, bit2send = 00
i=05, parity = 01, bit2send = 00
i=04, parity = 01, bit2send = 00
i=03, parity = 00, bit2send = 08
i=02, parity = 01, bit2send = 04
i=01, parity = 00, bit2send = 02
i=00, parity = 01, bit2send = 01

Beidesmal mit 0x0f gefüttert. Einmal bis Bit1, einmal bis Bit0. Parity war falsch und das lsb brauchst du schon irgendwie. Beim Schreiben der einzelnen Bits schaust du nur, ob das komplette Byte gleich/ungleich 0 ist, mit Tilde ist immer ungleich 0 und parity ändert sich auch jedesmal. Wenns mit den Änderungen crasht, ist irgendwoanders nochn Fehler drin.

Bin mittlerweile genauso weit wie du: einschalten, geht nicht :/