DISABLE/de

From MCS Wiki AVR
< DISABLE(Difference between revisions)
Jump to: navigation, search
(Anmerkungen)
(Example)
 
Line 163: Line 163:
 
<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 175: Line 175:
 
'-----------------------------------------------------------------------------------------
 
'-----------------------------------------------------------------------------------------
 
   
 
   
$regfile = "8535def.dat" ' specify the used micro
+
$regfile = "8535def.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
 
$framesize = 40 ' default use 40 for the frame space
 
$framesize = 40 ' default use 40 for the frame space
 
   
 
   
Const Cmaxchar = 20 'number of characters
+
Const Cmaxchar = 20 'Anzahl Zeichen
 
   
 
   
Dim B As Bit 'a flag for signalling a received character
+
Dim B As Bit 'Ein Flag zum Signalisieren eines empfangenen Zeichens
Dim Bc As Byte 'byte counter
+
Dim Bc As Byte 'Byte Zähler
Dim Buf As String * Cmaxchar 'serial buffer
+
Dim Buf As String * Cmaxchar 'serieller Puffer
 
Dim D As Byte
 
Dim D As Byte
 
   
 
   
 
'Buf = Space(20)
 
'Buf = Space(20)
'unremark line above for the MID() function in the ISR
+
'Entkommentieren Sie die Zeile oben für die MID() Funktion in der ISR
'we need to fill the buffer with spaces otherwise it will contain garbage
+
'Wir müssen den Puffer mit Leerzeichen füllen weil er sonst Unsinn enthält.
 
   
 
   
 
Print "Start"
 
Print "Start"
 
   
 
   
On Urxc Rec_isr 'define serial receive ISR
+
On Urxc Rec_isr 'Definieren der Serial Receive ISR
Enable Urxc 'enable receive isr
+
Enable Urxc 'Freigeben des Receive Interrupts
 
   
 
   
 
   
 
   
 
   
 
   
Enable Interrupts 'enable interrupts to occur
+
Enable Interrupts 'Freigeben ALLER Interrupts
 
   
 
   
 
Do
 
Do
If B = 1 Then 'we received something
+
If B = 1 Then 'Es wurde etwas empfangen
 
  Disable Serial
 
  Disable Serial
  Print Buf 'print buffer
+
  Print Buf 'Puffer ausgeben
  Print Bc 'print character counter
+
  Print Bc 'Zeichenzähler ausgeben
 
   
 
   
 
   
 
   
  'now check for buffer full
+
  'Prüfen ob Puffer voll
  If Bc = Cmaxchar Then 'buffer full
+
  If Bc = Cmaxchar Then 'Puffer voll
  Buf = "" 'clear
+
  Buf = "" 'Löschen
  Bc = 0 'rest character counter
+
  Bc = 0 'Zeichenzähler zurücksetzen
 
  End If
 
  End If
 
   
 
   
  Reset B 'reset receive flag
+
  Reset B 'Receive Flag zurücksetzen
 
  Enable Serial
 
  Enable Serial
 
End If
 
End If
Line 222: Line 222:
 
Rec_isr:
 
Rec_isr:
 
Print "*"
 
Print "*"
If Bc < Cmaxchar Then 'does it fit into the buffer?
+
If Bc < Cmaxchar Then 'Passt es in den Puffer?
  Incr Bc 'increase buffer counter
+
  Incr Bc 'Puffer-Zähler erhöhen
 
   
 
   
 
   
 
   
  If Udr = 13 Then 'return?
+
  If Udr = 13 Then ' Return?
 
  Buf = Buf + Chr(0)
 
  Buf = Buf + Chr(0)
 
  Bc = Cmaxchar
 
  Bc = Cmaxchar
 
  Else
 
  Else
  Buf = Buf + Chr(udr) 'add to buffer
+
  Buf = Buf + Chr(udr) 'Zum Puffer hinzufügen
 
  End If
 
  End If
 
   
 
   
 
   
 
   
 
  ' Mid(buf , Bc , 1) = Udr
 
  ' Mid(buf , Bc , 1) = Udr
  'unremark line above and remark the line with Chr() to place
+
  'Entkommentieren Sie die Zeile oben und setzen Sie die Zeile mit Chr() als Kommentar um das Zeichen
  'the character into a certain position
+
  'an eine bestimmte Position zu plazieren.
 
  'B = 1 'set flag
 
  'B = 1 'set flag
 
End If
 
End If
B = 1 'set flag
+
B = 1 'Flag setzen
 
