CONFIG PORT/de

From MCS Wiki AVR
< CONFIG PORT(Difference between revisions)
Jump to: navigation, search
(See Also)
(Example)
 
Line 81: Line 81:
 
<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 93: Line 93:
 
'-----------------------------------------------------------------------------------------
 
'-----------------------------------------------------------------------------------------
 
   
 
   
$regfile = "m48def.dat" ' specify the used micro
+
$regfile = "m48def.dat" ' Mikrocontroller
$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
Line 102: Line 102:
 
Dim A As Byte , Count As Byte
 
Dim A As Byte , Count As Byte
 
   
 
   
'configure PORT D for input mode
+
' PORT D als Eingang konfigurieren
 
Config Portd = Input
 
Config Portd = Input
 
   
 
   
'reading the PORT, will read the latch, that is the value
+
'Wenn man PORT liest dann liest man nur den Zustand den man in Port geschrieben hat.
'you have written to the PORT.
+
''Wenn man den logischen Zustand lesen möchte, der am Pin anliegr dann muss man das PIN-Register lesen!!!
'This is not the same as reading the logical values on the pins!
+
'PIN nicht PORT!!
'When you want to know the logical state of the attached hardware,
+
'you MUST use the PIN register.
+
 
A = Pind
 
A = Pind
 
   
 
   
'a port or SFR can be treated as a byte
+
'Ein Port oder SFR kann wie ein Byte behandelt werden.
 
A = A And Portd
 
A = A And Portd
 
   
 
   
Print A 'print it
+
Print A 'A ausgeben
 
   
 
   
Bitwait Pind.7 , Reset 'wait until bit is low
+
Bitwait Pind.7 , Reset 'WArten bis das Bit Low ist.
 
   
 
   
 
   
 
   
Line 123: Line 121:
 
Config Portb = Output
 
Config Portb = Output
 
   
 
   
'assign value
+
'Mit Wertzuwesung:
Portb = 10 'set port B to 10
+
Portb = 10 'setzt Port B auf10
 
Portb = Portb And 2
 
Portb = Portb And 2
 
   
 
   
Set Portb.0 'set bit 0 of port B to 1
+
Set Portb.0 'setzt Bit 0 des Port B auf 1
 
   
 
   
 
Incr Portb
 
Incr Portb
 
   
 
   
'Now a light show on the STK200
+
'Light Show mit dem STK200
 
Count = 0
 
Count = 0
 
Do
 
Do
Line 137: Line 135:
 
Portb = 1
 
Portb = 1
 
For A = 1 To 8
 
For A = 1 To 8
  Rotate Portb , Left 'rotate bits left
+
  Rotate Portb , Left 'Bits nach links rotieren
 
  Wait 1
 
  Wait 1
 
Next
 
Next
'the following 2 lines do the same as the previous loop
+
'Die folgenden 2 Zeilen machen das Gleich wie die Schleife oben.
'but there is no delay
+
'aber es gibt keine Verzögerung.
 
' Portb = 1
 
' Portb = 1
 
' Rotate Portb , Left , 8
 
' Rotate Portb , Left , 8
Line 147: Line 145:
 
Print "Ready"
 
Print "Ready"
 
   
 
   
'Again, note that the AVR port pins have a data direction register
+
'Beachten Sie dass ein AVR-Port ein Data Direction Register hat.
'when you want to use a pin as an input it must be set low first
+
'Wenn man einen Pin für Eingabe benutzen möchte dann muss man das Data Direction Register vorher auf 0 setzen.
'you can do this by writing zeros to the DDRx:
+
'Man kann das machen indem man das DDRx-Register mit Nullen beschreibt:
'DDRB =&B11110000 'this will set portb1.0,portb.1,portb.2 and portb.3 to use as inputs.
+
'DDRB =&B11110000 'setzt portb1.0, portb.1, portb.2 und portb.3 für die Verwendung als EINGABE-Pin.
 
   
 
   
'So : when you want to use a pin as an input set it low first in the DDRx!
+
'Also : Wenn Sie einen Pin für Eingabe benutzen wollen dann setzen Sie es im DDRx-Register vorher auf Null!
' and read with PINx
+
' und lesen Sie mit PINx ein
' and when you want to use the pin as output, write a 1 first
+
' und wenn Sie einen Pin für Ausgabe benutzen möchten dann schreiben Sie eine 1 in das DDRx-Register
' and write the value to PORTx
+
' und schreiben Sie den Wert in PORTx
 
End
 
End
 
</source><br/>{{Languages}}
 
