DEBOUNCE/de

(Difference between revisions)
Jump to: navigation, search
(See also)
(Example)
Line 93: Line 93:
 
<span style="font-family: Arial;">&nbsp;</span>
 
<span style="font-family: Arial;">&nbsp;</span>
  
= <span class="f_Header">Example</span> =
+
= <span class="f_Header">Beispiel</span> =
  
 
<br/><source lang="bascomavr">
 
<br/><source lang="bascomavr">
Line 106: Line 106:
 
   
 
   
 
$regfile = "m48def.dat" ' specify the used micro
 
$regfile = "m48def.dat" ' specify the used micro
$crystal = 4000000 ' used crystal frequency
+
$crystal = 4000000 ' Taktfrequenz
$baud = 19200 ' use baud rate
+
$baud = 19200 ' Baudrate
 
$hwstack = 32 ' default use 32 for the hardware stack
 
$hwstack = 32 ' default use 32 for the hardware stack
 
$swstack = 10 ' default use 10 for the SW stack
 
$swstack = 10 ' default use 10 for the SW stack
 
$framesize = 40 ' default use 40 for the frame space
 
$framesize = 40 ' default use 40 for the frame space
 
   
 
   
Config Debounce = 30 'when the config statement is not used a default of 25mS will be used but we override to use 30 mS
+
Config Debounce = 30 'Wenn der CONFIG-Befehl nicht benutzt wird dann wird der Standardwert 25ms benutzt aber wir überschreiben hier den Standardwert mit 30ms.
 
   
 
   
 
   
 
   
'Debounce Pind.0 , 1 , Pr 'try this for branching when high(1)
+
'Debounce Pind.0 , 1 , Pr 'Sprung wenn High (1)
 
Debounce Pind.0 , 0 , Pr , Sub
 
Debounce Pind.0 , 0 , Pr , Sub
 
Debounce Pind.0 , 0 , Pr , Sub
 
Debounce Pind.0 , 0 , Pr , Sub
' ^----- label to branch to
+
'                     ^----- Sprungmarke
' ^---------- Branch when P1.0 goes low(0)
+
'                 ^---------- Springen wenn P1.0 auf low (0) geht
' ^---------------- Examine P1.0
+
'         ^---------------- P1.0 untersuchen
 
   
 
   
'When Pind.0 goes low jump to subroutine Pr
+
'Wennn Pind.0 auf low geht dann zum Unterprogramm Pr springen
'Pind.0 must go high again before it jumps again
+
'Pind.0 muss wieder auf High gehen bevor der Sprung wieder stattfindet
'to the label Pr when Pind.0 is low
+
 
   
 
   
Debounce Pind.0 , 1 , Pr 'no branch
+
Debounce Pind.0 , 1 , Pr 'Sprung nicht zu Unterprogramm
Debounce Pind.0 , 1 , Pr 'will result in a return without gosub
+
Debounce Pind.0 , 1 , Pr 'Ergibt return ohne gosub
 
End
 
End
 
   
 
   

Revision as of 01:23, 5 March 2013

Contents

Funktion

Entprellen eines Portpins, an den ein Taster angeschlossen ist.

 

 

Syntax

DEBOUNCE Px.y , state , label [ , SUB]

 

 

Anmerkungen

Px.y

Portpin wie zum Beispiel PINB.0

state

0 für Sprung wenn der Portpin PINx.y low ist , 1 für Sprung wenn der Portpin PINx.y High ist.

label

Sprungmarke zu der gesprungen werden soll wenn der angegebene Zustand erkannt wird.

SUB

Sprungmarke ist Unterprogramm.

 

Wenn optional SUB angegeben wird dann wird ein GOSUB zu der Sprungmarke statt eines GOTO ausgeführt.

 

Der DEBOUNCE-Befehl prüft den Zustand des angegebenen Pins. Wenn die Bedingung (0 bzw. 1) erfüllt ist dann wird 25ms gewartet und dann wird die Bedingung noch einmal geprüft. Dadurch wird das Prellen abgewartet.

 

Wenn die Bedingung immer noch erfüllt ist dann erfolgt ein Sprung zur angegebenen Sprungmarke.

 

Wenn die Bedingung nicht wahr ist oder der Logik-Level am Pin nicht dem angegebenen Level entspricht dan wird die nächste Zeile ausgeführt.

 

Wenn DEBOUNCE wieder ausgeführt wird dann muss der Zustand des Tasters zwischendurch im Grundzustand gewesen sein bevor ein Sprung erfolgen kann. Wenn man zum Beispiel auf Low wartet und der Pin auf Low geht dann muss der Pin einmal wieder High sein bevor ein neuer Low-Level einen Sprung auslösen kann.

 

Jeder DEBOUNCE-Befehl der einen anderen Port benutzt verbraucht 1 Bit des internen Speichers um den Zustand zu speichern. Da die Bits im SRAM gespeichert werden bedeutet das, dass auch bei Benutzung nur eines Pins/Bits ein Byte Speicher verbraucht wird um das Bit zu speichern.

 

DEBOUNCE wartet nicht bis der Eingabewert die angegebene Bedingung erfüllt. Man kann BITWAIT benutzen wenn man warten möchte bis ein Bit einen bestimmten Wert hat.

 

DEBOUNCE hält das Programm also nicht an während ein BITWAIT das Programm anhält bis der Wert erreicht ist. Man kann BITWAIT und DEBOUNCE kombinieren indem man ein BITWAIT vor ein DEBOUNCE schreibt.

 

 

Siehe auch

CONFIG DEBOUNCE , BITWAIT

 

 

Beispiel


'-----------------------------------------------------------------------------------------
'name : deboun.bas
'copyright : (c) 1995-2005, MCS Electronics
'purpose : demonstrates DEBOUNCE
'micro : Mega48
'suited for demo : yes
'commercial addon needed : no
'-----------------------------------------------------------------------------------------
 
$regfile = "m48def.dat" ' specify the used micro
$crystal = 4000000 ' Taktfrequenz
$baud = 19200 ' Baudrate
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40 ' default use 40 for the frame space
 
Config Debounce = 30 'Wenn der CONFIG-Befehl nicht benutzt wird dann wird der Standardwert 25ms benutzt aber wir überschreiben hier den Standardwert mit 30ms. 
 
 
'Debounce Pind.0 , 1 , Pr 'Sprung wenn High (1)
Debounce Pind.0 , 0 , Pr , Sub
Debounce Pind.0 , 0 , Pr , Sub
'                      ^----- Sprungmarke
'                  ^---------- Springen wenn P1.0 auf low (0) geht
'          ^----------------  P1.0 untersuchen
 
'Wennn Pind.0 auf low geht dann zum Unterprogramm Pr springen
'Pind.0 muss wieder auf High gehen bevor der Sprung wieder stattfindet
 
Debounce Pind.0 , 1 , Pr 'Sprung nicht zu Unterprogramm
Debounce Pind.0 , 1 , Pr 'Ergibt return ohne gosub
End
 
Pr:
Print "PIND.0 was/is low"
Return

Languages   English Deutsch  
Personal tools
Namespaces
Variants
Actions
Navigation
In other languages
Language