mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wert aus Variable kopieren


Autor: Tobias Blome (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich möchte einen Wert aus einer Variablen kopieren und in eine andere
Variable schreiben. Und alles in Basic mit dem Atmel 90s2313.

Also: Dim Minuten As Byte.
"Minuten" wird jede Minute aktualisiert(jede Minute+1)! Und nun
möchte ich per knopfdruck (If Pind.5 =0) die Zahl aus "Minuten"
kopieren und in der Variablen z.B. "Schalter_gedrueckt" festhalten so
dass ich das noch Stunden später ablesen kann(wird vom LCD ausgegeben).

Hat da jemand eine Idee?

Danke schon mal, Tobias

Autor: Andreas Jäger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In BASIC ???

  Schalter_gedrueckt = Minute

vielleicht ;)

MfG
Andreas

Autor: Tobias Blome (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
;-)

Du hast mich nicht richtig verstanden.

"Minute" erhöht sich jede Minute. Das ist ne Tatsache.

Wenn "Minute" den Wert 54 hat und der Taster gedrückt wird, dann soll
"Schalter_gedrueckt" auch den Wert 54 bekommen! 1 Minute später hat
"Minute" den Wert 55!!! und  "Schalter_gedrueckt" hat IMMERNOCH den
Wert 54! Noch eine Minute später hat "Minute" den Wert 56 und
"Schalter_gedrueckt" hat IMMERNOCH den Wert 54.

Erst wenn der Taster gedrückt wird aktualisiert sich der Wert für
"Schalter_gedrueckt" und soll solange beibehalten werden bis der
Taster gedrückt wird und sich der Wert erneut aktualisiert.

Tobias

Tobias

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
If Pind.5 = 0 then
  Schalter_gedrueckt = Minute
end if

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@tobias blome:
er hat dich richtig verstanden aber du seine antowrt nicht :)

