- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 94

Thema: Scopeuhr mit BASCOM??

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #30
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.12.2004
    Ort
    LEV
    Beiträge
    505
    Hallo,
    So, hier wie verspochen nochmal der Code.
    Hab jetzt etwas Spielerei und die Uhr eingebaut.
    Um die ging es ja eigentlich ursprünglich.
    Aber die Uhr kann man noch nicht stellen.
    Das muss noch gemacht werden.

    @Sebastian: Du wirst die Z-Funktion umdrehen müssen.
    Im sechsten Abschnitt des Progs. Vor Start-Hauptprogramm.

    Gruß Jan

    Code:
    $regfile = "m32def.dat"
    $crystal = 16000000
    
    '########### Variablen Vektorgrafik
    Dim X As Integer
    Dim Y As Integer
    Dim W As Integer
    Dim S As Integer
    Dim Z As Integer
    Dim Xa As Integer
    Dim Ya As Integer
    Dim Xe As Integer
    Dim Ye As Integer
    Dim Xs As Integer
    Dim Ys As Integer
    Dim Xl As Integer
    Dim Yl As Integer
    Dim Xo As Integer
    Dim Yo As Integer
    Dim Zo As Integer
    Dim T As Integer
    
    Dim Sw As Integer
    Dim Cw As Integer
    
    
    '######### Variablen Hauptprogramm
    Dim H As Integer
    Dim Hs As Integer
    Dim Ss As Byte
    Dim S1 As Byte
    Dim S2 As Byte
    
    Dim Sina(340) As Integer
    Dim W1 As Integer
    Dim N As Integer
    
    Dim Sekunde As Byte
    Dim Sekd As Byte
    Dim Minute As Byte
    Dim Mind As Byte
    Dim Stunde As Byte
    Dim Stud As Byte
    Dim St2 As Byte
    Const Timeconst = 65536 - 15625
    
    
    '########### Deklarationsteil für Subroutinen
    Declare Sub Moverel
    Declare Sub Moveabs
    Declare Sub Drawline
    Declare Sub Drawrel                                         'Zeichnet vom aktuellen Punkt zur relativen position eine linie
    Declare Sub Drawabs                                         'Zeichnet vom aktuellen Punkt zu den angegebenen kordinaten eine linie
    Declare Sub Showdot
    Declare Sub Drawobj
    Declare Sub Rotobj
    
    Declare Sub Zeigeuhr
    Declare Sub Shownumb(byval Number As Byte)
    Declare Sub Showdigit(digit As Byte)
    
    '########### Deklarationsteil für Ports
    Xp Alias Porta
    Yp Alias Portc
    Zp Alias Portd.7                                            'wenn 1 dann ist der punkt sichtbar, wenn 0 then ist der punkt aus
    
    Config Xp = Output
    Config Yp = Output
    Config Portd = Output
    
    '#### Hier ändern für Z-Funktion ############
    Const Zan = 1
    Const Zaus = 0
    
    
    '################# Start Hauptprogramm
    
    Zp = Zaus
    Ss = 0
    
    Stunde = 20 : Stud = Makebcd(stunde)
    Minute = 15 : Mind = Makebcd(minute)
    Sekunde = 0 : Sekd = Makebcd(sekunde)
    
    
    Restore Sintab
    For H = 1 To 256
    Read Sina(h)
    Next
    
    Config Timer1 = Timer , Prescale = 1024
    On Timer1 Timint
    Timer1 = Timeconst
    Enable Interrupts
    Enable Timer1
    
    
    
    
    Do
    
      X = 0 : Y = 0 : Moveabs
      X = 40 : Y = 30 : Drawabs
      X = 72 : Y = 11 : Drawabs
      X = 40 : Y = 0 : Moveabs
      X = 110 : Y = 25 : Drawabs
      X = 160 : Y = 0 : Drawabs
      X = 134 : Y = 13 : Moveabs
      X = 160 : Y = 38 : Drawabs
      X = 190 : Y = 0 : Drawabs
      X == 220 : Y = 1 : Drawabs
      X = 255 : Y = 40 : Drawabs
      X = 238 : Y = 22 : Moveabs
      X = 210 : Y = 38 : Drawabs
      X = 184 : Y = 7 : Drawabs
      X = 0 : Y = 0 : Moveabs
    
    
    '  Y = 50
    '  X = 0 : Restore Obj0 : Drawobj
    '  X = 22 : Restore Obj1 : Drawobj
    '  X = 44 : Restore Obj2 : Drawobj
    '  X = 66 : Restore Obj3 : Drawobj
    '  X = 88 : Restore Obj4 : Drawobj
    '  X = 110 : Restore Obj5 : Drawobj
    '  X = 132 : Restore Obj6 : Drawobj
    '  X = 154 : Restore Obj7 : Drawobj
    '  X = 176 : Restore Obj8 : Drawobj
    '  X = 198 : Restore Obj9 : Drawobj
    '  X = 220 : Restore Objdp : Drawobj
    
     W1 = W1 + 4 : If W1 > 255 Then W1 = 0
      Ss = Ss + 1
      S1 = S1 - 2 : If S1 < 0 Then S1 = 254
      S2 = S2 - 3 : If S2 < 0 Then S2 = S2 + 256
    
      Restore Spaceship : X = Ss : Y = 20 : Drawobj
      Restore Spaceship : X = S1 : Y = 15 : W = 128 : Rotobj
      Restore Obj5 : X = 40 : Y = 60 : W = W1 : Rotobj
      Restore Obj2 : X = 75 : Y = 40 : W = W1 * 2 : W = W And 255 : Rotobj
      Restore Spaceship : X = S2 : Y = 90 : W = 256 - W1 : Rotobj
      Restore Obj 4 : X = 140 : Y = 55 : Rotobj
    
      Zeigeuhr
    
      Loop
    End
    
    
    
    '################# Ende Hauptprogramm; beginn subroutinen
    Timint:
    Timer1 = Timeconst
    Incr Sekunde
    
    If Sekunde = 60 Then
      Sekunde = 0
      Incr Minute
      If Minute = 60 Then
        Minute = 0
        Incr Stunde
        If Stunde = 24 Then
        Stunde = 0
        End If
      End If
    End If
    Sekd = Makebcd(sekunde)
    Mind = Makebcd(minute)
    Stud = Makebcd(stunde)
    Return
    
    
    Sub Zeigeuhr
    X = 36 : Y = 154 : Moveabs
    X = 220 : Drawabs
    Y = 116 : Drawabs
    X = 36 : Drawabs
    Y = 154 : Drawabs
    
    X = 40 : Y = 120
    Call Shownumb(stud)
    Restore Objdp : Drawobj
    X = X + 22
    Call Shownumb(mind)
    Restore Objdp : Drawobj
    X = X + 22
    Call Shownumb(sekd)
    End Sub
    
    
    
    Sub Shownumb(byval Number As Byte)
    St2 = Number / 16
    Call Showdigit(st2)
    X = X + 22
    Call Showdigit(number)
    X = X + 22
    End Sub
    
    Sub Showdigit(byval Digit As Byte)
      Digit = Digit And 15
      Select Case Digit:
        Case 0 : Restore Obj0
        Case 1 : Restore Obj1
        Case 2 : Restore Obj2
        Case 3 : Restore Obj3
        Case 4 : Restore Obj4
        Case 5 : Restore Obj5
        Case 6 : Restore Obj6
        Case 7 : Restore Obj7
        Case 8 : Restore Obj8
        Case 9 : Restore Obj9
      End Select
      Drawobj
    End Sub
    
    
    
    '##########################
    
    Sub Drawabs
    Xe = X : Ye = Y
    Drawline
    End Sub
    '#################################
    
    Sub Drawrel
    Xe = Xa + X
    Ye = Ya + Y
    Drawline
    End Sub
    
    Sub Drawline:
    Xl = Xe - Xa : Xs = 1
    If Xl < 0 Then
     Xl = 0 - Xl : Xs = -1
    End If
    Yl = Ye - Ya : Ys = 1
    If Yl < 0 Then
     Yl = 0 - Yl : Ys = -1
    End If
    
    If Xl < Yl Then Goto Walky
    
    Walkx:
      T = Xl
      Shift T , Right , 1
      Do
        Zp = Zan
        Xp = Xa : Yp = Ya
        Xa = Xa + Xs                                            ':immer einen Schritt in x-Richtung weiter
        T = T - Yl                                              ';Schritt in Y-Richtung nötig ?
        If T <= 0 Then                                          ';wenn <=0 dann ja
          T = T + Xl                                            ';
          Ya = Ya + Ys                                          ';Schritt in Y-Richtung
        End If
        Loop Until Low(xa) = Low(xe)                            ';Wiederholen bis Ende der Linie
        Zp = Zaus
      Goto Ex1
    
    Walky:
      T = Yl
      Shift T , Right , 1
      Do
      Zp = Zan
        Xp = Xa : Yp = Ya
        Ya = Ya + Ys                                            ':immer einen Schritt in x-Richtung weiter
        T = T - Xl                                              ';Schritt in Y-Richtung nötig ?
        If T <= 0 Then                                          ';wenn <=0 dann ja
          T = T + Yl                                            ';
          Xa = Xa + Xs                                          ';Schritt in Y-Richtung
        End If
        Loop Until Low(ya) = Low(ye)                            ';Wiederholen bis Ende der Linie
        Zp = Zaus
    Ex1:
        End Sub
    '##############################
    
    Sub Moveabs                                                 'Bewegt den punkt gedimmt zu der angegebenen position (x,y)
    Xa = Low(x)                                                 'Xaktuell setzen
    Ya = Low(y)                                                 'Xaktuell setzen
    Xp = Low(x)                                                 'Xport setzen
    Yp = Low(y)                                                 'yPort setzen
    End Sub
    
    '##############################
    
    Sub Moverel
    Xa = Xa + X : Ya = Ya + Y
    End Sub
    
    '##############################
    
    Sub Showdot                                                 'zeigt den punkt an seiner aktuellen position an
    Zp = Zan                                                    'licht ein
    Waitus 2                                                    'kurz warten
    Zp = Zaus                                                   'lichtwieder aus
    End Sub
    
    '##############################
    'Stellt Objekt auf Position X,Y dar.
    ' X und Y sind >=0 und <=255
    Sub Drawobj
    Xo = X : Yo = Y
    Call Moveabs
    Do
      Read X : Read Y : Read Z
      If Z > 0 Then Call Drawrel Else Call Moverel
    Loop Until Z > 1
    X = Xo : Y = Yo
    End Sub
    
    '##############################
    'Stellt Objekt Auf Position X , Y um den Winkel W gedreht dar.
    ' X und Y und W sind >=0 und <=255
    
    Sub Rotobj
    Xo = X : Yo = Y : W = W + 1
    Sw = Sina(w)
    Cw = W + 64 : If Cw > 256 Then Cw = Cw - 256 : Cw = Sina(cw)
    W = W - 1
    Call Moveabs
    Do
      Read Xl : Read Yl : Read Z
      X = Cw * Xl : Y = Sw * Yl : X = X - Y
      Y = Sw * Xl : Xl = Cw * Yl : Y = Y + Xl
      X = X / 256 : Y = Y / 256
    
      If Z > 0 Then Call Drawrel Else Call Moverel
    Loop Until Z > 1
    X = Xo : Y = Yo
    End Sub
    
    
    '##############################
    
    Sintab:
    Data 0% , 6% , 13% , 19% , 25% , 31% , 38% , 44%
    Data 50% , 56% , 62% , 68% , 74% , 80% , 86% , 92%
    Data 98% , 104% , 109% , 115% , 121% , 126% , 132% , 137%
    Data 142% , 147% , 152% , 157% , 162% , 167% , 172% , 177%
    Data 181% , 185% , 190% , 194% , 198% , 202% , 206% , 209%
    Data 213% , 216% , 220% , 223% , 226% , 229% , 231% , 234%
    Data 237% , 239% , 241% , 243% , 245% , 247% , 248% , 250%
    Data 251% , 252% , 253% , 254% , 255% , 255% , 256% , 256%
    Data 256% , 256% , 256% , 255% , 255% , 254% , 253% , 252%
    Data 251% , 250% , 248% , 247% , 245% , 243% , 241% , 239%
    Data 237% , 234% , 231% , 229% , 226% , 223% , 220% , 216%
    Data 213% , 209% , 206% , 202% , 198% , 194% , 190% , 185%
    Data 181% , 177% , 172% , 167% , 162% , 157% , 152% , 147%
    Data 142% , 137% , 132% , 126% , 121% , 115% , 109% , 104%
    Data 98% , 92% , 86% , 80% , 74% , 68% , 62% , 56%
    Data 50% , 44% , 38% , 31% , 25% , 19% , 13% , 6%
    Data 0% , -6% , -13% , -19% , -25% , -31% , -38% , -44%
    Data -50% , -56% , -62% , -68% , -74% , -80% , -86% , -92%
    Data -98% , -104% , -109% , -115% , -121% , -126% , -132% , -137%
    Data -142% , -147% , -152% , -157% , -162% , -167% , -172% , -177%
    Data -181% , -185% , -190% , -194% , -198% , -202% , -206% , -209%
    Data -213% , -216% , -220% , -223% , -226% , -229% , -231% , -234%
    Data -237% , -239% , -241% , -243% , -245% , -247% , -248% , -250%
    Data -251% , -252% , -253% , -254% , -255% , -255% , -256% , -256%
    Data -256% , -256% , -256% , -255% , -255% , -254% , -253% , -252%
    Data -251% , -250% , -248% , -247% , -245% , -243% , -241% , -239%
    Data -237% , -234% , -231% , -229% , -226% , -223% , -220% , -216%
    Data -213% , -209% , -206% , -202% , -198% , -194% , -190% , -185%
    Data -181% , -177% , -172% , -167% , -162% , -157% , -152% , -147%
    Data -142% , -137% , -132% , -126% , -121% , -115% , -109% , -104%
    Data -98% , -92% , -86% , -80% , -74% , -68% , -62% , -56%
    Data -50% , -44% , -38% , -31% , -25% , -19% , -13% , -6%
    
    
    '######## Objektdefinitionen
    'X, Y, Z
    'X, Y, Z
    'X und Y sind relative Positionen
    'z=0 bedeutet moverel
    'z=1 bedeutet sichtbare Linie
    'Ende Objekt ist wenn z=3
    
    Spaceship:
    Data 15% , 8% , 1%
    Data -15% , 8% , 1%
    Data 6% , -8% , 1%
    Data -6% , -8% , 1%
    Data 4% , 8% , 0%
    Data -5% , 3% , 1%
    Data 5% , -3% , 1%
    Data -5% , 0% , 1%
    Data 5% , 0% , 1%
    Data -5% , -3% , 1%
    Data 5% , 3% , 3%
    
    
    Obj1:
    Data 0% , 16% , 0%
    Data 16% , 14% , 1%
    Data 0% , -30% , 3%
    
    Obj2:
    Data 0% , 26% , 0%
    Data 0% , 2% , 1%
    Data 4% , 2% , 1%
    Data 9% , 0% , 1%
    Data 5% , -4% , 1%
    Data 0% , -3% , 1%
    Data -18% , -23% , 1%
    Data 6% , 3% , 1%
    Data 8% , 0% , 1%
    Data 6% , -3% , 3%
    
    Obj3:
    Data 0% , 3% , 0%
    Data 4% , -3% , 1%
    Data 10% , 0% , 1%
    Data 4% , 3% , 1%
    Data 0% , 10% , 1%
    Data -3% , 3% , 1%
    Data -2% , 0% , 1%
    Data 2% , 0% , 0%
    Data 3% , 3% , 1%
    Data 0% , 8% , 1%
    Data -4% , 3% , 1%
    Data -10% , 0% , 1%
    Data -4% , -3% , 3%
    
    Obj4:
    Data 11% , 0% , 0%
    Data 0% , 17% , 1%
    Data 6% , -5% , 0%
    Data -17% , 0% , 1%
    Data 17% , 18% , 3%
    
    Obj5:
    Data 0% , 4% , 0%
    Data 4% , -4% , 1%
    Data 10% , 0% , 1%
    Data 5% , 5% , 1%
    Data 0% , 8% , 1%
    Data -5% , 5% , 1%
    Data -9% , 0% , 1%
    Data -5% , -6% , 1%
    Data 0% , 18% , 1%
    Data 17% , 0% , 3%
    
    Obj6:
    Data 0% , 10% , 0%
    Data 0% , -5% , 1%
    Data 4% , -4% , 1%
    Data 10% , 0% , 1%
    Data 5% , 5% , 1%
    Data 0% , 8% , 1%
    Data -5% , 5% , 1%
    Data -9% , 0% , 1%
    Data -5% , -6% , 1%
    Data 0% , 15% , 1%
    Data 4% , 4% , 1%
    Data 8% , 0% , 1%
    Data 5% , -4% , 3%
    
    Obj7:
    Data 0% , 30% , 0%
    Data 12% , 0% , 1%
    Data 0% , -30% , 1%
    Data -6% , 15% , 0%
    Data 12% , 0% , 3%
    
    Obj8:
    Data 4% , 0% , 0%
    Data 10% , 0% , 1%
    Data 4% , 5% , 1%
    Data 0% , 6% , 1%
    Data -18% , 8% , 1%
    Data 0% , 6% , 1%
    Data 4% , 4% , 1%
    Data 10% , 0% , 1%
    Data 4% , -5% , 1%
    Data 0% , -6% , 1%
    Data -18% , -8% , 1%
    Data 0% , -6% , 1%
    Data 4% , -5% , 3%
    
    Obj9:
    Data 0% , 5% , 0%
    Data 4% , -5% , 1%
    Data 10% , 0% , 1%
    Data 4% , 5% , 1%
    Data 0% , 20% , 1%
    Data -4% , 5% , 1%
    Data -10% , 0% , 1%
    Data -4% , -5% , 1%
    Data 0% , -7% , 1%
    Data 4% , -5% , 1%
    Data 10% , 0% , 1%
    Data 4% , 4% , 3%
    
    Obj0:
    Data 0% , 5% , 0%
    Data 4% , -5% , 1%
    Data 10% , 0% , 1%
    Data 4% , 5% , 1%
    Data 0% , 20% , 1%
    Data -4% , 5% , 1%
    Data -10% , 0% , 1%
    Data -4% , -5% , 1%
    Data 0% , -20% , 3%
    
    Objdp:
    Data 7% , 7% , 0%
    Data 4% , 0% , 1%
    Data 0% , 4% , 1%
    Data -4% , 0% , 1%
    Data 0% , -4% , 1%
    Data 0% , 12% , 0%
    Data 4% , 0% , 1%
    Data 0% , 4% , 1%
    Data -4% , 0% , 1%
    Data 0% , -4% , 3%
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken ve5.jpg  

Berechtigungen

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

Solar Speicher und Akkus Tests