Hallo Sebastian,
ich habe deinen Code noch mal überarbeitet.
Sollte jetzt funktionieren.
Hauptproblem war das Bascom die Byte-Variablen nicht
als vorzeichenbehaftete Zahlen betrachten kann.
Deshalb habe ich es auf Integer umgeändert.
Probier es doch mal aus,und gib Bescheid, was passiert.
Müsste ein Dreieck angezeigt werden.
Gruß Jan
Code:$regfile = "m128def.dat" $crystal = 16000000 '#########Variablen Line Funktion Dim Xlen As Integer Dim Ylen As Integer Dim Xa As Integer Dim Ya As Integer Dim Temp As Integer '################################# Declare Sub Drawline(byval Xs As Integer , Byval Ys As Integer , Byval Xe As Integer , Byval Ye As Integer) Config Porta = Output Config Portc = Output Config Portf = Output Z Alias Portf.1 Z = 1 ' dunkel Do Call Drawline(0 , 0 , 100 , 80 ) Call Drawline(100 , 80 , 22 , 33) Call Drawline(22 , 33 , 0 , 0) Waitms 1 Loop End Sub Drawline(xs As Integer , Ys As Integer , Xe As Integer , Ye As Integer) ';Längen für x und y ausrechnen Xlen = Xe - Xs Ylen = Ye - Ys ';Schrittrichtung für x und Y festlegen If Xlen >= 0 Then Xa = 1 Else Xa = 255 If Ylen >= 0 Then Ya = 1 Else Ya = 255 ';wenn xlänge grösser ist, dann laufen wir an der X-Achse entlang '; ansonsten an der Y-Achse If Xlen < 0 Then Xlen = Xlen * -1 If Ylen < 0 Then Ylen = Ylen * -1 If Xlen < Ylen Then Goto Walky Walkx: Z = 0 'licht einschalten Temp = Xlen Do Porta = Low(xs) Portc = Low(ys) Waitus 1 Xs = Xs + Xa ':immer einen Schritt in x-Richtung weiter Temp = Temp - Ylen ';Schritt in Y-Richtung nötig ? If Temp <= 0 Then ';wenn <=0 dann ja Temp = Temp + Xlen '; Ys = Ys + Ya ';Schritt in Y-Richtung End If Loop Until Low(xs) = Low(xe) ';Wiederholen bis Ende der Linie Goto Endofsub Walky: Z = 0 Temp = Ylen Do Porta = Low(xs) Portc = Low(ys) Waitus 1 Ys = Ys + Ya Temp = Temp - xlen If Temp < 0 Then Temp = Temp + Ylen Xs = Xs + Xa End If Loop Until Low(ys) = Low(ye) Endofsub: Z = 1 'und wieder aus End Sub







Zitieren

Lesezeichen