Forum: Mikrocontroller und Digitale Elektronik Wert aus Variable kopieren


von Tobias Blome (Gast)


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

von Andreas Jäger (Gast)


Lesenswert?

In BASIC ???

  Schalter_gedrueckt = Minute

vielleicht ;)

MfG
Andreas

von Tobias Blome (Gast)


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

von Markus (Gast)


Lesenswert?

If Pind.5 = 0 then
  Schalter_gedrueckt = Minute
end if

von Tobi (Gast)


Lesenswert?

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

von Tobias Blome (Gast)


Angehängte Dateien:

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

von Dirk (Gast)


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

von Tobias Blome (Gast)


Angehängte Dateien:

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)

von Tobias Blome (Gast)


Angehängte Dateien:

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---

von Dirk (Gast)


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

von Tobias Blome (Gast)


Lesenswert?

Danke.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.