</source><br/>{{Languages}}
  
 
[[Category:BASCOM Language Reference/de]]
 
[[Category:BASCOM Language Reference/de]]

Latest revision as of 23:35, 8 March 2013

Contents

Funktion

Setzt den Port oder einen Portpin auf die gewünschte Datenrichtung.

 

 

Syntax

CONFIG PORTx = state

CONFIG PINx.y = state

 

 

Anmerkungen

state

Eine numerische Konstante, die INPUT oder OUTPUT sein kann.

 

INPUT setzt das Data Direction Register für Portx auf Eingabe (=Input).

OUTPUT setzt das Data Direction Register für Portx auf Ausgabe (=Output).

Man kann auch eine Zahl für state benutzen. &B00001111 setzt das Upper Nibble (Bit 4 bis 7) auf Eingabe und das Lower Nibble (Bits 0 bis 3) auf Ausgabe.

 

Man kann auch einen einzelnen Portpin mit dem CONFIG PIN = state Befehl setzen.

Auch dann kann man INPUT, OUTPUT oder eine Zahl für state benutzen. Als Zahl geht nur 0 (für Eingang) oder 1 (für Ausgang).

x

Gültiger Port-Buchstabe wie zum Beispiel A, B, C usw.

Beispiel : CONFIG PORTB = Output

y

Gültige Pin-Nummer im Bereich 0 bis 7. Beispiel : CONFIG PINB.0=INPUT

 

Die beste Methode, die Datenrichtung für mehr als einen Pin zu setzen ist, den CONFIG PORT Befehl zu bnutzen und nicht mehrere Zeilen mit CONFIG PIN Befehlen.  

Man kann keine Variablen für Port-Buchstaben oder Pin-Nummer verwenden. Wenn Sie die Datenrichtung dynamisch setzen wollen dann kann man   SET PORTB.somepin schreiben wobei somepin eine Konstante oder eine Variable sein kann.

Wenn der Port auch dynamisch sein soll dann kann man OUT mit der entsprechenden Adresse benutzen.  

 

Siehe auch

AVR Internal hardware ports

 

 

Beispiel


'-----------------------------------------------------------------------------------------
'name : port.bas
'copyright : (c) 1995-2005, MCS Electronics
'purpose : demo: PortB and PortD
'micro : Mega48
'suited for demo : yes
'commercial addon needed : no
'-----------------------------------------------------------------------------------------
 
$regfile = "m48def.dat" ' Mikrocontroller
$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
 
Dim A As Byte , Count As Byte
 
' PORT D als Eingang konfigurieren
Config Portd = Input
 
'Wenn man PORT liest dann liest man nur den Zustand den man in Port geschrieben hat.
''Wenn man den logischen Zustand lesen möchte, der am Pin anliegr dann muss man das PIN-Register lesen!!!
'PIN nicht PORT!!
A = Pind
 
'Ein Port oder SFR kann wie ein Byte behandelt werden.
A = A And Portd
 
Print A 'A ausgeben
 
Bitwait Pind.7 , Reset 'WArten bis das Bit Low ist.
 
 
'We will use port B for output
Config Portb = Output
 
'Mit Wertzuwesung:
Portb = 10 'setzt Port B auf10
Portb = Portb And 2
 
Set Portb.0 'setzt Bit 0 des Port B auf 1
 
Incr Portb
 
'Light Show mit dem STK200
Count = 0
Do
Incr Count
Portb = 1
For A = 1 To 8
 Rotate Portb , Left 'Bits nach links rotieren
 Wait 1
Next
'Die folgenden 2 Zeilen machen das Gleich wie die Schleife oben.
'aber es gibt keine Verzögerung.
' Portb = 1
' Rotate Portb , Left , 8
Loop Until Count = 10
Print "Ready"
 
'Beachten Sie dass ein AVR-Port ein Data Direction Register hat.
'Wenn man einen Pin für Eingabe benutzen möchte dann muss man das Data Direction Register vorher auf 0 setzen.
'Man kann das machen indem man das DDRx-Register mit Nullen beschreibt:
'DDRB =&B11110000 'setzt portb1.0, portb.1, portb.2 und portb.3 für die Verwendung als EINGABE-Pin.
 
'Also : Wenn Sie einen Pin für Eingabe benutzen wollen dann setzen Sie es im DDRx-Register vorher auf Null!
' und lesen Sie mit PINx ein
' und wenn Sie einen Pin für Ausgabe benutzen möchten dann schreiben Sie eine 1 in das DDRx-Register
' und schreiben Sie den Wert in PORTx
End

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