Hallo Poettie,
ich glaube nicht, dass du 18 mal den Wert 256 rausschickst, maximal gehen 255 in 8 Bit. Tatsächlich schickt deine Schleife aufgrund der Abfrage J=K wahrscheinlich das hier raus:
255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 255 0 0 0 0 0 0 0 0 0 0 0 0 0

Wieso der Int dazwischenfunken soll, sehe ich noch nicht.
Jedenfalls würde ich die Synchronisierung uber das Bit Reading anders machen. Wenn dies einmal aus dem Tritt kommt, passt das nicht mehr. Daher würde ich dir empfehlen, den Wert des Eingangs abzufragen.
If PinB.1 = 1 Then 'dann war es eine steigende Flanke
Zeige doch mal dein funktionierendes Programm für den M8.