Return
 
Return
 
</source><br/>{{Languages}}
 
</source><br/>{{Languages}}
  
 
[[Category:BASCOM Language Reference/de]]
 
[[Category:BASCOM Language Reference/de]]

Latest revision as of 01:02, 12 March 2013

Contents

Funktion

Sperrt den angegebenen Interrupt.

 

 

Syntax

DISABLE interrupt [device]

 

 

Anmerkungen

Interrupt

Beschreibung

INT0

Externer Interrupt 0

INT1

Externer Interrupt 1

OVF0,TIMER0, COUNTER0

TIMER0 Überlauf Interrupt

OVF1,TIMER1,

 

COUNTER1

TIMER1 Überlauf Interrupt

CAPTURE1, ICP1

INPUT CAPTURE TIMER1 Interrupt

COMPARE1A,OC1A

TIMER1 OUTPUT COMPARE A Interrupt

COMPARE1B,OC1B

TIMER1 OUTPUT COMPARE B Interrupt

SPI

SPI Interrupt

URXC

Serial RX complete Interrupt

UDRE

Serial data register empty Interrupt

UTXC

Serial TX complete Interrupt

SERIAL

Sperrt URXC, UDRE und UTXC

ACI

Analog comparator Interrupt

ADC

Analog/Digital Converter Interrupt

 

Standardmäßig sind alle Interrupts gesperrt (disabled).

Um ALLE Interrupts zu sperren geben Sie INTERRUPTS an.

 

Um das Freigeben und Sperren einzelner Interrupts zu ermöglichen geben Sie ENABLE INTERRUPTS an.

Das ENABLE INTERRUPTS funktioniert wie ein Hauptschalter. Es muss enabled/gesetzt sein um das Funktionieren einzelner Interrupts zu ermöglichen.

 

Es ist anhängig vom Mikrocontroller welche Interrupts verfügbar sind. Die verfügbaren Interrupts werden automatisch im BASCOM-Editor angezeigt.

 

 

Notice.jpg
 Um JTAG zu sperren kann man DISABLED JTAG schreiben. JTAG ist kein Interrupt sondern ein Device.

 

 

Siehe auch

ENABLE

 

 

Beispiel


'-----------------------------------------------------------------------------------------
'name : serint.bas
'copyright : (c) 1995-2005, MCS Electronics
'purpose : serial interrupt example for AVR
'micro : 90S8535
'suited for demo : yes
'commercial addon needed : no
'-----------------------------------------------------------------------------------------
 
$regfile = "8535def.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
 
Const Cmaxchar = 20 'Anzahl Zeichen
 
Dim B As Bit 'Ein Flag zum Signalisieren eines empfangenen Zeichens
Dim Bc As Byte 'Byte Zähler
Dim Buf As String * Cmaxchar 'serieller Puffer
Dim D As Byte
 
'Buf = Space(20)
'Entkommentieren Sie die Zeile oben für die MID() Funktion in der ISR
'Wir müssen den Puffer mit Leerzeichen füllen weil er sonst Unsinn enthält.
 
Print "Start"
 
On Urxc Rec_isr 'Definieren der Serial Receive ISR
Enable Urxc 'Freigeben des Receive Interrupts
 
 
 
Enable Interrupts 'Freigeben ALLER Interrupts 
 
Do
If B = 1 Then 'Es wurde etwas empfangen
 Disable Serial
 Print Buf 'Puffer ausgeben
 Print Bc 'Zeichenzähler ausgeben
 
 
 'Prüfen ob Puffer voll
 If Bc = Cmaxchar Then 'Puffer voll
 Buf = "" 'Löschen
 Bc = 0 'Zeichenzähler zurücksetzen
 End If
 
 Reset B 'Receive Flag zurücksetzen
 Enable Serial
End If
Loop
 
Rec_isr:
Print "*"
If Bc < Cmaxchar Then 'Passt es in den Puffer?
 Incr Bc 'Puffer-Zähler erhöhen
 
 
 If Udr = 13 Then ' Return?
 Buf = Buf + Chr(0)
 Bc = Cmaxchar
 Else
 Buf = Buf + Chr(udr) 'Zum Puffer hinzufügen
 End If
 
 
 ' Mid(buf , Bc , 1) = Udr
 'Entkommentieren Sie die Zeile oben und setzen Sie die Zeile mit Chr() als Kommentar um das Zeichen
 'an eine bestimmte Position zu plazieren.
 'B = 1 'set flag
End If
B = 1 'Flag setzen
Return

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