Autor: Tobias Blome (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich hab´s mal probiert und das geht nicht:-(
Error:242 Source variable does not match the target variable
Hat da jemand einen Vorschlag, was ich falsch gemacht haben könnte?
(Programm hat und fuktioniert immer noch bis auf Schalter_gedrueckt)

Das hab ich schon geschrieben:
Dim Schalter_gedrueckt As Byte
Schalter_gedrueckt = 0

und das ist meine Do - Loop Schleife:(Prog im Anhang)

'----------------------------------------------------------------------- 
--------
'Do - Looproutiene:
'----------------------------------------------------------------------- 
--------

Do

'----------------------------------------------------------------------- 
--------
'Uhrzeit festhalten!!!
'----------------------------------------------------------------------- 
--------
If Pind.5 = 0 Then
Schalter_gedrueckt = Minute
End If
'----------------------------------------------------------------------- 
--------
'UHR einstellen:   Zum einstellen RESET(PD4)festhalten!!!
'----------------------------------------------------------------------- 
--------
 'Minuten +
 If Pind.5 = 0 And Pind.4 = 0 Then
 Minuten = Minuten + 1
 End If
 'Minuten -
 'If Pind.5 = 0 And Pind.4 = 0 Then
 'Minuten = Minuten - 1
 'End If
'----------------------------------------------------------------------- 
--------
'ALARM LED:
'If Pind.5 = 0 Or Pind.4 = 0 Then
 'Portd.5 = 1                                                'Pin auf
High setzen(als Ausgang deklarieren!!!)
 'End If
'----------------------------------------------------------------------- 
--------
'Resettaster
  If Pind.4 = 0 Then
     Tuer_1_zaehler = 0
  End If
'----------------------------------------------------------------------- 
--------
'Ueberwachung Tuer_1
  Tuer_1 = Pind.5                                           ' Pin für
Tür festlegen
'Tuerzähler 1
  If Tuer_1 = 1 And Tuer_1_status = 0 Then                  ' Tür
wurde aufgemacht
   Incr Tuer_1_zaehler                                      ' Zähler
um 1 erhöhen,
   Tuer_1_status = 1                                        ' Status
OFFEN eintragen
  End If

  If Tuer_1 = 0 Then Tuer_1_status = 0                      ' Tür zu,
status zuweisen
Waitms 50
'---------------------------------------------------------------------
----------
'Ueberwachung Tuer_2



  Gosub Anzeige                                             ' Änderung
anzeigen

Loop

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

'----------------------------------------------------------------------- 
--------
'Uhrzeit festhalten!!!
'----------------------------------------------------------------------- 
--------
If Pind.5 = 0 Then
Schalter_gedrueckt = Minute
End If


Deine Variabel heisst nicht Minute sondern "Minuten" ...


If Pind.5 = 0 Then
Schalter_gedrueckt = Minuten
End If


Ein kleiner Rat: Du solltest deine Tasten noch entprellen ... zum Teil
koenntest du den debounce befehl nehmen .....


Mfg

Dirk

Autor: Tobias Blome (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ooooooooooooooooooooooooooooh NEIN - da hab ich wohl echt PECH gehabt!!!
;-)

Funzt SUPER GUT - man muss es nur richtig schreiben!
also vielen Dank - Ich hätte nie gedacht das das mit dem merken sooo
einfach ist.

Zum entprellen, ich hab ja manchmal "waitms 50" benuzt. Was ist denn
der debounce befehl?


Tobias
(aktuelles Prog im Anhang)

Autor: Tobias Blome (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
weiss jemand wie ich die Uhrzeit 2stellig auf dem LCD ausgebe?

7:5:9 Uhr (07:05:09 Uhr)sieht etwas komisch aus ;-)
und genauso der Zähler - wenn die nächste Stelle gebraucht wird (von 9
auf 10) dann verschiebt sich alles um eine Stelle :-( Kann man
irgendwie von 09 auf 10 usw.???

Tobias


'---schnipp---
'Zaehler
Dim Tuer_1 As Bit
Dim Tuer_1_status As Bit
Dim Tuer_1_zaehler As Byte

'Tuer(1)
Tuer_1 = 0
Tuer_1_status = 0
Tuer_1_zaehler = 0

'----------------------------------------------------------------------- 
--------
'Do - Looproutiene:
'----------------------------------------------------------------------- 
--------

Do

'Pinbeschaltung
Tuer_1 = Pind.5
Resetpin = Pind.4
'----------------------------------------------------------------------- 
--------
'Uhrzeit festhalten!!!
'----------------------------------------------------------------------- 
--------
If Tuer_1 = 0 And Tuer_1_status = 1 Then
Speicher1_h = Stunden
Speicher1_m = Minuten
'ResetTaster setzt zurueck Unterpunkt "Reset"
Speicher1_s = Sekunden
End If
'----------------------------------------------------------------------- 
--------
'UHR einstellen:   Zum einstellen RESET festhalten!!!
'----------------------------------------------------------------------- 
--------
 'Minuten +
 If Tuer_1 = 0 And Resetpin = 0 Then
 Minuten = Minuten + 1
 End If
 'Minuten -
 'If Tuer_1 = 0 And Resetpin = 0 Then
 'Minuten = Minuten - 1
 'End If
'----------------------------------------------------------------------- 
--------
'ALARM LED:
'If Tuer_1 = 0 Or Resetpin = 0 Then
 'Portd.0 = 1                 'Pin auf High setzen(als Ausgang
deklarieren!!!)
 'Ruecksetzen unter Punkt RESETTASTER
 'End If
'----------------------------------------------------------------------- 
--------
'Resettaster
  If Resetpin = 0 Then
     Tuer_1_zaehler = 0
     Portd.0 = 0
     Speicher1_h = 0
     Speicher1_m = 0
     Speicher1_s = 0
  End If
'----------------------------------------------------------------------- 
--------
'Ueberwachung Tuer_1
  'Tuer_1 = Tuer_1                                           ' Pin
für Tür festlegen
'Tuerzähler 1
  If Tuer_1 = 1 And Tuer_1_status = 0 Then                  ' Tür
wurde aufgemacht
   Incr Tuer_1_zaehler                                      ' Zähler
um 1 erhöhen,
   Tuer_1_status = 1                                        ' Status
OFFEN eintragen
  End If

  If Tuer_1 = 0 Then Tuer_1_status = 0                      ' Tür zu,
status zuweisen
Waitms 50
'----------------------------------------------------------------------- 
--------
'Ueberwachung Tuer_2
'---------
  Gosub Anzeige                                             ' Änderung
anzeigen

Loop

'---schnapp---

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Bascom besitzt sogar eine Hilfe da kannst du schaun was der
Debouncebefehl macht.

Damit du eine zweistellige Ausgabe machst musst du die Zahlen in BCD
umwandeln ....

Jetzt komm nicht auf die Idee zufragen wie das geht. Schau dir dazu mal
die Samples in der Hilfe an .... (makebcd)

Bei konkreten Problemen wird dir schon geholfen.

Mfg

Dirk

Autor: Tobias Blome (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.