Code:
$regfile = "m32def.dat"
$crystal = 16000000
'#########Variablen Line Funktion
Dim Xs As Integer
Dim Xe As Integer
Dim Ys As Integer
Dim Ye As Integer
Dim Xlen As Integer
Dim Ylen As Integer
Dim Xa As Integer
Dim Ya As Integer
Dim Temp As Integer
Dim N As Byte
'#################################
Declare Sub Drawline()
Config Porta = Output
Config Portc = Output
'Z Alias Portf.1
'Z = 1 ' dunkel
Do
Restore Daten:
For N = 1 To 14
Read Xs
Read Ys
Read Xe
Read Ye
Call Drawline()
Next
Loop
End
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:
' Z = 0 'licht einschalten
Temp = Xlen
Shift Temp , Right , 1
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
Shift Temp , Right , 1
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
Daten:
Data 0% , 0% , 200% , 0%
Data 200% , 0% , 200% , 200%
Data 200% , 200% , 0% , 200%
Data 0% , 200% , 0% , 0%
Data 20% , 20% , 180% , 80%
Data 180% , 80% , 80% , 180%
Data 80% , 180% , 20% , 20%
Data 100% , 120% , 80% , 120%
Data 80% , 120% , 80% , 100%
Data 80% , 100% , 90% , 100%
Data 90% , 100% , 100% , 90%
Data 100% , 90% , 100% , 80%
Data 100% , 80% , 90% , 70%
Data 90% , 70% , 80% , 70%
Lesezeichen