- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 15

Thema: Programm "ausdünnen"

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #11
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    52
    Beiträge
    765
    Code? Edit:

    Durch den gosub aufruf am Ende von Color_fading sollte Dein Stack irgendwann überlaufen:

    Ich habe es auf 22% bekommen. Keine Ahnung, ob es noch läuft

    Code:
    $regfile = "m8def.dat"
    $crystal = 8000000
    $hwstack = 80
    $swstack = 64
    $framesize = 60
    
    
    Config Pinc.0 = Input
    Config Pinc.1 = Input
    Taster1 Alias Pinc.0
    Taster2 Alias Pinc.1
    
    Dim Zaehler As Word       ' Zaehler für Rot oder/und Grün
    Dim Zaehler2 As Word       'Zaehler, wenn eine Farbe nur teilweise dimmen soll
    Dim Zaehler_blau As Word       ' Zaehler ausschließlich für Blau, da Blau vorgeteilt werden muss (Zaehler läuft 4mal schneller)
    Dim V As Byte       ' Zählvariable zum Steuern durch das Farbauswahlmenü
    Dim V2 As Byte       ' Zählvariable zum Überspringen der Aufdimmung beim Color-Fading (Fading durch alle Farben)
    Dim P As Bit       ' Zählvariable zum Anwählen der Pulsor-Programme
    
    Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 64       ' Timer für Rot und Grün
    Config Timer2 = Pwm , Compare Pwm = Clear Down , Prescale = 1 , Pwm = On , Prescale = 1       'Timer für Blau
    Enable Timer0
    Start Timer1
    Start Timer2
    Enable Interrupts       'Ein Überbleibsel, als ich noch einen zusätzlichen Wartetimer nutzte, wird demnächst aber rausgenommen
    
    Pwm1a = 0
    Pwm1b = 0
    
    
    Rot Alias Pwm1a
    Gruen Alias Pwm1b
    Blau Alias Ocr2
    
    
    Declare Sub Rot_fading
    Declare Sub Orange_fading
    Declare Sub Gelb_fading
    Declare Sub Gruen_fading
    Declare Sub Azur_fading
    Declare Sub Blau_fading
    Declare Sub Violet_fading
    Declare Sub Weiss_fading
    Declare Sub Color_fading
    
    '**************************************
    '   ***** Hauptprogramm Teil I *****
    '**************************************
    
    
    Do
    
       Debounce Taster1 , 0 , Subtaster1 , Sub
       Debounce Taster2 , 0 , Subtaster2 , Sub
    
    Loop
    End
    
    
    ' ***** Hauptprogramm Teil II *****
    
    Subtaster1:
    
       V = V + 1
       select case V
          case 1
             gosub r1023
    '         Rot = 1023       '                                    ROT
          case 2
             gosub r1023
             gruen=341
    '         Rot = 1023 : Gruen = 341       '                      ORANGE
          case 3
             gosub r1023
             gosub g1023
    '         Rot = 1023 : Gruen = 1023       '                     GELB
          case 4
             Rot = 0       '                                       GRÜN
          case 5
             gosub  G1023
             gosub b1023
    '         Gruen = 1023 : Blau = 1023       '                    AZUR
          case 6
             Gruen = 0       '                                     BLAU
          case 7
             gosub r1023
    
          '         Rot = 1023       '                                    VIOLET
          case 8
             gosub G1023
             gosub b1023
    '         Gruen = 1023 : Blau = 1023       '                    WEISS
          case 9
             gosub allenull
             Do
                gosub r1023
                gosub g1023
                gosub b1023
    '            Rot = 1023 : Gruen = 1023 : Blau = 1023       ' Das schnelle Aufblinken soll zeigen, dass sich hier ein Farbwechselmodus verbirgt.
    
                waitms 100        'Da ich erst seit ein paar Tagen die BASCOM-Vollversion habe, musste ich die 4K einhalten. So war es am schlankesten ^^
                gosub allenull
                waitms 100
             If Taster1 = 0 Then Exit Do
             If Taster2 = 0 Then Call Color_fading
             Loop
          case 10
             gosub allenull
             V = 0       '        ALLE LED AUS
       end select
    Return
    
    r1023:
       rot = 1023
    return
    g1023:
       gruen = 1023
    return
    b1023:
       blau = 1023
    return
    
    
    allenull:
       Rot = 0 : Gruen = 0 : Blau = 0
    return
    
    pause:
       waitms 10
    return
    
    pausel:
       waitms 1000
    return
    
    
    Subtaster2:
    
    P = 0
    If Taster2 = 0 Then Toggle P       'Ab hier können die Unterprogramme angewählt werden. Sie lassen die gewählte Farbe pulsieren.
    
       if p=1 then
          gosub fadings
       end if
    
    Return
    
    ' (**** ACHTUNG **** Die FOR...Next-Schleife kann durch Zwischensetzen einer
    ' Bedingung direkt zwischen FOR...TO und der Schrittzeit (Waitms) abgebrochen
    ' werden!!! UNBEDINGT MERKEN!)
    
    ' Die 3 Zeilen hierrüber sind ein Merkzettel für mich wo und wie ich die FOR-NEXT zu jedem Zeitpunkt unterbrechen kann. Für mich ein echter Durchbruch!
    fadings:
       For Zaehler = 1023 To 0 Step -2       '
          If Taster1 = 0 Then return      ' **** ACHTUNG ****  (Zählen noch zu der Anmerkung hierüber, sonst keine Bedeutung)
          gosub fadecase
       Next Zaehler
       gosub pausel
       For Zaehler = 0 To 1023 Step 2
          If Taster1 = 0 Then return       ' **** ACHTUNG ****
          gosub fadecase
       Next Zaehler
       gosub pausel
    return
    
    fadecase:
       gosub pause
       select case v
          case 1
             gosub rz
          case 2
             gosub rgz
          case 3
             gosub grz
          case 4
             gosub gz
          case 5
             gosub bzbgz
          case 6
             gosub bzb
          case 7
             gosub rz
             gosub bzb
          case 8
             gosub grz
             gosub BZB
       end select
    return
    
    
    ' ***** Das Farbwechsel-Unterprogramm *****
    
    Sub Color_fading:
    
    Do
    '--- Rot ---
       Rot = 0 : Gruen = 0 : Blau = 0
       For Zaehler = 0 To 1023 Step 2
          If Taster1 = 0 Then Exit Sub
          gosub pause
          gosub rz
       Next Zaehler
       gosub pausel
       V2 = 2
       'Gosub Rot_aufgedimmt 'wozu?
    
    Rot_aufgedimmt:
    '--- Orange ---
       For Zaehler = 0 To 1023 Step 2
          gosub z2z3
          If Taster1 = 0 Then Exit Sub
          gosub pause
          Gruen = Zaehler2
       Next Zaehler
       gosub pausel
    '--- Gelb ---
       For Zaehler = 323 To 1023 Step 2
          If Taster1 = 0 Then Exit Sub
          gosub pause
          Gruen = Zaehler
       Next Zaehler
       gosub pausel
    '--- Grün ---
       For Zaehler = 1023 To 0 Step -2
          If Taster1 = 0 Then Exit Sub
          gosub pause
          gosub rz
       Next Zaehler
       gosub pausel
    '--- Weiß ---
       For Zaehler = 0 To 1023 Step 2
          gosub zbz4
          If Taster1 = 0 Then Exit Sub
          gosub pause
          gosub rz
          gosub  BZB
       Next Zaehler
       gosub pausel
    '--- Azur ---
       For Zaehler = 1023 To 0 Step -2
          If Taster1 = 0 Then Exit Sub
          gosub pause
          gosub rz
       Next Zaehler
       gosub pausel
    '--- Blau ---
       For Zaehler = 1023 To 0 Step -2
          If Taster1 = 0 Then Exit Sub
          gosub pause
          gosub gz
       Next Zaehler
       gosub pausel
    '--- Violet ---
       For Zaehler = 0 To 1023 Step 2
          If Taster1 = 0 Then Exit Sub
          gosub pause
          gosub rz
       Next Zaehler
       gosub pausel
    '--- Übergang violet zu Rot ---
       For Zaehler = 1023 To 0 Step -2
          gosub zbz4
          If Taster1 = 0 Then Exit Sub
          gosub pause
          gosub bzb
       Next Zaehler
       gosub pausel
       goto Rot_aufgedimmt
    Loop
    End Sub
    
    z2z3:
       Zaehler2 = Zaehler / 3
    return
    
    zbz4:
       Zaehler_blau = Zaehler / 4
    return
    
    grz:
       gosub gz
    rz:
       Rot = Zaehler
    return
    
    bzbgz:
       gosub bzb
    gz:
       Gruen = Zaehler
    return
    
    bzb:
       Blau = Zaehler_blau
    return
    
    rgz:
       gosub  RZ
       Gruen = Zaehler2
    return
    Man kann viel sparen, indem man gleichen Code in Subs auslagert.
    Geändert von peterfido (16.11.2014 um 08:57 Uhr)
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

Ähnliche Themen

  1. [ERLEDIGT] Erstes C Programm UART - Warum wird zweimal "Hallo World" gesendet?
    Von dl9hda im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 17.01.2014, 14:56
  2. Frage zum Digital-Simulations-Programm "ATANUA"
    Von Elu im Forum Konstruktion/CAD/3D-Druck/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 3
    Letzter Beitrag: 02.03.2009, 18:13
  3. CMUCAM3 - Programm funktioniert "über Nacht" nicht
    Von heli im Forum Software, Algorithmen und KI
    Antworten: 0
    Letzter Beitrag: 20.01.2009, 20:58
  4. GP1A030 Drehgeber - Auswertung mit "C-Programm"
    Von Phoenix2k im Forum Sensoren / Sensorik
    Antworten: 3
    Letzter Beitrag: 06.06.2008, 15:26
  5. Problem mit "PCDEMO Programm " für ASURO
    Von HiGhDe im Forum Asuro
    Antworten: 3
    Letzter Beitrag: 08.02.2006, 08:08

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad