Taster schaltet Led

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

    • Taster schaltet Led

      Guten Tag Forum,
      ich brauche hilfe diese Kleine Prg. muss erweitert ich habe keine schimmer wie,
      ich mochte mit eine Taster eine Led einschalter 10 mal Blinken und dann aus, hilft mir bitte jemand? ich danke euch in voraus.
      Antonio

      $regfile = "attiny13.dat"
      $crystal = 1200000
      $swstack = 10

      Config Pinb.3 = Input
      Taste Alias Pinb.3 PIN... nicht port... fuer EINGABE
      Portb.3 = 1

      Waitms 10 'Pullup-Widerstand

      Config Portb.0 = Output 'Portb.0 als Ausgabe
      Led Alias Portb.0 'Definition von Aliasnamen


      Do

      Debounce Taste , 0 , Umschalten , Sub 'Abfragen, ob Taste neu gedrueckt wurde und entprellen

      Loop '
      End

      Umschalten:
      Toggle Led
      Retu
      Teilen dein Wissen, so erlagst du zu Unsterblichkeit
    • Wenn es nur blinken soll kannst du das so machen

      BASCOM-Quellcode

      1. $regfile = "attiny13.dat"
      2. $crystal = 1200000
      3. $swstack = 10
      4. Config Pinb.3 = Input
      5. Taste Alias Pinb.3 'PIN... nicht port... fuer EINGABE
      6. Portb.3 = 1 'Pullup-Widerstand
      7. Waitms 10 'Brauchst du nicht an der Stelle
      8. Config Portb.0 = Output 'Portb.0 als Ausgabe
      9. Led Alias Portb.0 'Definition von Aliasnamen
      10. Dim Taster_flag As Bit , Count As Byte
      11. Taster_flag = 0
      12. Count = 0
      13. Do
      14. Debounce Taste , 0 , Umschalten , Sub 'Abfragen, ob Taste neu gedrueckt wurde und entprellen
      15. If Count > 10 Then
      16. Taster_flag = 0
      17. Count = 0
      18. End If
      19. If Taster_flag = 1 And Count <= 10 then
      20. Toggle Led
      21. Wait 1
      22. Incr Count
      23. End If
      24. Loop '
      25. End
      26. Umschalten:
      27. Taster_flag = 1
      28. Return
      Alles anzeigen
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von djmsc ()

    • Hatte den Code mal eben getestet und musste den Zähler noch etwas abändern.

      BASCOM-Quellcode

      1. $regfile = "attiny13.dat"
      2. $crystal = 1200000
      3. $swstack = 10
      4. Config Pinb.3 = Input
      5. Taste Alias Pinb.3 'PIN... nicht port... fuer EINGABE
      6. Portb.3 = 1 'Pullup-Widerstand
      7. 'Waitms 10 'Brauchst du nicht an der Stelle
      8. Config Portb.0 = Output 'Portb.0 als Ausgabe
      9. Led Alias Portb.0 'Definition von Aliasnamen
      10. Dim Taster_flag As Bit , Count As Byte
      11. Taster_flag = 0
      12. Count = 0
      13. Do
      14. Debounce Taste , 0 , Umschalten , Sub 'Abfragen, ob Taste neu gedrueckt wurde und entprellen
      15. If Count >= 20 Then
      16. Taster_flag = 0
      17. Count = 0
      18. End If
      19. If Taster_flag = 1 And Count <= 19 then
      20. Toggle Led
      21. Wait 1
      22. Incr Count
      23. End If
      24. Loop '
      25. End
      26. Umschalten:
      27. Taster_flag = 1
      28. Return
      Alles anzeigen
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • Nachdem ich mich mit Antonio über sein Programm unterhalten habe ist in der Ausführung ein Fehler entstanden (Missverständniss).
      Antonio möchte das die LED nach Tastendruck an geht und 10 Sekunden lang leuchtet und das man mit dem Taster die LED auch wieder ausschalten kann.

      BASCOM-Quellcode

      1. $regfile = "attiny13.dat"
      2. $crystal = 1200000
      3. $swstack = 10
      4. Config Pinb.0 = Input
      5. Taste Alias Pinb.0 'PIN... nicht port... fuer EINGABE
      6. Portb.0 = 1 'Pullup-Widerstand
      7. Config Portc.0 = Output 'Portb.0 als Ausgabe
      8. Led Alias Portc.0 'Definition von Aliasnamen
      9. Const Timer0_preload = 22
      10. Config Timer0 = Timer, Prescale = 1024
      11. Timer0 = Timer0_preload
      12. On Timer0 Isr_timer0
      13. Enable Interrupts
      14. Dim Taster_flag As Bit , Count As Byte , Sekunden As Byte
      15. Const An_zeit = 10
      16. Taster_flag = 0
      17. Count = 0
      18. Do
      19. Debounce Taste , 0 , Umschalten , Sub 'Abfragen, ob Taste neu gedrueckt wurde und entprellen
      20. If Sekunden = An_zeit Then
      21. Disable Timer0
      22. Sekunden = 0
      23. Count = 0
      24. Taster_flag = 0
      25. Reset Led
      26. End If
      27. Loop
      28. End
      29. Umschalten:
      30. Toggle Taster_flag
      31. If Taster_flag = 0 Then
      32. Disable Timer0
      33. Count = 0
      34. Sekunden = 0
      35. Reset Led
      36. Else
      37. Enable Timer0
      38. Set Led
      39. End If
      40. Return
      41. Isr_timer0:
      42. If Count = 32 Then
      43. Count = 0
      44. Incr Sekunden
      45. End If
      46. Incr Count
      47. Return
      Alles anzeigen
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • Hallo Mario Danke dir sehr für das Prg. dennoch zeigt mir diese fehler warum und was kann ich dagegen tun. Danke


      Error : 41 Line : 9 Variable can not be used with SET [DDRC] , in File : C:\attiny13\mario taster.bas
      Error : 40 Line : 33 Variable can not be used with RESET [PORTC] , in File : C:\attiny13\mario taster.bas
      Error : 7 Line : 33 IF THEN expected [ 33] , in File : C:\attiny13\mario taster.bas
      Error : 123 Line : 33 END IF expected , in File : C:\attiny13\mario taster.bas
      Teilen dein Wissen, so erlagst du zu Unsterblichkeit
    • Sorry da ist noch ein Teil von meinem µC mit drin gewesen :(

      Hier also der richtige Code:

      BASCOM-Quellcode

      1. $regfile = "attiny13.dat"
      2. $crystal = 1200000
      3. $hwstack = 10
      4. $swstack = 10
      5. $framesize = 32
      6. Config Pinb.3 = Input
      7. Taste Alias Pinb.3 'PIN... nicht port... fuer EINGABE
      8. Portb.3 = 1 'Pullup-Widerstand
      9. 'Waitms 10 'Brauchst du nicht an der Stelle
      10. Config Portb.0 = Output 'Portb.0 als Ausgabe
      11. Led Alias Portb.0 'Definition von Aliasnamen
      12. Const Timer0_preload = 22
      13. Config Timer0 = Timer, Prescale = 1024
      14. Timer0 = Timer0_preload
      15. On Timer0 Isr_timer0
      16. Enable Interrupts
      17. Dim Taster_flag As Bit , Count As Byte , Sekunden As Byte
      18. Const An_zeit = 10 'hier kannst du die Zeit einstellen
      19. Taster_flag = 0
      20. Count = 0
      21. Do
      22. Debounce Taste , 0 , Umschalten , Sub 'Abfragen, ob Taste neu gedrueckt wurde und entprellen
      23. If Sekunden = An_zeit Then
      24. Disable Timer0
      25. Sekunden = 0
      26. Count = 0
      27. Taster_flag = 0
      28. Reset Led
      29. End If
      30. Loop
      31. End
      32. Umschalten:
      33. Toggle Taster_flag
      34. If Taster_flag = 0 Then
      35. Disable Timer0
      36. Count = 0
      37. Sekunden = 0
      38. Reset Led
      39. Else
      40. Enable Timer0
      41. Set Led
      42. End If
      43. Return
      44. Isr_timer0:
      45. If Count = 32 Then
      46. Count = 0
      47. Incr Sekunden
      48. End If
      49. Incr Count
      50. Return
      Alles anzeigen
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • Hallo Mario,

      Herzlich vielen danken für die fabelhafte Arbeit die Du geleistet hast
      es ist erstaunlich für Zwei befehlen alles was dahinter steckt.
      mein Kleine Prg. hat genau so lange gedauert wenn nicht mehr,
      ich bin sehr Glücklich danke die noch mal.

      LG. Antonio
      Teilen dein Wissen, so erlagst du zu Unsterblichkeit