- Labornetzteil AliExpress    Werbung      
Ergebnis 1 bis 10 von 94

Thema: Scopeuhr mit BASCOM??

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370
    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
    
    '#####################################################################################################################
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken dsc00026.jpg  

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

    Werbung      Solar Speicher und Akkus Tests