TOGGLE/de

Aus MCS Wiki AVR
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Funktion

Invertiert den Zustand eines Output-Pins oder einer Bit-Variablen. (1 wird zu 0 und 0 wird zu 1.) Bei Anwendung auf eine numerische Variable wird jedes einzelne Bit der Variablen invertiert.

 

 

Syntax

TOGGLE pin

TOGGLE var

 

 

Anmerkungen

pin

Ein beliebiger Port-Pin wie z.B. PORTB.0 oder eine Bit-Variable. Der Port-Pin muss als Output konfiguriert sein.

var

Eine numerische Variable wie Byte, Word, Integer oder Long. Jedes einzelne Bit wird invertiert.

 

Mit TOGGLE können Sie einfach den Zustand eines Ausgangs-Pins invertieren.

Wenn an einem Pin beispielsweise ein Relais angeschlossen ist und das Relais ist AUS dann schaltet ein TOGGLE Befehl das Relais AN. Ein weiterer TOGGLE schaltet das Relais wieder AUS.

 

Wenn TOGGLE mit einer Variablen des Typs Byte, Word, Integer oder Long verwendet wird dann wird jedes Bit der Variablen invertiert. Das hat den gleichen Effekt als würde man die XOR Operation mit $FF, $FFFF beziehungsweise $FFFFFFFF benutzen.

Beispiel:

Toggle Var_byte hat den selben Effekt wie

Var_byte = Var_byte XOR &HFF

 

Neuere AVR-Mikrocontroller haben eine erweiterte Port-Architektur welche es erlaubt, einen Port-Pin zu toggeln indem eine 1 in das PIN-Register geschrieben wird. Die DAT-Dateien haben in der [DEVICE] Sektion einen Eintrag NEWPORT.

Wenn der Wert 1 ist dann wird das PIN-Register gesetzt um den Port-Pin toggeln. Wenn der NEWPORT-Wert 0 ist dann wird wird XOR zum Toggeln des Port-Pins benutzt.

 

TOGGLE kann auch für numerische Variablen benutzt werden. Es wird dann jedes Bit der Variablen invertiert. Das hat denselben Effekt wie NOT.

var = NOT var ' Jedes Bit invertieren

 

 

Siehe auch

CONFIG PORT

 

 

 

Assembler

NONE

 

 

Beispiel


'Bascom Help, Nov 16, 2008
'ToggleNov15_2008.bas
'Program example for use in the Help-files for
' TOGGLE
 
'Program has been compiled and tested using Bascom 1.11.9.2.003
'Nard Awater, November 16, 2008
 
 
$baud = 19200
$crystal = 16000000
$regfile = "m32def.dat"
 
$hwstack = 40
$swstack = 20
$framesize = 20
 
Dim B As Byte , W As Word , I As Integer , L As Long
Led Alias Portb.0 'the anode of the LED connected to PortB.0, cathode with resistor (470 Ohm) to ground
Config Pinb.0 = Output
 
B = 0
Reset Led
'Toggle the led
Do
 Print "Led is off "
 Waitms 500
 Toggle Led
 Print "Led is on "
 Waitms 500
 Toggle Led
 Incr B
Loop Until B = 5
 
'Toggle a bit in a variable
B = &B11110000 'assign a new value: 240 in decimal
Toggle B.0
Print "B in decimal " ; B ' print it: result = 241 ; bit0 is set
Print Bin(b) ' print it: result = 11110001
Toggle B.0
Print "B in decimal " ; B ' print it: result = 240 ; bit0 is reset
Print Bin(b) ' print it: result = 11110000
 
 
W = &H000F '15 in decimal
I = &H00FF '255 in decimal
L = &H00CC00DD '13369565 in decimal
Toggle W
Print "toggled W= " ; W ' print it: result = 65520
Print Hex(w) ' print it: result = &HFFF0
 
Toggle I
Print "toggled I= " ; I ' print it: result = -256 ; two's complement !
Print Hex(i) ' print it: result = &HFF00
 
Toggle L
Print "toggled L= " ; L ' print it: result = -13369566 ; two's complement !
Print Hex(l) ' print it: result = &HFF33FF22
 
End

Languages   English Deutsch  
Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
In anderen Sprachen
Sprache