- Labornetzteil AliExpress         
Ergebnis 1 bis 6 von 6

Thema: 7Segmentanzeige auslösen durch zwei Tasten in bestimmter Zeitfolge / Attiny 24

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    7Segmentanzeige auslösen durch zwei Tasten in bestimmter Zeitfolge / Attiny 24

    Hallo Leute,
    Ich habe unten stehenden Code zur Verfügung, der bisher mit einem LDR ausgelöst wurde , und möchte nun, das die Segmentanzeige startet, wenn innerhalb von 5min zwei Tasten nacheinander betätigt werden. Nach Ablauf dieser Zeit muss die erste Taste erneut betätigt werden. Sprich mit Taste 1 startet die ganze Sache und Taste 2 löst dann die Segmentanzeige aus.
    Leider komme ich hier nicht ganz zurecht und hoffe unter euch jemanden zu finden, der mir da etwas helfen kann.
    Bisher bekam ich immer nur als Antwort, lernen und suchen und lesen, dazu fehlt mir momentan leider etwas die Zeit ^^.


    Code:
    $hwstack = 20                                               'hardwarestack herabsetzen damit genügend variablen zur verfügung stehen
    $regfile = "ATtiny24.DAT"
    $crystal = 128000                                           'Frequenz des internen Oszillators
    
    
    
    
    Config Adc = Single , Prescaler = Auto
    Config Portb = &B00000111                                   'Pinb.0-3 auf 'Ausgang', Rest auf 'Eingang' schalten
    Config Porta = &B10001011                                   'Pina.0+1+3+7 auf 'Ausgang', Rest auf 'Eingang' schalten
    Portb = 0                                                   'Ausgänge auf Low setzen
    Stop Ac                                                     'Analog-Komparator abschalten, um Strom zu sparen
    
    Wdtcr = &B11010011                                          'Watchdog definieren: 0.125 Sekunden, Interrupt auslösen, kein Reset
    Enable Interrupts                                           'Interrupts freigeben
    
    
    Anzeige:
    Restore Daten                                               'Am Beginn der Daten anfangen
    Alt = 1023                                                  'Doppelauslösung verhindern
    Do
    Read Zeichen
    Wdtcr = &B11010111                                          'Watchdog auf 2s stellen
    If Zeichen = "0" Then Gosub P0                              'schreibt 0 ins Display
    If Zeichen = "1" Then Gosub P1                              'schreibt 1 ins Display
    If Zeichen = "2" Then Gosub P2                              'schreibt 2 ins Display
    If Zeichen = "3" Then Gosub P3                              'schreibt 3 ins Display
    If Zeichen = "4" Then Gosub P4                              'schreibt 4 ins Display
    If Zeichen = "5" Then Gosub P5                              'schreibt 5 ins Display
    If Zeichen = "6" Then Gosub P6                              'schreibt 6 ins Display
    If Zeichen = "7" Then Gosub P7                              'schreibt 7 ins Display
    If Zeichen = "8" Then Gosub P8                              'schreibt 8 ins Display
    If Zeichen = "9" Then Gosub P9                              'schreibt 9 ins Display
    If Zeichen = "n" Then Gosub Pn                              'schreibt n ins Display
    If Zeichen = "e" Then Gosub Pe                              'schreibt E ins Display
    If Zeichen = "re" Then Gosub Rechts                         'Lauflicht rechts herum
    If Zeichen = "li" Then Gosub Links                          'Lauflicht links herum
    If Zeichen = " " Then Gosub Leer                            'leerzeichen-keine Anzeige
    If Zeichen = "ost" Then Gosub East                          'schreibt OSt ins Display
    If Zeichen = "nord" Then Gosub North                        'schreibt nord ins Display
    If Zeichen = "p" Then Gosub Pp                              'Pause zwischen Zeichen'
    Wdtcr = &B11010011                                          'Watchdog wieder auf 125ms stellen
    If Zeichen = "X" Then Return
    Loop
    
    Pp:
    Waitms 500
    Return
    
    P0:
    Portb = &B00000111
    Porta = &B10000011
    Reset Watchdog
    Powerdown
    Portb = 0
    Porta = 0
    Return
    
    P1:
    Portb = &B00000110
    Reset Watchdog
    Powerdown
    Portb = 0
    Return
    
    P2:
    Portb = &B00000011
    Porta = &B10001010
    Reset Watchdog
    Powerdown
    Portb = 0
    Porta = 0
    Return
    
    P3:
    Portb = &B00000111
    Porta = &B00001010
    Reset Watchdog
    Powerdown
    Portb = 0
    Porta = 0
    Return
    
    P4:
    Portb = &B00000110
    Porta = &B00001001
    Reset Watchdog
    Powerdown
    Portb = 0
    Porta = 0
    Return
    
    P5:
    Portb = &B00000101
    Porta = &B00001011
    Reset Watchdog
    Powerdown
    Portb = 0
    Porta = 0
    Return
    
    P6:
    Portb = &B00000101
    Porta = &B10001011
    Reset Watchdog
    Powerdown
    Portb = 0
    Porta = 0
    Return
    
    P7:
    Portb = &B00000111
    Reset Watchdog
    Powerdown
    Portb = 0
    Return
    
    P8:
    Portb = &B00000111
    Porta = &B10001011
    Reset Watchdog
    Powerdown
    Portb = 0
    Porta = 0
    Return
    
    P9:
    Portb = &B00000111
    Porta = &B00001001
    Reset Watchdog
    Powerdown
    Portb = 0
    Porta = 0
    Return
    
    Pn:
    Portb = &B00000100
    Porta = &B10001000
    Reset Watchdog
    Powerdown
    Portb = 0
    Porta = 0
    Return
    
    Pe:
    Portb = &B00000001
    Porta = &B10001011
    Reset Watchdog
    Powerdown
    Portb = 0
    Porta = 0
    Return
    
    Rechts:
    Wdtcr = &B11010100
    Portb = &B00000001
    Reset Watchdog
    Powerdown
    Portb = 0
    Portb = &B00000010
    Reset Watchdog
    Powerdown
    Portb = 0
    Portb = &B00000100
    Reset Watchdog
    Powerdown
    Portb = 0
    Porta = &B00000010
    Reset Watchdog
    Powerdown
    Porta = 0
    Porta = &B10000000
    Reset Watchdog
    Powerdown
    Porta = 0
    Porta = &B00000001
    Reset Watchdog
    Powerdown
    Porta = 0
    Portb = &B00000001
    Reset Watchdog
    Powerdown
    Portb = 0
    Reset Watchdog
    Powerdown
    Portb = 0
    Porta = 0
    Portb = 0
    Portb = &B00000010
    Reset Watchdog
    Powerdown
    Portb = 0
    Portb = &B00000100
    Reset Watchdog
    Powerdown
    Portb = 0
    Porta = &B00000010
    Reset Watchdog
    Powerdown
    Porta = 0
    Porta = &B10000000
    Reset Watchdog
    Powerdown
    Porta = 0
    Porta = &B00000001
    Reset Watchdog
    Powerdown
    Porta = 0
    Portb = &B00000001
    Reset Watchdog
    Powerdown
    Portb = 0
    Reset Watchdog
    Powerdown
    Portb = 0
    Porta = 0
    Portb = 0
    Portb = &B00000010
    Reset Watchdog
    Powerdown
    Portb = 0
    Portb = &B00000100
    Reset Watchdog
    Powerdown
    Portb = 0
    Porta = &B00000010
    Reset Watchdog
    Powerdown
    Porta = 0
    Porta = &B10000000
    Reset Watchdog
    Powerdown
    Porta = 0
    Porta = &B00000001
    Reset Watchdog
    Powerdown
    Porta = 0
    Portb = &B00000001
    Reset Watchdog
    Powerdown
    Portb = 0
    Reset Watchdog
    Powerdown
    Portb = 0
    Porta = 0
    Return
    
    Links:
    Wdtcr = &B11010100
    Portb = &B00000001
    Reset Watchdog
    Powerdown
    Portb = 0
    Porta = &B00000001
    Reset Watchdog
    Powerdown
    Porta = 0
    Porta = &B10000000
    Reset Watchdog
    Powerdown
    Porta = 0
    Porta = &B00000010
    Reset Watchdog
    Powerdown
    Porta = 0
    Portb = &B00000100
    Reset Watchdog
    Powerdown
    Portb = 0
    Portb = &B00000010
    Reset Watchdog
    Powerdown
    Portb = 0
    Portb = &B00000001
    Reset Watchdog
    Powerdown
    Portb = 0
    Reset Watchdog
    Powerdown
    Portb = 0
    Porta = 0
    Return
    
    East:
    Wdtcr = &B11010101
    Portb = &B00000111
    Porta = &B10000011
    Reset Watchdog
    Powerdown
    Portb = 0
    Porta = 0
    Portb = &B00000101
    Porta = &B00001011
    Reset Watchdog
    Powerdown
    Portb = 0
    Porta = 0
    Porta = &B10001011
    Reset Watchdog
    Powerdown
    Porta = 0
    Return
    
    North:
    Wdtcr = &B11010101
    Portb = &B00000100
    Porta = &B10001000
    Reset Watchdog
    Powerdown
    Portb = 0
    Porta = 0
    Portb = &B00000100
    Porta = &B10001010
    Reset Watchdog
    Powerdown
    Portb = 0
    Porta = 0
    Porta = &B10001000
    Reset Watchdog
    Powerdown
    Porta = 0
    Portb = &B00000110
    Porta = &B10001010
    Reset Watchdog
    Powerdown
    Portb = 0
    Porta = 0
    Return
    
    Leer:
    Reset Watchdog
    Powerdown
    
    Return
    
    End
    
    Daten:
    ' Data "nord"
    Data "re"
    Data "n" , "5" , "1" , " " , "0" , "1" , " " , "1" , "2" , "5"
    Data " "
    ' Data "ost"
    Data "e" , "0" , "1" , "3" , " " , "3" , "9" , " " , "7" , "3" , "0"
    Data "re"
    Data "X"

    Anbei habe ich den Schaltplan, wie es mir so vorschwebt.

    Danke für eventuelle Tips.

    Gruß aus Freital

    Jörg
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Segmentanzeige mit tasten.jpg  

Ähnliche Themen

  1. Attiny AT90S2313 ersetzt durch AT2313
    Von frankensteins-freund im Forum AVR Hardwarethemen
    Antworten: 9
    Letzter Beitrag: 11.04.2011, 18:26
  2. Unterprogramm durch Interrupt auslösen
    Von YaNnIk im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 07.01.2010, 17:47
  3. rnmega2560 USB Interrupt durch USB auslösen
    Von AndiDC im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 26.03.2007, 07:52
  4. Code - Softclock (mit Uhrenquarz), mit zwei Tasten stellbar
    Von Andree-HB im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 16.08.2006, 10:38
  5. sofortigen programmstop durch interrupt auslösen
    Von MarkusH im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 25.05.2005, 14:47

Berechtigungen

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

LiFePO4 Speicher Test