Ampelsteuerung mit AT328p

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

    • Ampelsteuerung mit AT328p

      Hallo alle,

      habe ein Programm geschrieben für ein Mega328,
      Ist eine Ampelsteuerung für Modellbahn.
      Würde jetzt gerne die weißen LED toggeln lassen wenn
      die Fußgänger auf grün warten.
      Im Programm F1_3 weiss und F2_4 weiss.

      Klappt aber nicht , hatte den Toggle Befehl benutzt, der schaltet die ein, aber nicht wieder aus.....

      Evtl. kann mir da einer helfen ????

      Gruß Thomas

      Quellcode

      1. 'Programmname: Ampelkreuzung 328p.bas
      2. 'Funktion: Ampelkreuzung mit Fussgänger
      3. 'Mikrocontroller: Mega328
      4. '------------------------------------------------------------------------------------
      5. $regfile = "m328pdef.dat" ' eingesetzter Mikrocontroller
      6. $crystal = 16000000 ' eingestellte Taktfrequenz
      7. $hwstack = 40
      8. $swstack = 32
      9. $framesize = 60
      10. '------------------------------------------------------------------------------------
      11. Config Portc.0 = Input
      12. Config Portb = Output 'gesamten Port B als Ausgabeport
      13. Config Portd = Output 'gesamten Port D als Ausgabeport
      14. A1_3 Rot Alias Portb.5 'Aliasnamen vergeben
      15. A1_3 Gelb Alias Portb.4
      16. A1_3 Gruen Alias Portb.3
      17. A2_4 Rot Alias Portb.2
      18. A2_4 Gelb Alias Portb.1
      19. A2_4 Gruen Alias Portb.0
      20. F1_3 Weiss Alias Portd.7
      21. F1_3 Rot Alias Portd.6
      22. F1_3 Gruen Alias Portd.5
      23. F2_4 Weiss Alias Portd.4
      24. F2_4 Rot Alias Portd.3
      25. F2_4 Gruen Alias Portd.2
      26. '-----------------------------------------------------------------------------------
      27. Dim Analogwandler As Word 'Variable zur Aufnahme des Wertes vom Analogwandler 'Schleifenanfang
      28. Dim Potiwert As Integer
      29. Config Adc = Single , Prescaler = Auto , Reference = Avcc
      30. Do
      31. Analogwandler = Getadc(0)
      32. Potiwert = Analogwandler / 16
      33. 'Phase 1
      34. A1_3 Rot = 1
      35. A1_3 Gelb = 0
      36. A1_3 Gruen = 0
      37. A2_4 Rot = 0
      38. A2_4 Gelb = 0
      39. A2_4 Gruen = 1
      40. F1_3 Gruen = 1
      41. F1_3 Rot = 0
      42. F2_4 Rot = 1
      43. Wait Potiwert
      44. F1_3 Gruen = 0
      45. F1_3 Rot = 1
      46. Wait 1
      47. 'Phase 2
      48. A1_3 Rot = 1
      49. A1_3 Gelb = 0
      50. A1_3 Gruen = 0
      51. A2_4 Rot = 0
      52. A2_4 Gelb = 1
      53. A2_4 Gruen = 0
      54. Wait 1
      55. 'Phase 3
      56. A1_3 Rot = 1
      57. A1_3 Gelb = 0
      58. A1_3 Gruen = 0
      59. A2_4 Rot = 1
      60. A2_4 Gelb = 0
      61. A2_4 Gruen = 0
      62. Wait 1
      63. 'Phase 4
      64. A1_3 Rot = 1
      65. A1_3 Gelb = 1
      66. A1_3 Gruen = 0
      67. A2_4 Rot = 1
      68. A2_4 Gelb = 0
      69. A2_4 Gruen = 0
      70. Wait 1
      71. 'Phase 5
      72. A1_3 Rot = 0
      73. A1_3 Gelb = 0
      74. A1_3 Gruen = 1
      75. A2_4 Rot = 1
      76. A2_4 Gelb = 0
      77. A2_4 Gruen = 0
      78. F2_4 Gruen = 1
      79. F2_4 Rot = 0
      80. Wait Potiwert
      81. F2_4 Gruen = 0
      82. F2_4 Rot = 1
      83. Wait 1
      84. 'Phase 6
      85. A1_3 Rot = 0
      86. A1_3 Gelb = 1
      87. A1_3 Gruen = 0
      88. A2_4 Rot = 1
      89. A2_4 Gelb = 0
      90. A2_4 Gruen = 0
      91. Wait 1
      92. 'Phase 7
      93. A1_3 Rot = 1
      94. A1_3 Gelb = 0
      95. A1_3 Gruen = 0
      96. A2_4 Rot = 1
      97. A2_4 Gelb = 0
      98. A2_4 Gruen = 0
      99. Wait 1
      100. 'Phase 8
      101. A1_3 Rot = 1
      102. A1_3 Gelb = 0
      103. A1_3 Gruen = 0
      104. A2_4 Rot = 1
      105. A2_4 Gelb = 1
      106. A2_4 Gruen = 0
      107. Wait 1
      108. Loop
      109. End
      Alles anzeigen
    • So wie ich das sehe müsstest du einen interrupt einrichten, der die weißen leds ständig blinken lässt, wenn, jetzt kommt's, in deiner Hauptschleife diese leds freigegeben werden.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Und wo ist weiss?
      Wann soll denn weis toggeln ? Da musst du noch mit IF Then arbeiten.
      Da schreibst du dann rein, wann das passieren soll.
      Wenn du einen Timer frei hast, kann der in einem Interrupt das Toggeln übernehmen.

      Detlef

      Edit: der Meister war wieder schneller a_224_a22645d4
      Leichtsinn ist kein Mut, Vorsicht keine Feigheit.
    • Thomas1964 schrieb:

      Klappt aber nicht , hatte den Toggle Befehl benutzt, der schaltet die ein, aber nicht wieder aus.....
      das Programm läuft linear durch und kann nicht 2 Dinge auf einmal machen.
      Während du wartest mit Wait, geht halt nichts anderes.

      Entweder du unterbrichst den Programmablauf mit einem Interrupt im Takt des Blinkens oder du schreibst dein Programm wie eine Statemachine um, also einen Zähler, der immer mit festem Takt z.B. 0,5 s hochzählt und du bei bestimmten Zählerständen die Lampen (Ausgänge) weiter schaltest
    • Hallo Thomas,

      ich hab im Mikrokontrollerkurs eine einfache Ampel mit einem Attiny13 programmiert. Wenn "Grün" angezeigt wird, weckseln zwei gelbe Leuchtdioden, wie dies bei Warnung vor Schinenfahrzeugen üblich ist. Das geht ohne Timer aber nur, wenn da nicht viel was anderes passiert.

      Gruß Christian

      BASCOM-Quellcode

      1. '************************************************************
      2. ' Kleiner Mikrocontroller Einsteigerkurs
      3. ' (c) 2013/2014 ceperiga
      4. '------------------------------------------------------------
      5. ' Projektinfos: www.bascom-forum.de
      6. '------------------------------------------------------------
      7. ' Stufe 1: Attiny 13
      8. '------------------------------------------------------------
      9. 'Informationen zur CC-Lizensierung:http://creativecommons.org
      10. '============================================================
      11. ' Name:
      12. ' Unit: 1.1.3
      13. '------------------------------------------------------------
      14. 'Beschreibung: Ampel mit Warnung vor Schienenfahrzeugen
      15. '************************************************************
      16. $regfile = "attiny13.dat" 'verwendeter Controller
      17. $crystal = 1200000 'Taktfrequenz
      18. $hwstack = 6 'Stackwerte und Framesize weisen
      19. $swstack = 6 'Speicherbereiche zu
      20. $framesize = 28
      21. '==============================================================================
      22. 'Ausgänge / Eingänge deklarieren / Aliasvergabe
      23. '------------------------------------------------------------------------------
      24. Config Portb = Output 'Ganzer Port B als Ausgang
      25. Led_rot Alias Portb.1 'Alias für rote Ampel- LED
      26. Led_gelb Alias Portb.2 'Alias für gelbe Ampel- LED
      27. Led_gruen Alias Portb.0 'Alias für grüne Ampel- LED
      28. Warn_led_1 Alias Portb.4 'Alias für Warnlampe 1
      29. Warn_led_2 Alias Portb.3 'Alias für Warnlampe 2
      30. '==============================================================================
      31. 'Variablen deklarieren
      32. '------------------------------------------------------------------------------
      33. Dim I As Byte 'Zählvariable für die For- Next- Schleife
      34. '==============================================================================
      35. 'Hauptprogramm
      36. '------------------------------------------------------------------------------
      37. Do 'Schleifenanfang
      38. Led_rot = 1 'Rote LED einschalten
      39. Wait 10 '10 Sekunden Rotphase
      40. Led_gelb = 1 'Gelbe LED zuschalten aber nichts ausschalten!
      41. Waitms 1500 '1,5 Sekunden für die Rot-/Gelbphase
      42. Led_rot = 0 'Rote LED ausschalten
      43. Led_gelb = 0 'Gelbe LED ebenfalls ausschalten
      44. Led_gruen = 1 'Grüne LED einschalten
      45. '===============================================================================
      46. 'Die 10 Sekunden der Grünphase lassen wir die Warnlampen wechselseitig blinken
      47. 'Diesmal mit der For- Next- Schleife
      48. '===============================================================================
      49. For I = 1 To 10 '10 Durchläufe sollen durchgeführt werden
      50. Warn_led_1 = 1 'Wenn Ihr den Code zwischen For und Next
      51. Waitms 500 'einrückt, könnt Ihr immer gut sehen
      52. Warn_led_1 = 0 'was zwischen beiden Befehlen steht
      53. Warn_led_2 = 1
      54. Waitms 500
      55. Warn_led_2 = 0
      56. Next I 'Zum Ende sind beide Warnleuchten wieder ausgeschaltet
      57. '=============================================================================
      58. 'Weiter geht´s im normalen Ampelprogramm
      59. Led_gruen = 0 'Grüne LED ausschalten
      60. Led_gelb = 1 'Gelbe LED einschalten
      61. Wait 3 '3 Sekunden Gelbphase
      62. Led_gelb = 0 ' Gelbe LED ausschalten
      63. 'Die rote LED wird am Anfang der Schleife wieder eingeschaltet!
      64. Loop 'Zurück zu Do (Schleifenanfang)
      65. '==============================================================================
      66. End 'end program
      Alles anzeigen
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • Thomas1964 schrieb:

      aber wie soll ich den das blinken der beiden' bitte warten ' erzeugen ???
      ein Fragezeichen reicht, und am besten wirkt es, wenn es direkt hinter dem letzten Wort steht, ohne Leerzeichen dazwischen. Sonst nennt man es plenken.

      Während der Wartezeit wird eben nicht 10 Sekunden gewartet, sondern 20x eine halbe Sekunde und dazwischen wird der Blinker umgeschaltet.
    • oder mit einem interrupt. Mein tool spuckt folgendes aus

      BASCOM-Quellcode

      1. const Timer1Reload = 7812
      2. config timer1=timer,prescale = 1024
      3. load timer1 , Timer1Reload
      4. on ovf1 Timer1_isr
      5. enable timer1
      6. start timer1
      7. enable interrupts
      8. 'Timer value explination
      9. ' The timer is a 16Bit timer, it overflows when the timer reaches 65536
      10. ' The AVR is running at 16000000Hz, the prescaler is 1024
      11. ' Each tick is 0,064 ms - (1 / CPUSpeed in KHz ) * Prescaler
      12. ' The timer needs 7812 ticks to reach the required time ( 7812 * 0,064 = 499,968ms)
      13. ' The start value for the timer must be set to 57724 so that it will overflow at 65536 after 7812 ticks
      14. ' NOTE: The load command does the inversion for you (256-value or 65536-value)
      15. Dim F1_3_enable As Bit
      16. Dim F2_4_enable As Bit
      17. Timer1_ISR:
      18. load timer1, Timer1Reload
      19. If F1_3 Weiss = 0 Then F1_3 Weiss = F1_3_enable Else F1_3 Weiss = 0
      20. If F2_4 Weiss = 0 Then F2_4 Weiss = F2_4_enable Else F2_4 Weiss = 0
      21. Return
      Alles anzeigen
      Die Timer1_isr wird alle 0,5 Sekunden angesprungen. Ist die F1_3 =0, dann wird der port mit dem Wert von F1_3_enable geladen. Wenn dieser =0 ist, bleibt die Led aus, bei =1 leuchtet die. Beim nächsten Aufruf kommt der else-Teil zum Tragen und der port der Led wird auf 0 gesetzt. Jetzt musst du nur noch in deinem Programm die F1_3_enable verteilen und =1 zum Blinken bzw =0 zum Nichtblinken setzen.
      Deine alias mit Leerzeichen dazwischen werden angenommen?
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Hallo tschoeatsch,

      habe den timer ins Programm eigefügt, bekomme jetzt aber Fehlermeldungen.

      Gruß Thomas

      Quellcode

      1. 'Programmname: Ampelkreuzung 328p.bas
      2. 'Funktion: Ampelkreuzung mit Fussgänger
      3. 'Mikrocontroller: Mega328
      4. '------------------------------------------------------------------------------------
      5. $regfile = "m328pdef.dat" ' eingesetzter Mikrocontroller
      6. $crystal = 16000000 ' eingestellte Taktfrequenz
      7. $hwstack = 40
      8. $swstack = 32
      9. $framesize = 60
      10. '------------------------------------------------------------------------------------
      11. Config Portc.0 = Input
      12. Config Portb = Output 'gesamten Port B als Ausgabeport
      13. Config Portd = Output 'gesamten Port D als Ausgabeport
      14. A1_3 Rot Alias Portb.5 'Aliasnamen vergeben
      15. A1_3 Gelb Alias Portb.4
      16. A1_3 Gruen Alias Portb.3
      17. A2_4 Rot Alias Portb.2
      18. A2_4 Gelb Alias Portb.1
      19. A2_4 Gruen Alias Portb.0
      20. F1_3 Weiss Alias Portd.7
      21. F1_3 Rot Alias Portd.6
      22. F1_3 Gruen Alias Portd.5
      23. F2_4 Weiss Alias Portd.4
      24. F2_4 Rot Alias Portd.3
      25. F2_4 Gruen Alias Portd.2
      26. '-----------------------------------------------------------------------------------
      27. Dim Analogwandler As Word 'Variable zur Aufnahme des Wertes vom Analogwandler 'Schleifenanfang
      28. Dim Potiwert As Integer
      29. Dim F1_3_enable As Bit
      30. Dim F2_4_enable As Bit
      31. const Timer1Reload = 7812
      32. config timer1=timer,prescale = 1024
      33. load timer1 , Timer1Reload
      34. on ovf1 Timer1_isr
      35. enable timer1
      36. start timer1
      37. Enable Interrupts
      38. Timer1_ISR:
      39. load timer1, Timer1Reload
      40. If F1_3 Weiss = 0 Then F1_3 Weiss = F1_3_enable Else F1_3 Weiss = 0
      41. If F2_4 Weiss = 0 Then F2_4 Weiss = F2_4_enable Else F2_4 Weiss = 0
      42. Return
      43. Config Adc = Single , Prescaler = Auto , Reference = Avcc
      44. Do
      45. Analogwandler = Getadc(0)
      46. Potiwert = Analogwandler / 16
      47. 'Phase 1
      48. A1_3 Rot = 1
      49. A1_3 Gelb = 0
      50. A1_3 Gruen = 0
      51. A2_4 Rot = 0
      52. A2_4 Gelb = 0
      53. A2_4 Gruen = 1
      54. F1_3 Gruen = 1
      55. F1_3 Rot = 0
      56. F2_4 Rot = 1
      57. Wait Potiwert
      58. F1_3 Gruen = 0
      59. F1_3 Rot = 1
      60. Wait 1
      61. 'Phase 2
      62. A1_3 Rot = 1
      63. A1_3 Gelb = 0
      64. A1_3 Gruen = 0
      65. A2_4 Rot = 0
      66. A2_4 Gelb = 1
      67. A2_4 Gruen = 0
      68. Wait 1
      69. 'Phase 3
      70. A1_3 Rot = 1
      71. A1_3 Gelb = 0
      72. A1_3 Gruen = 0
      73. A2_4 Rot = 1
      74. A2_4 Gelb = 0
      75. A2_4 Gruen = 0
      76. Wait 1
      77. 'Phase 4
      78. A1_3 Rot = 1
      79. A1_3 Gelb = 1
      80. A1_3 Gruen = 0
      81. A2_4 Rot = 1
      82. A2_4 Gelb = 0
      83. A2_4 Gruen = 0
      84. Wait 1
      85. 'Phase 5
      86. A1_3 Rot = 0
      87. A1_3 Gelb = 0
      88. A1_3 Gruen = 1
      89. A2_4 Rot = 1
      90. A2_4 Gelb = 0
      91. A2_4 Gruen = 0
      92. F2_4 Gruen = 1
      93. F2_4 Rot = 0
      94. Wait Potiwert
      95. F2_4 Gruen = 0
      96. F2_4 Rot = 1
      97. Wait 1
      98. 'Phase 6
      99. A1_3 Rot = 0
      100. A1_3 Gelb = 1
      101. A1_3 Gruen = 0
      102. A2_4 Rot = 1
      103. A2_4 Gelb = 0
      104. A2_4 Gruen = 0
      105. Wait 1
      106. 'Phase 7
      107. A1_3 Rot = 1
      108. A1_3 Gelb = 0
      109. A1_3 Gruen = 0
      110. A2_4 Rot = 1
      111. A2_4 Gelb = 0
      112. A2_4 Gruen = 0
      113. Wait 1
      114. 'Phase 8
      115. A1_3 Rot = 1
      116. A1_3 Gelb = 0
      117. A1_3 Gruen = 0
      118. A2_4 Rot = 1
      119. A2_4 Gelb = 1
      120. A2_4 Gruen = 0
      121. Wait 1
      122. Loop
      123. End
      Alles anzeigen
    • Hallo ,

      habe das Programm noch mal geändert, aber immer noch Fehlermeldungen , verlangt return.

      Quellcode

      1. 'Programmname: Ampelkreuzung 328p.bas
      2. 'Funktion: Ampelkreuzung mit Fussgänger
      3. 'Mikrocontroller: Mega328
      4. '------------------------------------------------------------------------------------
      5. $regfile = "m328pdef.dat" ' eingesetzter Mikrocontroller
      6. $crystal = 16000000 ' eingestellte Taktfrequenz
      7. $hwstack = 40
      8. $swstack = 32
      9. $framesize = 60
      10. '------------------------------------------------------------------------------------
      11. Config Portc.0 = Input
      12. Config Portb = Output 'gesamten Port B als Ausgabeport
      13. Config Portd = Output 'gesamten Port D als Ausgabeport
      14. A1_3 Rot Alias Portb.5 'Aliasnamen vergeben
      15. A1_3 Gelb Alias Portb.4
      16. A1_3 Gruen Alias Portb.3
      17. A2_4 Rot Alias Portb.2
      18. A2_4 Gelb Alias Portb.1
      19. A2_4 Gruen Alias Portb.0
      20. F1_3 Weiss Alias Portd.7
      21. F1_3 Rot Alias Portd.6
      22. F1_3 Gruen Alias Portd.5
      23. F2_4 Weiss Alias Portd.4
      24. F2_4 Rot Alias Portd.3
      25. F2_4 Gruen Alias Portd.2
      26. '-----------------------------------------------------------------------------------
      27. Dim Analogwandler As Word 'Variable zur Aufnahme des Wertes vom Analogwandler 'Schleifenanfang
      28. Dim Potiwert As Integer
      29. Dim F1_3_enable As Bit
      30. Dim F2_4_enable As Bit
      31. '---------------- Timer konfigurieren----------------------
      32. const Timer1Reload = 7812
      33. config timer1=timer,prescale = 1024
      34. load timer1 , Timer1Reload
      35. on ovf1 Timer1_isr
      36. enable timer1
      37. start timer1
      38. Enable Interrupts
      39. Config Adc = Single , Prescaler = Auto , Reference = Avcc
      40. Do
      41. Analogwandler = Getadc(0)
      42. Potiwert = Analogwandler / 16
      43. 'Phase 1
      44. A1_3 Rot = 1
      45. A1_3 Gelb = 0
      46. A1_3 Gruen = 0
      47. A2_4 Rot = 0
      48. A2_4 Gelb = 0
      49. A2_4 Gruen = 1
      50. F1_3 Gruen = 1
      51. F1_3 Rot = 0
      52. F2_4 Rot = 1
      53. Wait Potiwert
      54. F1_3 Gruen = 0
      55. F1_3 Rot = 1
      56. Wait 1
      57. 'Phase 2
      58. A1_3 Rot = 1
      59. A1_3 Gelb = 0
      60. A1_3 Gruen = 0
      61. A2_4 Rot = 0
      62. A2_4 Gelb = 1
      63. A2_4 Gruen = 0
      64. Wait 1
      65. 'Phase 3
      66. A1_3 Rot = 1
      67. A1_3 Gelb = 0
      68. A1_3 Gruen = 0
      69. A2_4 Rot = 1
      70. A2_4 Gelb = 0
      71. A2_4 Gruen = 0
      72. Wait 1
      73. 'Phase 4
      74. A1_3 Rot = 1
      75. A1_3 Gelb = 1
      76. A1_3 Gruen = 0
      77. A2_4 Rot = 1
      78. A2_4 Gelb = 0
      79. A2_4 Gruen = 0
      80. Wait 1
      81. 'Phase 5
      82. A1_3 Rot = 0
      83. A1_3 Gelb = 0
      84. A1_3 Gruen = 1
      85. A2_4 Rot = 1
      86. A2_4 Gelb = 0
      87. A2_4 Gruen = 0
      88. F2_4 Gruen = 1
      89. F2_4 Rot = 0
      90. Wait Potiwert
      91. F2_4 Gruen = 0
      92. F2_4 Rot = 1
      93. Wait 1
      94. 'Phase 6
      95. A1_3 Rot = 0
      96. A1_3 Gelb = 1
      97. A1_3 Gruen = 0
      98. A2_4 Rot = 1
      99. A2_4 Gelb = 0
      100. A2_4 Gruen = 0
      101. Wait 1
      102. 'Phase 7
      103. A1_3 Rot = 1
      104. A1_3 Gelb = 0
      105. A1_3 Gruen = 0
      106. A2_4 Rot = 1
      107. A2_4 Gelb = 0
      108. A2_4 Gruen = 0
      109. Wait 1
      110. 'Phase 8
      111. A1_3 Rot = 1
      112. A1_3 Gelb = 0
      113. A1_3 Gruen = 0
      114. A2_4 Rot = 1
      115. A2_4 Gelb = 1
      116. A2_4 Gruen = 0
      117. Wait 1
      118. Loop
      119. End
      120. '--------------------------------------------------------------------
      121. Timer1_isr:
      122. Load Timer1 , Timer1reload
      123. If F1_3 Weiss = 0 Then F1_3 Weiss = F1_3_enable Else F1_3 Weiss = 0
      124. If F2_4 Weiss = 0 Then F2_4 Weiss = F2_4_enable Else F2_4 Weiss = 0
      125. Return
      Alles anzeigen
    • Hallo Tschoetsch,

      gibt keine Änderung

      Error : 35 Line : 156 3 parameters expected , in File : Z:\µC Programme\Ampelkreuzung 328p.bas
      Error : 28 Line : 156 IF THEN expected , in File : Z:\µC Programme\Ampelkreuzung 328p.bas
      Error : 350 Line : 156 Interrupt needs return [[ 13]] , in File : Z:\µC Programme\Ampelkreuzung 328p.bas

      gleiche Fehlermeldung

      Gruß Thomas


      Quellcode

      1. 'Programmname: Ampelkreuzung 328p.bas
      2. 'Funktion: Ampelkreuzung mit Fussgänger
      3. 'Mikrocontroller: Mega328
      4. '------------------------------------------------------------------------------------
      5. $regfile = "m328pdef.dat" ' eingesetzter Mikrocontroller
      6. $crystal = 16000000 ' eingestellte Taktfrequenz
      7. $hwstack = 40
      8. $swstack = 32
      9. $framesize = 60
      10. '------------------------------------------------------------------------------------
      11. Config Portc.0 = Input
      12. Config Portb = Output 'gesamten Port B als Ausgabeport
      13. Config Portd = Output 'gesamten Port D als Ausgabeport
      14. A1_3 Rot Alias Portb.5 'Aliasnamen vergeben
      15. A1_3 Gelb Alias Portb.4
      16. A1_3 Gruen Alias Portb.3
      17. A2_4 Rot Alias Portb.2
      18. A2_4 Gelb Alias Portb.1
      19. A2_4 Gruen Alias Portb.0
      20. F1_3 Weiss Alias Portd.7
      21. F1_3 Rot Alias Portd.6
      22. F1_3 Gruen Alias Portd.5
      23. F2_4 Weiss Alias Portd.4
      24. F2_4 Rot Alias Portd.3
      25. F2_4 Gruen Alias Portd.2
      26. '-----------------------------------------------------------------------------------
      27. Dim Analogwandler As Word 'Variable zur Aufnahme des Wertes vom Analogwandler 'Schleifenanfang
      28. Dim Potiwert As Integer
      29. Dim F1_3_enable As Bit
      30. Dim F2_4_enable As Bit
      31. '---------------- Timer konfigurieren----------------------
      32. const Timer1Reload = 7812
      33. config timer1=timer,prescale = 1024
      34. load timer1 , Timer1Reload
      35. on ovf1 Timer1_isr
      36. enable timer1
      37. start timer1
      38. Enable Interrupts
      39. Config Adc = Single , Prescaler = Auto , Reference = Avcc
      40. Do
      41. Analogwandler = Getadc(0)
      42. Potiwert = Analogwandler / 16
      43. 'Phase 1
      44. A1_3 Rot = 1
      45. A1_3 Gelb = 0
      46. A1_3 Gruen = 0
      47. A2_4 Rot = 0
      48. A2_4 Gelb = 0
      49. A2_4 Gruen = 1
      50. F1_3 Gruen = 1
      51. F1_3 Rot = 0
      52. F2_4 Rot = 1
      53. Wait Potiwert
      54. F1_3 Gruen = 0
      55. F1_3 Rot = 1
      56. F1_3_enable = 1
      57. F2_4_enable = 0
      58. Wait 1
      59. 'Phase 2
      60. A1_3 Rot = 1
      61. A1_3 Gelb = 0
      62. A1_3 Gruen = 0
      63. A2_4 Rot = 0
      64. A2_4 Gelb = 1
      65. A2_4 Gruen = 0
      66. Wait 1
      67. 'Phase 3
      68. A1_3 Rot = 1
      69. A1_3 Gelb = 0
      70. A1_3 Gruen = 0
      71. A2_4 Rot = 1
      72. A2_4 Gelb = 0
      73. A2_4 Gruen = 0
      74. Wait 1
      75. 'Phase 4
      76. A1_3 Rot = 1
      77. A1_3 Gelb = 1
      78. A1_3 Gruen = 0
      79. A2_4 Rot = 1
      80. A2_4 Gelb = 0
      81. A2_4 Gruen = 0
      82. Wait 1
      83. 'Phase 5
      84. A1_3 Rot = 0
      85. A1_3 Gelb = 0
      86. A1_3 Gruen = 1
      87. A2_4 Rot = 1
      88. A2_4 Gelb = 0
      89. A2_4 Gruen = 0
      90. F2_4 Gruen = 1
      91. F2_4 Rot = 0
      92. Wait Potiwert
      93. F2_4 Gruen = 0
      94. F2_4 Rot = 1
      95. F1_3_enable = 0
      96. F2_4_enable = 1
      97. Wait 1
      98. 'Phase 6
      99. A1_3 Rot = 0
      100. A1_3 Gelb = 1
      101. A1_3 Gruen = 0
      102. A2_4 Rot = 1
      103. A2_4 Gelb = 0
      104. A2_4 Gruen = 0
      105. Wait 1
      106. 'Phase 7
      107. A1_3 Rot = 1
      108. A1_3 Gelb = 0
      109. A1_3 Gruen = 0
      110. A2_4 Rot = 1
      111. A2_4 Gelb = 0
      112. A2_4 Gruen = 0
      113. Wait 1
      114. 'Phase 8
      115. A1_3 Rot = 1
      116. A1_3 Gelb = 0
      117. A1_3 Gruen = 0
      118. A2_4 Rot = 1
      119. A2_4 Gelb = 1
      120. A2_4 Gruen = 0
      121. Wait 1
      122. Loop
      123. End
      124. '--------------------------------------------------------------------
      125. Timer1_isr:
      126. Load Timer1 , Timer1reload
      127. If F1_3 Weiss = 0 Then F1_3 Weiss = F1_3_enable
      128. Else F1_3 Weiss = 0
      129. If F2_4 Weiss = 0 Then F2_4 Weiss = F2_4_enable
      130. Else F2_4 Weiss = 0
      131. Return
      Alles anzeigen
    • BASCOM-Quellcode

      1. Timer1_isr:
      2. Load Timer1 , Timer1reload
      3. If F1_3 Weiss = 0 Then
      4. F1_3 Weiss = F1_3_enable
      5. Else
      6. F1_3 Weiss = 0
      7. End if
      8. If F2_4 Weiss = 0 Then
      9. F2_4 Weiss = F2_4_enable
      10. Else
      11. F2_4 Weiss = 0
      12. end if
      13. Return
      Alles anzeigen
      Probier mal das.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------