Habe es nun doch mit lokalen variablen gemacht, spart überlegungen und somit dass ich immer fragen guckend auf meinen monitor starre *G*
Drawabs und drawrel sind drin.
(achja ich habe die verstärkung am oszi verstellt, deshalb ist das objekt auf dem bild so dammed klein)
Code:'################################################################################################################# '#################### Achtung stack einstellungen verdoppeln!! ################################################### '################################################################################################################# $regfile = "m128def.dat" $crystal = 16000000 '######### Variablen Hauptprogramm Dim Xh1 As Integer Dim Xh2 As Integer Dim Yh1 As Integer Dim Yh2 As Integer Dim Aktx As Integer 'aktuelle x position Dim Akty As Integer 'aktuelle y position '######### Variablen Line Funktion Dim Xlen As Integer Dim Ylen As Integer Dim Xa As Integer Dim Ya As Integer Dim Temp As Integer Dim N As Byte '########## Hilfsvariablen für drawrel Dim Xr1 As Integer Dim Yr1 As Integer '########### Deklarationsteil für Subroutinen Declare Sub Drawabs(byval X3 As Integer , Byval Y3 As Integer) 'Zeichnet vom aktuellen Punkt zu den angegebenen kordinaten eine linie Declare Sub Drawrel(byval X2 As Integer , Byval Y2 As Integer) 'Zeichnet vom aktuellen Punkt zur relativen position eine linie Declare Sub Drawline(byval Xs As Integer , Byval Ys As Integer , Byval Xe As Integer , Byval Ye As Integer) Declare Sub Move(byval X1 As Integer , Byval Y1 As Integer) Declare Sub Showdot '########### Deklarationsteil für Ports X Alias Porta Y Alias Portd Z Alias Portf.1 'wenn f=0 dann ist der punkt sichtbar, wenn f=1 then ist der punkt aus Config X = Output Config Y = Output '################# Start Hauptprogramm Z = 1 ' dunkel Do Call Move(50 , 50) Call Drawrel(0 , 100) Call Drawrel(100 , 0) Call Drawrel(0 , -100) Call Drawrel( -100 , 0) 'wieder bei 50,50 Call Drawabs(150 , 150) Call Drawabs(100 , 200) Call Drawabs(50 , 150) Call Drawrel(100 , -100) Loop End '################# Ende Haputprogramm; beginn subroutinen######################################################### Sub Drawabs(byval X3 As Integer , Byval Y3 As Integer) Call Drawline(aktx , Akty , X3 , Y3) End Sub '############################################################################################################ Sub Drawrel(byval X2 As Integer , Byval Y2 As Integer) Xr1 = Aktx + X2 Yr1 = Akty + Y2 Call Drawline(aktx , Akty , Xr1 , Yr1) End Sub '############################################################################################################# Sub Drawline(byval Xs As Integer , Byval Ys As Integer , Byval Xe As Integer , Byval Ye As Integer) 'Sub Drawline '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: Temp = Xlen Shift Temp , Right , 1 Do Call Move(xs , Ys) 'position setzen Call Showdot 'punkt zeigen 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: Temp = Ylen Shift Temp , Right , 1 Do Call Move(xs , Ys) 'position setzen Call Showdot 'punkt zeigen 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: End Sub '###################################################################################################################### Sub Move(byval X1 As Integer , Byval Y1 As Integer) 'Bewegt den punkt gedimmt zu der angegebenen position (xs,ys) X = Low(x1) 'x setzen Y = Low(y1) 'y setzen Aktx = Low(x1) 'x setzen Akty = Low(y1) 'y setzen End Sub '###################################################################################################################### Sub Showdot 'zeigt den punkt an seiner aktuellen position an Z = 0 'licht ein Waitus 2 'kurz warten Z = 1 'lich wieder aus End Sub '#####################################################################################################################







Zitieren

Lesezeichen