Unterprogramme aufrufen mit case

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Unterprogramme aufrufen mit case

      Hallo,

      kann mir einer helfen mit dem Befehl case,
      Ich möchte aufgrund des Zustandes von 3 Eingängen mehrere Unterprogramme ausführen.

      Ich bekomme das aber mit dem Case Befehl irgendwie nicht hin...

      Gruß Thomas

      Quellcode

      1. '****************************
      2. ' RGB MB
      3. '****************************
      4. $regfile = "m88def.dat"
      5. $hwstack = 40
      6. $swstack = 16
      7. $framesize = 32
      8. $crystal = 8000000
      9. Config PortD = Output
      10. Config PortB = Output
      11. Config PortC.0 = Input
      12. Config Portc.1 = Input
      13. Config Portc.2 = Input
      14. RMOD1 Alias Portd.0
      15. BMOD1 Alias Portd.1
      16. GMOD1 Alias Portd.2
      17. RMOD2 Alias Portd.3
      18. BMOD2 Alias Portd.4
      19. GMOD2 Alias Portd.5
      20. RMOD3 Alias Portd.7
      21. BMOD3 Alias Portd.6
      22. GMOD3 Alias Portb.0
      23. Eingang1 Alias PORTC.0
      24. Eingang2 Alias PORTC.1
      25. Eingang3 Alias PORTC.2
      26. DIM LED1 as Byte
      27. DIM LED2 as Byte
      28. DIM LED3 as Byte
      29. If Eingang1 = 1 and Eingang2 = 0 and Eingang3 = 0 then case LED1
      30. If Eingang1 = 0 and Eingang2 = 1 and Eingang3 = 0 then case LED2
      31. If Eingang1 = 1 and Eingang2 = 1 and Eingang3 = 0 then case LED3
      32. If Eingang1 = 1 and Eingang2 = 0 and Eingang3 = 1 then case LED4
      33. If Eingang1 = 0 and Eingang2 = 1 and Eingang3 = 1 then case LED5
      34. If Eingang1 = 1 and Eingang2 = 1 and Eingang3 = 1 then case LED6
      35. Do
      36. case LED1
      37. GMOD1 = 1
      38. GMOD2 = 1
      39. GMOD3 = 1
      40. case LED2
      41. GMOD1 = 1
      42. RMOD1 = 1
      43. GMOD2 = 1
      44. RMOD2 = 1
      45. GMOD3 = 1
      46. RMOD3 = 1
      47. case LED3
      48. GMOD1 = 0
      49. RMOD1 = 0
      50. GMOD2 = 0
      51. RMOD2 = 0
      52. GMOD3 = 0
      53. RMOD3 = 0
      54. RMOD1 = 1
      55. RMOD2 = 1
      56. RMOD3 = 1
      57. case LED4
      58. RMOD1 = 0
      59. RMOD2 = 0
      60. RMOD3 = 0
      61. loop
      62. end
      Alles anzeigen
    • Case ist kein Befehl sondern nur ein Attribut der Select case - Anweisung.

      Unterprogrammme ruft man mit
      Gosub Label oder
      Call Label

      Wo sind Deine Unterprogramme, soll das etwa Case LEDx sein?
      Unterprogramme werden mit einem Label versehen, daß immer mit einem Doppelpunkt abgeschlossen wird und durch ein Return beendet wird. Zwischen dem Label und dem Return befindet sich der Programmcode, z.Bsp.

      LED1:
      Anweisung 1
      Anweisung 2
      ...
      Return

      Label (Namen des Unterprogramms) wird nicht dimensioniert, d.h. dim LED1, LED2,LED3 as byte ist Unfug.

      Das Beispiel von Sixt1 ist dahingehend unglücklich, das S und Z garnicht für dieses Beispiel benötigt werden, die Select case-Anweisung aber richtig dargestellet ist.

      Zu deinem Code:
      Wenn Du schon eine umfangreiche Bedingungsabfrage mi If-Then ausführen mußt, dann kannst du auch gleich eine If-Then-Elseif-Else-End - Anweisung verwendenz.Bsp.

      1. If Eingang1 = 1 and Eingang2 = 0 and Eingang3 = 0 then
      2. alle Anweisungen die für LED1 gelten sollen
      3. Else If Eingang1 = 0 and Eingang2 = 1 and Eingang3 = 0 then
      4. alle Anweisungen die für LED2 gelten sollen
      5. Else If Eingang1 = 1 and Eingang2 = 1 and Eingang3 = 0 then
      6. alle Anweisungen die für LED gelten sollen
      7. Else If Eingang1 = 1 and Eingang2 = 0 and Eingang3 = 1 then
      8. alle Anweisungen die für LED4 gelten sollen
      9. Else If Eingang1 = 0 and Eingang2 = 1 and Eingang3 = 1 then
      10. alle Anweisungen die für LED5 gelten sollen
      11. Else if Eingang1 = 1 and Eingang2 = 1 and Eingang3 = 1 then
      12. alle Anweisungen die für LED6 gelten sollen
      13. Else
      14. alle Anweisungen die gelten wenn keine der vorstehenden Bedingung erfüllt ist
      15. End if
      So kommst Du ganz ohne Unterprogramme aus. Unterprogramme machen ja eigentlich nur Sinn wenn mehrfach von verschiedeneen Stellen darauf zugegriffen wird oder das Programm so komplex ist, das dadurch eine Strukturierung der Mainloop möglich ist (erhöht die Übersichtlichkeit).
      Wem ich nicht ausdrücklich widerspreche, der darf das bis auf Widerruf als "Gefällt mir" verstehen.
    • Meint Ihr das so ?

      Quellcode

      1. '****************************
      2. ' RGB MB
      3. '****************************
      4. $regfile = "m88def.dat"
      5. $hwstack = 40
      6. $swstack = 16
      7. $framesize = 32
      8. $crystal = 8000000
      9. Config PortD = Output
      10. Config PortB = Output
      11. Config PortC.0 = Input
      12. Config Portc.1 = Input
      13. Config Portc.2 = Input
      14. RMOD1 Alias Portd.0
      15. BMOD1 Alias Portd.1
      16. GMOD1 Alias Portd.2
      17. RMOD2 Alias Portd.3
      18. BMOD2 Alias Portd.4
      19. GMOD2 Alias Portd.5
      20. RMOD3 Alias Portd.7
      21. BMOD3 Alias Portd.6
      22. GMOD3 Alias Portb.0
      23. Eingang1 Alias PORTC.0
      24. Eingang2 Alias PORTC.1
      25. Eingang3 Alias PORTC.2
      26. Do
      27. If Eingang1 = 1 and Eingang2 = 0 and Eingang3 = 0 then call Label:LED1
      28. else If Eingang1 = 0 and Eingang2 = 1 and Eingang3 = 0 then call Label:LED2
      29. else If Eingang1 = 1 and Eingang2 = 1 and Eingang3 = 0 then call Label:LED3
      30. else If Eingang1 = 1 and Eingang2 = 0 and Eingang3 = 1 then call Label:LED4
      31. else If Eingang1 = 0 and Eingang2 = 1 and Eingang3 = 1 then call Label:LED5
      32. else If Eingang1 = 1 and Eingang2 = 1 and Eingang3 = 1 then call Label:LED6
      33. end if
      34. loop
      35. end
      Alles anzeigen
    • @sixt1
      habe mich nur etwas ungenau ausgedrückt, aber sollte ja klar sein das Du nur den Link gepostet hast.

      @Thomas1964
      Nein.

      Dein Unterprogramm heißt LED1. Dies beginnt bei
      LED1: (Das ist das Label)
      dann folgenden Deine Anweisungen
      Return (beendet das Unterprogramm LED1 und springt zum Aufruf punkt zurück)
      Wem ich nicht ausdrücklich widerspreche, der darf das bis auf Widerruf als "Gefällt mir" verstehen.
    • Hallo hasta,

      anbei der jetzige code:
      Bekomme aber immer Fehlermeldungen

      Quellcode

      1. '****************************
      2. ' RGB MB
      3. '****************************
      4. $regfile = "m88def.dat"
      5. $hwstack = 40
      6. $swstack = 16
      7. $framesize = 32
      8. $crystal = 8000000
      9. Config PortD = Output
      10. Config PortB = Output
      11. Config PortC.0 = Input
      12. Config Portc.1 = Input
      13. Config Portc.2 = Input
      14. RMOD1 Alias Portd.0
      15. BMOD1 Alias Portd.1
      16. GMOD1 Alias Portd.2
      17. RMOD2 Alias Portd.3
      18. BMOD2 Alias Portd.4
      19. GMOD2 Alias Portd.5
      20. RMOD3 Alias Portd.7
      21. BMOD3 Alias Portd.6
      22. GMOD3 Alias Portb.0
      23. Eingang1 Alias PORTC.0
      24. Eingang2 Alias PORTC.1
      25. Eingang3 Alias PORTC.2
      26. Do
      27. If Eingang1 = 1 and Eingang2 = 0 and Eingang3 = 0 then gosub LED1
      28. else If Eingang1 = 0 and Eingang2 = 1 and Eingang3 = 0 then gosub LED2
      29. else If Eingang1 = 1 and Eingang2 = 1 and Eingang3 = 0 then gosub LED3
      30. else If Eingang1 = 1 and Eingang2 = 0 and Eingang3 = 1 then gosub LED4
      31. else If Eingang1 = 0 and Eingang2 = 1 and Eingang3 = 1 then gosub LED5
      32. else If Eingang1 = 1 and Eingang2 = 1 and Eingang3 = 1 then gosub LED6
      33. end if
      34. loop
      35. LED1:
      36. GMOD1 = 1
      37. Return
      38. LED2:
      39. Return
      40. GMOD2 = 1
      41. LED3:
      42. GMOD3 = 1
      43. Return
      44. LED4:
      45. Return
      46. RMOD1 = 1
      47. LED5:
      48. RMOD2 = 1
      49. Return
      50. LED6:
      51. RMOD3 = 1
      52. Return
      53. end
      Alles anzeigen
    • Hallo Ulrich,

      habe ich gemacht, aber die Fehlermeldungen sind die selben.

      Quellcode

      1. '****************************
      2. ' RGB MB
      3. '****************************
      4. $regfile = "m88def.dat"
      5. $hwstack = 40
      6. $swstack = 16
      7. $framesize = 32
      8. $crystal = 8000000
      9. Config PortD = Output
      10. Config PortB = Output
      11. Config PINC.0 = Input
      12. Config PINc.1 = Input
      13. Config Pinc.2 = Input
      14. RMOD1 Alias Portd.0
      15. BMOD1 Alias Portd.1
      16. GMOD1 Alias Portd.2
      17. RMOD2 Alias Portd.3
      18. BMOD2 Alias Portd.4
      19. GMOD2 Alias Portd.5
      20. RMOD3 Alias Portd.7
      21. BMOD3 Alias Portd.6
      22. GMOD3 Alias Portb.0
      23. Eingang1 Alias PORTC.0
      24. Eingang2 Alias PORTC.1
      25. Eingang3 Alias PORTC.2
      26. Do
      27. If Eingang1 = 1 and Eingang2 = 0 and Eingang3 = 0 then gosub LED1
      28. else If Eingang1 = 0 and Eingang2 = 1 and Eingang3 = 0 then gosub LED2
      29. else If Eingang1 = 1 and Eingang2 = 1 and Eingang3 = 0 then gosub LED3
      30. else If Eingang1 = 1 and Eingang2 = 0 and Eingang3 = 1 then gosub LED4
      31. else If Eingang1 = 0 and Eingang2 = 1 and Eingang3 = 1 then gosub LED5
      32. else If Eingang1 = 1 and Eingang2 = 1 and Eingang3 = 1 then gosub LED6
      33. else
      34. end if
      35. loop
      36. end
      37. LED1:
      38. GMOD1 = 1
      39. Return
      40. LED2:
      41. Return
      42. GMOD2 = 1
      43. LED3:
      44. GMOD3 = 1
      45. Return
      46. LED4:
      47. Return
      48. RMOD1 = 1
      49. LED5:
      50. RMOD2 = 1
      51. Return
      52. LED6:
      53. RMOD3 = 1
      54. Return
      Alles anzeigen
    • If Eingang1 = 1 and Eingang2 = 0 and Eingang3 = 0 then gosub LED1
      das ist die verkürzte Schreibweise wenn keine weiteren Anweisungen folgen, dann kann man auch auf das endif verzichten
      Sieh Dir nochmal meinen früheren Post an, da steht wie die Struktur sein muß.
      Wem ich nicht ausdrücklich widerspreche, der darf das bis auf Widerruf als "Gefällt mir" verstehen.
    • Hallo R2D2 Bastler,

      habe ich geändert, aber es kommen immer die gleichen Fehlermeldungen.
      Der Fehler liegt anscheinend in der if anweisung

      Quellcode

      1. '****************************
      2. ' RGB MB
      3. '****************************
      4. $regfile = "m88def.dat"
      5. $hwstack = 40
      6. $swstack = 16
      7. $framesize = 32
      8. $crystal = 8000000
      9. Config PortD = Output
      10. Config PortB = Output
      11. Config PINC.0 = Input
      12. Config PINc.1 = Input
      13. Config Pinc.2 = Input
      14. RMOD1 Alias Portd.0
      15. BMOD1 Alias Portd.1
      16. GMOD1 Alias Portd.2
      17. RMOD2 Alias Portd.3
      18. BMOD2 Alias Portd.4
      19. GMOD2 Alias Portd.5
      20. RMOD3 Alias Portd.7
      21. BMOD3 Alias Portd.6
      22. GMOD3 Alias Portb.0
      23. Eingang1 Alias PORTC.0
      24. Eingang2 Alias PORTC.1
      25. Eingang3 Alias PORTC.2
      26. Do
      27. If Eingang1 = 1 and Eingang2 = 0 and Eingang3 = 0 then gosub LED1
      28. else If Eingang1 = 0 and Eingang2 = 1 and Eingang3 = 0 then gosub LED2
      29. else If Eingang1 = 1 and Eingang2 = 1 and Eingang3 = 0 then gosub LED3
      30. else If Eingang1 = 1 and Eingang2 = 0 and Eingang3 = 1 then gosub LED4
      31. else If Eingang1 = 0 and Eingang2 = 1 and Eingang3 = 1 then gosub LED5
      32. else If Eingang1 = 1 and Eingang2 = 1 and Eingang3 = 1 then gosub LED6
      33. else
      34. end if
      35. loop
      36. end
      37. LED1:
      38. GMOD1 = 1
      39. Return
      40. LED2:
      41. GMOD2 = 1
      42. Return
      43. LED3:
      44. GMOD3 = 1
      45. Return
      46. LED4:
      47. RMOD1 = 1
      48. Return
      49. LED5:
      50. RMOD2 = 1
      51. Return
      52. LED6:
      53. RMOD3 = 1
      54. Return
      Alles anzeigen
    • BASCOM-Quellcode

      1. ' ' '****************************
      2. ' RGB MB
      3. '****************************
      4. $regfile = "m88def.dat"
      5. $hwstack = 40
      6. $swstack = 16
      7. $framesize = 32
      8. $crystal = 8000000
      9. Config Portd = Output
      10. Config Portb = Output
      11. Config Pinc.0 = Input
      12. Config Pinc.1 = Input
      13. Config Pinc.2 = Input
      14. Rmod1 Alias Portd.0
      15. Bmod1 Alias Portd.1
      16. Gmod1 Alias Portd.2
      17. Rmod2 Alias Portd.3
      18. Bmod2 Alias Portd.4
      19. Gmod2 Alias Portd.5
      20. Rmod3 Alias Portd.7
      21. Bmod3 Alias Portd.6
      22. Gmod3 Alias Portb.0
      23. Eingang1 Alias Portc.0
      24. Eingang2 Alias Portc.1
      25. Eingang3 Alias Portc.2
      26. Do
      27. If Eingang1 = 1 And Eingang2 = 0 And Eingang3 = 0 Then
      28. Gosub Led1
      29. Elseif Eingang1 = 0 And Eingang2 = 1 And Eingang3 = 0 Then
      30. Gosub Led2
      31. Elseif Eingang1 = 1 And Eingang2 = 1 And Eingang3 = 0 Then
      32. Gosub Led3
      33. Elseif Eingang1 = 1 And Eingang2 = 0 And Eingang3 = 1 Then
      34. Gosub Led4
      35. Elseif Eingang1 = 0 And Eingang2 = 1 And Eingang3 = 1 Then
      36. Gosub Led5
      37. Elseif Eingang1 = 1 And Eingang2 = 1 And Eingang3 = 1 Then
      38. Gosub Led6
      39. End If
      40. Loop
      41. End
      42. Led1:
      43. Gmod1 = 1
      44. Return
      45. Led2:
      46. Return
      47. Gmod2 = 1
      48. Led3:
      49. Gmod3 = 1
      50. Return
      51. Led4:
      52. Return
      53. Rmod1 = 1
      54. Led5:
      55. Rmod2 = 1
      56. Return
      57. Led6:
      58. Rmod3 = 1
      59. Return
      Alles anzeigen
    • Hallo Thomas,
      darf ich Dir mal ein Vorschlag machen?

      Deine Eingänge sind jeweils als ein Bit zu verstehen
      Wandle diese drei Bits in ein Byte um:

      Dim EingangByte as Byte ' ein Byte dimensionieren

      in die Do Lopp Schleife kommt dann

      Do

      EingangByte.2 = Eingang3 ' mit .2 wird die Wertigkeit (4) festgelegt.
      EingangByte.1 = Eingang2 ' mit .1 wird die Wertigkeit (2) festgelegt.
      EingangByte.0 = Eingang1 ' mit .0 wird die Wertigkeit (1) festgelegt.


      RMOD1 = 0 : RMOD2 = 0 : RMOD3 = 0 :RMOD4= 0 :RMOD5 = 0 :.... 'alle LEDs erst mal aus.

      Select Case EingangByte
      Case 1 ' wenn nur Eingang1 Hight ist
      RMOD1 = 1 ' ensprechende LEDs an schalten
      RMOD2 = 1 ' ... und so weiter (wie die Bedingung aussehen soll)
      Case 3 ' wenn Eingang2 und Eingang 1 hight ist
      ......
      Case 7 ' wenn alle Eingänge Hight sind)
      ......
      End select

      Loop

      So kommst Du gänzlich ohne If Then aus und kannst innerhalb deiner Fälle schalten was Du willst.
      Das ist sehr übersichtlich und in BASCOM auch sehr einfach zu programmieren.
    • @Dieter
      Das ist richtig und sinnvoll, aber ich denke Thomas muss erstmal die eigentlich einfache Syntax von Bascombefehlen verstehen, denn daran habert es eindeutig. Das Auswerten von Bytevariablen ist dann doch schon etwas komplexer.
      Und wenn er erstmal verstanden hat wie Unterprogramme aufgerufen werden und Abfragen strukturiert sind, dann kann man mit optimireren anfangen.
      Wem ich nicht ausdrücklich widerspreche, der darf das bis auf Widerruf als "Gefällt mir" verstehen.
    • Hallo hasta, Hallo Dieter,

      ich habe mal vorher was mit case gemacht.

      anbei der Code, ich vestehe einfach die Fehlermeldung bei der If anweisung nicht.

      Das war mal ein Code der aufgrund eines LDR Wert die Helligkeit steuert.

      Quellcode

      1. $regfile = "m328pdef.dat" ' eingesetzter Mikrocontroller
      2. $crystal = 16000000 ' eingestellte Taktfrequenz
      3. $hwstack = 40
      4. $swstack = 32
      5. $framesize = 60
      6. Config Portb.0 = Output
      7. Config Portb.1 = Output
      8. Config Portb.2 = Output
      9. Config Portb.3 = Output
      10. Config Portb.4 = Output
      11. Config Portb.5 = Output
      12. Config Portd.2 = Output
      13. Config Portd.3 = Output
      14. Config Portd.4 = Output
      15. Config Portd.5 = Output
      16. Config Portd.6 = Output
      17. Config Portc.1 = Output
      18. Config Portc.2 = Output
      19. Config Portc.3 = Output
      20. Config Portc.4 = Output
      21. Config Portc.5 = Output
      22. Config Portc.0 = Input
      23. Kanal1 Alias Portb.0
      24. Kanal2 Alias Portb.1
      25. Kanal3 Alias Portb.2
      26. Kanal4 Alias Portb.3
      27. Kanal5 Alias Portb.4
      28. Kanal6 Alias Portb.5
      29. Kanal7 Alias Portd.2
      30. Kanal8 Alias Portd.3
      31. Kanal9 Alias Portd.4
      32. Kanal10 Alias Portd.5
      33. Kanal11 Alias Portd.6
      34. Kanal12 Alias Portc.1
      35. Kanal13 Alias Portc.2
      36. Kanal14 Alias Portc.3
      37. Kanal15 Alias Portc.4
      38. Kanal16 Alias Portc.5
      39. Dim Offset As Word
      40. Dim Analogeingang As Word
      41. Dim Analog1 As Word
      42. 'Variable für Analogeingang deklarieren
      43. Config Adc = Single , Prescaler = Auto , Reference = Avcc 'Analogwandler definieren
      44. Do
      45. Analogeingang = Getadc(0)
      46. Analog1 = Analogeingang + 300
      47. 'Analogeingang einlesen und Wert in Variable
      48. ' Analogeingang
      49. Select Case Analog1
      50. Case 0 To 480
      51. Kanal1 = 0
      52. Kanal2 = 0
      53. Kanal3 = 0
      54. Kanal4 = 0
      55. Kanal5 = 0
      56. Kanal6 = 0
      57. Kanal7 = 0
      58. Kanal8 = 0
      59. Kanal9 = 0
      60. Kanal10 = 0
      61. Kanal11 = 0
      62. Kanal12 = 0
      63. Kanal13 = 0
      64. Kanal14 = 0
      65. Kanal15 = 0
      66. Kanal16 = 0
      67. 'Je nach Inhalt der Variablen Analogeingang..
      68. Case 480 To 490:
      69. Kanal1 = 1
      70. Kanal2 = 0
      71. Kanal3 = 0
      72. Kanal4 = 0
      73. Kanal5 = 0
      74. Kanal6 = 0
      75. Kanal7 = 0
      76. Kanal8 = 0
      77. Kanal9 = 0
      78. Kanal10 = 0
      79. Kanal11 = 0
      80. Kanal12 = 0
      81. Kanal13 = 0
      82. Kanal14 = 0
      83. Kanal15 = 0
      84. Kanal16 = 0
      85. Case 491 To 500:
      86. Kanal1 = 1
      87. Kanal2 = 1
      88. Kanal3 = 0
      89. Kanal4 = 0
      90. Kanal5 = 0
      91. Kanal6 = 0
      92. Kanal7 = 0
      93. Kanal8 = 0
      94. Kanal9 = 0
      95. Kanal10 = 0
      96. Kanal11 = 0
      97. Kanal12 = 0
      98. Kanal13 = 0
      99. Kanal14 = 0
      100. Kanal15 = 0
      101. Kanal16 = 0
      102. Case 501 To 510:
      103. Kanal1 = 1
      104. Kanal2 = 1
      105. Kanal3 = 1
      106. Kanal4 = 0
      107. Kanal5 = 0
      108. Kanal6 = 0
      109. Kanal7 = 0
      110. Kanal8 = 0
      111. Kanal9 = 0
      112. Kanal10 = 0
      113. Kanal11 = 0
      114. Kanal12 = 0
      115. Kanal13 = 0
      116. Kanal14 = 0
      117. Kanal15 = 0
      118. Kanal16 = 0
      119. Case 511 To 520:
      120. Kanal1 = 1
      121. Kanal2 = 1
      122. Kanal3 = 1
      123. Kanal4 = 1
      124. Kanal5 = 0
      125. Kanal6 = 0
      126. Kanal7 = 0
      127. Kanal8 = 0
      128. Kanal9 = 0
      129. Kanal10 = 0
      130. Kanal11 = 0
      131. Kanal12 = 0
      132. Kanal13 = 0
      133. Kanal14 = 0
      134. Kanal15 = 0
      135. Kanal16 = 0
      136. Case 521 To 530:
      137. Kanal1 = 1
      138. Kanal2 = 1
      139. Kanal3 = 1
      140. Kanal4 = 1
      141. Kanal5 = 1
      142. Kanal6 = 0
      143. Kanal7 = 0
      144. Kanal8 = 0
      145. Kanal9 = 0
      146. Kanal10 = 0
      147. Kanal11 = 0
      148. Kanal12 = 0
      149. Kanal13 = 0
      150. Kanal14 = 0
      151. Kanal15 = 0
      152. Kanal16 = 0
      153. Case 531 To 540:
      154. Kanal1 = 1
      155. Kanal2 = 1
      156. Kanal3 = 1
      157. Kanal4 = 1
      158. Kanal5 = 1
      159. Kanal6 = 1
      160. Kanal7 = 0
      161. Kanal8 = 0
      162. Kanal9 = 0
      163. Kanal10 = 0
      164. Kanal11 = 0
      165. Kanal12 = 0
      166. Kanal13 = 0
      167. Kanal14 = 0
      168. Kanal15 = 0
      169. Kanal16 = 0
      170. Case 541 To 550:
      171. Kanal1 = 1
      172. Kanal2 = 1
      173. Kanal3 = 1
      174. Kanal4 = 1
      175. Kanal5 = 1
      176. Kanal6 = 1
      177. Kanal7 = 1
      178. Kanal8 = 0
      179. Kanal9 = 0
      180. Kanal10 = 0
      181. Kanal11 = 0
      182. Kanal12 = 0
      183. Kanal13 = 0
      184. Kanal14 = 0
      185. Kanal15 = 0
      186. Kanal16 = 0
      187. Case 551 To 560:
      188. Kanal1 = 1
      189. Kanal2 = 1
      190. Kanal3 = 1
      191. Kanal4 = 1
      192. Kanal5 = 1
      193. Kanal6 = 1
      194. Kanal7 = 1
      195. Kanal8 = 1
      196. Kanal9 = 0
      197. Kanal10 = 0
      198. Kanal11 = 0
      199. Kanal12 = 0
      200. Kanal13 = 0
      201. Kanal14 = 0
      202. Kanal15 = 0
      203. Kanal16 = 0
      204. Case 561 To 570:
      205. Kanal1 = 1
      206. Kanal2 = 1
      207. Kanal3 = 1
      208. Kanal4 = 1
      209. Kanal5 = 1
      210. Kanal6 = 1
      211. Kanal7 = 1
      212. Kanal8 = 1
      213. Kanal9 = 1
      214. Kanal10 = 0
      215. Kanal11 = 0
      216. Kanal12 = 0
      217. Kanal13 = 0
      218. Kanal14 = 0
      219. Kanal15 = 0
      220. Kanal16 = 0
      221. Case 571 To 580:
      222. Kanal1 = 1
      223. Kanal2 = 1
      224. Kanal3 = 1
      225. Kanal4 = 1
      226. Kanal5 = 1
      227. Kanal6 = 1
      228. Kanal7 = 1
      229. Kanal8 = 1
      230. Kanal9 = 1
      231. Kanal10 = 1
      232. Kanal11 = 0
      233. Kanal12 = 0
      234. Kanal13 = 0
      235. Kanal14 = 0
      236. Kanal15 = 0
      237. Kanal16 = 0
      238. Case 581 To 590:
      239. Kanal1 = 1
      240. Kanal2 = 1
      241. Kanal3 = 1
      242. Kanal4 = 1
      243. Kanal5 = 1
      244. Kanal6 = 1
      245. Kanal7 = 1
      246. Kanal8 = 1
      247. Kanal9 = 1
      248. Kanal10 = 1
      249. Kanal11 = 0
      250. Kanal12 = 0
      251. Kanal13 = 0
      252. Kanal14 = 0
      253. Kanal15 = 0
      254. Kanal16 = 0
      255. Case 591 To 600:
      256. Kanal1 = 1
      257. Kanal2 = 1
      258. Kanal3 = 1
      259. Kanal4 = 1
      260. Kanal5 = 1
      261. Kanal6 = 1
      262. Kanal7 = 1
      263. Kanal8 = 1
      264. Kanal9 = 1
      265. Kanal10 = 1
      266. Kanal11 = 1
      267. Kanal12 = 0
      268. Kanal13 = 0
      269. Kanal14 = 0
      270. Kanal15 = 0
      271. Kanal16 = 0
      272. Case 601 To 610:
      273. Kanal1 = 1
      274. Kanal2 = 1
      275. Kanal3 = 1
      276. Kanal4 = 1
      277. Kanal5 = 1
      278. Kanal6 = 1
      279. Kanal7 = 1
      280. Kanal8 = 1
      281. Kanal9 = 1
      282. Kanal10 = 1
      283. Kanal11 = 1
      284. Kanal12 = 1
      285. Kanal13 = 0
      286. Kanal14 = 0
      287. Kanal15 = 0
      288. Kanal16 = 0
      289. Case 611 To 620:
      290. Kanal1 = 1
      291. Kanal2 = 1
      292. Kanal3 = 1
      293. Kanal4 = 1
      294. Kanal5 = 1
      295. Kanal6 = 1
      296. Kanal7 = 1
      297. Kanal8 = 1
      298. Kanal9 = 1
      299. Kanal10 = 1
      300. Kanal11 = 1
      301. Kanal12 = 1
      302. Kanal13 = 1
      303. Kanal14 = 0
      304. Kanal15 = 0
      305. Kanal16 = 0
      306. Case 621 To 630:
      307. Kanal1 = 1
      308. Kanal2 = 1
      309. Kanal3 = 1
      310. Kanal4 = 1
      311. Kanal5 = 1
      312. Kanal6 = 1
      313. Kanal7 = 1
      314. Kanal8 = 1
      315. Kanal9 = 1
      316. Kanal10 = 1
      317. Kanal11 = 1
      318. Kanal12 = 1
      319. Kanal13 = 1
      320. Kanal14 = 1
      321. Kanal15 = 0
      322. Kanal16 = 0
      323. Case 631 To 640:
      324. Kanal1 = 1
      325. Kanal2 = 1
      326. Kanal3 = 1
      327. Kanal4 = 1
      328. Kanal5 = 1
      329. Kanal6 = 1
      330. Kanal7 = 1
      331. Kanal8 = 1
      332. Kanal9 = 1
      333. Kanal10 = 1
      334. Kanal11 = 1
      335. Kanal12 = 1
      336. Kanal13 = 1
      337. Kanal14 = 1
      338. Kanal15 = 1
      339. Kanal16 = 0
      340. Case 641 To 1023:
      341. Kanal1 = 1
      342. Kanal2 = 1
      343. Kanal3 = 1
      344. Kanal4 = 1
      345. Kanal5 = 1
      346. Kanal6 = 1
      347. Kanal7 = 1
      348. Kanal8 = 1
      349. Kanal9 = 1
      350. Kanal10 = 1
      351. Kanal11 = 1
      352. Kanal12 = 1
      353. Kanal13 = 1
      354. Kanal14 = 1
      355. Kanal15 = 1
      356. Kanal16 = 1
      357. End Select
      358. Loop
      359. End
      Alles anzeigen
    • Hallo Dieter,

      ich denke du meist so oder

      Quellcode

      1. '****************************
      2. ' RGB MB
      3. '****************************
      4. $regfile = "m88def.dat"
      5. $hwstack = 40
      6. $swstack = 16
      7. $framesize = 32
      8. $crystal = 8000000
      9. Config PortD = Output
      10. Config PortB = Output
      11. Config PortC.0 = Input
      12. Config Portc.1 = Input
      13. Config Portc.2 = Input
      14. RMOD1 Alias Portd.0
      15. BMOD1 Alias Portd.1
      16. GMOD1 Alias Portd.2
      17. RMOD2 Alias Portd.3
      18. BMOD2 Alias Portd.4
      19. GMOD2 Alias Portd.5
      20. RMOD3 Alias Portd.7
      21. BMOD3 Alias Portd.6
      22. GMOD3 Alias Portb.0
      23. Eingang1 Alias PORTC.0
      24. Eingang2 Alias PORTC.1
      25. Eingang3 Alias PORTC.2
      26. Dim EingangByte as Byte
      27. Do
      28. EingangByte.2 = Eingang3 ' mit .2 wird die Wertigkeit (4) festgelegt.
      29. EingangByte.1 = Eingang2 ' mit .1 wird die Wertigkeit (2) festgelegt.
      30. EingangByte.0 = Eingang1 ' mit .0 wird die Wertigkeit (1) festgelegt.
      31. RMOD1 = 0
      32. RMOD2 = 0
      33. RMOD3 = 0
      34. GMOD1 = 0
      35. GMOD2 = 0
      36. GMOD3 = 0
      37. BMOD1 = 0
      38. BMOD2 = 0
      39. BMOD3 = 0
      40. select case EingangByte
      41. case 1
      42. RMOD1 = 1
      43. case 2
      44. RMOD2 = 1
      45. case 3
      46. RMOD3 = 1
      47. Case 4
      48. GMOD1 = 1
      49. Case 5
      50. GMOD2 = 1
      51. Case 6
      52. GMOD3 = 1
      53. end select
      54. loop
      55. end
      Alles anzeigen