- Modernes Energiemessgeraet    Werbung      
Ergebnis 1 bis 10 von 12

Thema: Wert in Variable einlesen ?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    55
    Beiträge
    765
    Die Variable telnr wird überlaufen.

    Wie geschieht denn die IR-Abfrage?

    Nimm, wie schon erwähnt, ein Array.
    Wenn die IR-Abfrage (Fernbedienungsroutine) per Interrupt z.B. die letzte Ziffer in der Variablen neueziffer ablegt, dann würde ich es so probieren (nicht getestet!):
    Code:
    $regfile = "m88Adef.dat"
    $baud = 19200
    $crystal = 8000000
    
    
    $hwstack = 160
    $swstack = 100
    $framesize = 100
    
    Dim Position As Byte
    Dim Stelefonnr As String * 15
    Dim Btelefonnr(15) As Byte At Stelefonnr Overlay
    Dim Neueziffer As Byte
    
    
    Gosub Telnrleeren
    
    Do
       Gosub Infrarot
       Gosub Zifferntest
    
    Loop
    End
    
    Zifferntest:
       Select Case Neueziffer                                   'Ziffer 0-9
          Case Is < 10
             Gosub Zifferhinzu
          Case 13                                               'Nummer fertig eingegeben also wählen
             Gosub Nummernwahl
          Case 12                                               'letzte Stelle löschen
             Gosub Zifferweg
          Case 11                                               'alle  Stellen löschen
             Gosub Telnrleeren
       End Select
    Return
    
    Infrarot:                                                   'Wenn nicht per Interrupt
    
    Return
    
    Telnrleeren:
       For Position = 1 To 15
          Btelefonnr(position) = 0                              'Nullbyte signalisiert Ende eines Strings
       Next Position
       Neueziffer = 255
       Position = 0
    Return
    
    Zifferhinzu:
       If Position < 15 Then
          Incr Position
          Neueziffer = Neueziffer + 48                             'ASCii Codes für Zahlen
          Btelefonnr(position) = Neueziffer
       End If
    Return
    
    Zifferweg:
       If Position => 1 Then
          Decr Position
          Btelefonnr(position) = 0
       End If
    Return
    
    Nummernwahl:
       Print "Kommandozumnummerwählen";
       Print Stelefonnr
       Gosub Telnrleeren
    Return
    In der IR-Routine dann einfach die Ziffer direkt in die Variable neueziffer schreiben.
    Wurde OK gedrückt, dann die 13 reinschreiben.
    usw.
    Geändert von peterfido (12.05.2013 um 11:32 Uhr)
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    18.03.2007
    Ort
    NRW
    Beiträge
    62
    Code:
    '
    $regfile "m8def.dat"     'Definiert den Atmega als Atmega8
    $crystal = 1000000       'Gibt die Quarzfrequenz an in Herz
    $hwstack = 32            'Default use 32 Hardware reservierte Speicher
    $swstack = 10            'Default Software resvierung Speicher
    $baud = 2400
    
    '---------------------- Config Display ----------------------------------------
    ' Konfiguration fürs Display
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , Rs = Portc.5 , E = Portc.4
    '-------------------------Variable deklarieren -------------------------------
    Dim Adresse As Byte      ' Variable für Infrarot Adresse
    Dim Commando As Byte
    
    Dim Flag As Byte
    Dim Blink_aus As Byte
    Dim Blink_an As Byte
    
    
    '------------------------------- I / O ----------------------------------------
    Ddrd = &B11100000        ' Portd.5-d6-d7 als Ausgang für Leds setzen
    Ddrb.2 = 1               ' BG2 als Ausgang für Display Beleuchtung setzen
    Portb.6 = 1              ' Pull Down setzen für Tastereingang
    
    
    '---------------- Konfiguration für 'IR Eingang -------------------------------
    
    Portb.0 = 1              ' PullUp setzen für Eingangspin IR-Led
    Config Rc5 = Pinb.0      ' Pin für IR Abfrage setzen
    
    '---------------------------------- Interrupts ---------------------------------
    Enable Interrupts        ' Interrups Global freigeben
    
    '------------------------------------------------------------------------------
    
    Cls
    Flag = 1
    Do
    
    '--------------------Ankommendes IR Signal auswerten --------------------------
    Getrc5(adresse , Commando)
    If Flag = 1 Then
    Lcd "Warte auf IR Signal"
    Flag = 0
    End If
    If Adresse <> 255 Then
    Reset Commando.7
    
    Cls
    Flag = 1
    
    End If
    '------------------------
    If Commando = 1 Then Gosub 1
    If Commando = 2 Then Gosub 2
    If Commando = 3 Then Gosub 3
    Cls
    Lcd " Taste=" ; Commando
    Waitms 200
    
    Loop
    
    
    '---------------------- Sub Routinen fuer gedrückte Taste 1 -------------------
    1:
    Portd.5 = 1
    Waitms 500
    Portd.5 = 0
    Return
    
    '----------------------  Sub Routinen fuer gedrückte Taste 2 ------------------
    2:
    Print 2
    
    Portd.6 = 1
    Waitms 50
    Portd.6 = 0
    Return
    '----------------------- Sub Routinen fuer gedrückte Taste 3 ------------------
    3:
    Print 3
    Portd.7 = 1
    Waitms 50
    Portd.7 = 0
    Return
    Geändert von radbruch (13.05.2013 um 17:57 Uhr) Grund: CODE-Tag eingefügt (Letze Ändeung von nase um 17:42)

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Code:
    Getrc5(adresse , Commando)
    If Flag = 1 Then
    Lcd "Warte auf IR Signal"
    Flag = 0
    End If
    If Adresse <> 255 Then
    Reset Commando.7
    
    Cls
    End If
    Wo wird "Flag" denn auf 1 gesetzt?

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    18.03.2007
    Ort
    NRW
    Beiträge
    62
    Sorry hatte ich vergessen , gerade nachgetragen , siehe unterstrichenes

    mfg Nase

Ähnliche Themen

  1. wert einer variable über ht an pc senden
    Von Mk1.12.91 im Forum Asuro
    Antworten: 7
    Letzter Beitrag: 04.06.2010, 20:36
  2. Variable - unerklärlicher Wert (Simulator)
    Von Bloodyben im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 18.09.2008, 16:12
  3. Wert einer Variable zu Programm beginn?
    Von Brantiko im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 29.02.2008, 16:49
  4. Variable enthält falschen Wert
    Von contrero im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 14.09.2007, 08:15
  5. Wert einer Variable eingrenzen?
    Von TobiasBlome im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 25.05.2007, 22:15

Stichworte

Berechtigungen

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

    Werbung      fchao-Sinus-Wechselrichter AliExpress