So...
erst mal vielen dank an die Lösungsversuche
aber irgendwie will das nicht wirklich
ich sehe anhand des Interface das der Arduino uno sendet, das Display aber Unbeeindruckt
nun hab ich ein Raspberypi Logik/Oszillator dran gehangen. man kann sehen wie abgefragt wird ob die leitung auf High ist die benötigt wird um senden zu dürfen
wenn das also OK ist sendet der Arduino seinen "Text" in HEX
Das aber nichts passiert habe ich den Atmega8 mit dem Demo Assembler script gestartet
dabei habe ich nun Folgendes festgestellt:
bei dem Atmega8 sendet dieser wenn die Freigabe Leitung auf HIGH ist <- Richtig
der Arduino uno (Atmega328) sendet bei LOW, beziehungsweise zieht diese auf LOW <- Falsch
Wieso keine Ahnung, ich habe eine abfrage eingebaut gehabt das er Nur senden soll wen HIGH
das funktionierte aber sobald er sendet ist die Leitung sofort LOW. 
nun meine idee das vorhandene Assembler script zu nehmen, da dies ja funktioniert, und das zu erweitern
Nur.......... mein Problem das ich von der Programmiersprache keinen Schimmer habe
und daher meine frage und Bitte ob mir da jemand das umschreiben könnte
ich poste hier gerne das Demo script wenn da jemand zu Lust hat oder unter die arme zu greifen
ich weiß zzt nicht wie ich nen Taster abfrage um z.b. einen Text anzeigen zu lassen ( programm sprung o.ä )
Das Demoscript zaubert zzt ständig einen Text in HEX auf das display
selber kann ich da aber nicht rumdoktern
beim Komilieren kommen sofort zig Fehler 
Danke
script (ps. ggf unsauber gecodet (stammt nicht von mir
stammt aus einem ~8 jahre alten projekt))
; Created: 14.10.2016 16:58:45
; Author : Proto
;
; PORTB.0 Eingang, angeschlossen an LAC
; PORTD.1 I/O, angeschlossen an DAC
; PORTC.0 Taster 1 Wischwasser
; PORTC.1 Taster 2 Kühlwasser
; PORTC.2 Taster 3 Ölstand
.include "m8def.inc" ; Lade ATmega8 Definitionen
.def temp = r16 ; Register 15 wird als variabel temp benutzt
.def tc1 = r25 ; Register 25 wird als variabel tc1 benutzt
.def tc2 = r26 ; Register 26 wird als variabel tc2 benutzt
.def sum = r20 ; Register 20 wird als variabel sum benutzt
.equ UBRRVAL = 25 ; Baudrate 9600 bei 4MHz
;Stackpointer initialisieren
ldi temp, LOW(RAMEND) ; Lade RAM Endaddresse (Low) in Stackpointer (Low)
out SPL, temp
ldi temp, HIGH(RAMEND) ; Lade RAM Endaddresse (High) in Stackpointer (High)
out SPH, temp
; Baudrate einstellen
ldi temp, LOW(UBRRVAL) ; Lade Baudratenwert (Low) in UART Statusregister (Low)
out UBRRL, temp
ldi temp, HIGH(UBRRVAL) ; Lade Baudratenwert (High) in UART Statusregister (High)
out UBRRH, temp
; Frame-Format: 8 Bit
ldi temp, 0b10100110 ; Lade Datenformat für UART
out UCSRC, temp
sbi UCSRB,TXEN ; Aktiviere TX am UART
ldi temp,$0C ; Aktiviere PORTB.0 (4-7) als Eingang und PORTB.1-3 auf Ausgang
out DDRB,temp
Start:
;Positive Flanke erkennen
fl1: sbic PINB, 0 ; Eingang Low?
rjmp fl1 ; Falls nicht springe nach fl1
fl2: sbis PINB, 0 ; Eingang High?
rjmp fl2 ; Falls nicht springe nach fl2
rcall t10ms ; Zeitschleife, warte 40ms
rcall t10ms
rcall t10ms
rcall t10ms
sbis PINB, 0 ; Eingang Low? -> Andere Nachricht akiv?
rjmp Start ; Falls ja, springe nach Start
ldi sum,0 ; Prüfsumme initialisieren
ldi temp, $20 ; Erstes Schriftzeichen laden
add sum, temp ; Schriftzeichen zur Prüfsumme addieren
rcall serout ; Sendeunterprogramm aufrufen
ldi temp, $20
add sum, temp
rcall serout
ldi temp, $48
add sum, temp
rcall serout
ldi temp, $61
add sum, temp
rcall serout
ldi temp, $6c
add sum, temp
rcall serout
ldi temp, $6c
add sum, temp
rcall serout
ldi temp, $6f
add sum, temp
rcall serout
ldi temp, $20
add sum, temp
rcall serout
ldi temp, $50
add sum, temp
rcall serout
ldi temp, $72
add sum, temp
rcall serout
ldi temp, $6f
add sum, temp
rcall serout
ldi temp, $74
add sum, temp
rcall serout
ldi temp, $6f
add sum, temp
rcall serout
ldi temp, $20
add sum, temp
rcall serout
ldi temp, $20
add sum, temp
rcall serout
ldi temp, $20
add sum, temp
rcall serout ; Sendeunterprogramm aufrufen
inc sum ; add checksumm
mov temp, sum ; Prüfsumme laden
rcall serout ; Sendeunterprogramm aufrufen
rcall t10ms ; Zeitschleife, warte 10ms
rjmp Start ; Rücksprung, Ende des Programms
serout:
; Sendeunterprogramm
sbis UCSRA,UDRE ; Warten bis UDR für das nächste Byte bereit ist
rjmp serout
out UDR, temp ; Inhalt von temp auf UDR ausgeben
ret ; zurück zum Hauptprogramm
t10ms:
; 10ms Zeitschleife
ldi tc1, $42
tloop1: ldi tc2, $C9
tloop2: dec tc2
brne tloop2
dec tc1
brne tloop1
ret