Hallo Besserwessi,

danke für deine Antwort!
Hier ist mein aktueller Code:
Code:
' ##########################################################################################################################################
' ### generated. Take care that the chip supports all fuse bytes                                                                         ###
' ### RF12-Test in Bascom                                                                                                                ###
' ### Basiert auf Code von Benedikt K.                                                                                                   ###
' ### Joachim Fossie Bär Reiter 04/2007                                                                                                  ###
' ### weiterentwickelt von:                                                                                                              ###
' ### Wigbert Picht 18.06.                                                                                                               ###
' ### Stringkennung 24.08                                                                                                                ###
' ### Hardware siehe Pollinboard                                                                                                         ###
' ##########################################################################################################################################
' ###                                                                                                                                    ###
' ###              RFM12 Master                                                                                                          ###
' ###            ---------------                                                                                                         ###
' ##########################################################################################################################################
$regfile = "m32def.dat"
$hwstack = 100                                              ' default use 32 for the hardware stack
$swstack = 100                                              'default use 10 for the SW stack
$framesize = 100

'$PROG &HFF,&HFF,&HD9,&H00' generated. Take care that the chip supports all fuse bytes.

$crystal = 16000000                                         'Hier Dein Quarz
$baud = 19200
Baud = 19200


Declare Sub Rf12_init
Declare Function Rf12_trans(byval Wert As Word) As Word
Declare Sub Rf12_setfreq(byval Freq As Single)
Declare Sub Rf12_setbandwith(byval Bandwith As Byte , Byval Gain As Byte , Byval Drssi As Byte)
Declare Sub Rf12_setbaud(byval Rfbaud As Long)
Declare Sub Rf12_setpower(byval Outpower As Byte , Byval Fskmod As Byte)
Declare Sub Rf12_ready
Declare Sub Rf12_txdata(byval Maxchar As Byte)
Declare Sub Rf12_rxdata(byval Maxchar As Byte)
Declare Sub Sendetext

Const Rf12freq = 433.92
Const Rf12baud = 19200
Const Maxchar = 32

'config the SPI in master mode.The clock must be a quarter of the slave cpu
' Hier ggf. den SoftSPI reinmachen
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 128 , Noss = 1

' werden benötigt für rf12_ready
Spi_cs Alias Portb.4
Config Spi_cs = Output
Spi_sdo Alias Pinb.6
Set Spi_cs

'init the spi pins
Spiinit

' was so gebraucht wird
' Kennung
Dim Count As Byte
Dim Temp As Word
Dim Rfdata(32) As Byte
Dim Text As String * Maxchar At Rfdata Overlay
'Dim Text As String * Lean At Rfdata Overlay                 'Text mit variabler Länge
Dim Laenge As Byte
Dim Lean As Byte
Dim La As Byte
Dim L As Byte
Dim C As Byte
Dim Empf_wait As Byte
Dim Rufzeichen As String * 32
Dim Sendedata As String * 32
Dim Ruf As String * 32



Dim Flag_int0_input As Bit

Flag_int0_input = 0

Config Portc.7 = Output
Portc.7 = 1
Config Portc.0 = Output
Portc.0 = 1



Print "Init"
Call Rf12_init                                              ' ein paar Register setzen (z.B. CLK auf 10MHz)
Print "Set Frequenz"
Call Rf12_setfreq(rf12freq)                                 '  Sende/Empfangsfrequenz auf 433,92MHz einstellen
Print "Set Bandwith"
Call Rf12_setbandwith(4 , 1 , 4)                            '  200kHz Bandbreite, -6dB Verstärkung, DRSSI threshold: -79dBm
Print "Set Baudrate"
Call Rf12_setbaud(rf12baud)                                 '  19200 baud
Print "Set Power"                                           '  1mW Ausgangangsleistung, 120kHz Frequenzshift
Call Rf12_setpower(0 , 6)

Config Pind.2 = Input
Portd.2 = 0

Config Int0 = Rising
Enable Int0
On Int0 Isr_von_int0
'Disable Int0

Enable Interrupts
' ########################################################################
' ###### Hauptproggi  ####################################################
' ########################################################################

'  Rufzeichen

  Rufzeichen = "Christoph"                                  'mein Rufzeichen oder sonst ein String

  'mit Timer
' #########################################################################

  Sendetext                                                 'Sub Stringverarbeitung zum Datenpaket
                                                            'später in Schleife
' #########################################################################


'Text = "Dies ist ein 433MHz Test !!!!!{013}{010}"

' Je nachdem ob Sender oder Empfänger die entsprechenden Zeilen aktivieren
Do


If Flag_int0_input = 1 Then
Disable Int0
Flag_int0_input = 0
Call Rf12_rxdata(maxchar)
If Text = "Hallo" Then
Text = "return"
Call Rf12_txdata(maxchar)
Text = ""
Else
Text = "wrong"
Call Rf12_txdata(maxchar)
Text = ""
End If
Enable Int0
End If


Loop


End                                                         'end program


' ########################################################################
' ###### Unterroutinen
' ########################################################################

Sub Rf12_init:
  Waitms 150
  Temp = Rf12_trans(&Hc0e0)
  Temp = Rf12_trans(&H80d7)
  Temp = Rf12_trans(&Hc2ab)
  Temp = Rf12_trans(&Hca81)
  Temp = Rf12_trans(&He000)
  Temp = Rf12_trans(&Hc800)
  Temp = Rf12_trans(&Hc4f7)
End Sub


Sub Rf12_setfreq(byval Freq As Single)

  Freq = Freq - 430.00
  Temp = Freq / 0.0025
  If Temp < 96 Then
    Temp = 96
  Elseif Temp > 3903 Then
    Temp = 3903
  End If
  Temp = Temp + &HA000
  Temp = Rf12_trans(temp)
End Sub


Sub Rf12_setbandwith(byval Bandwith As Byte , Byval Gain As Byte , Byval Drssi As Byte)
  Drssi = Drssi And 7
  Gain = Gain And 3
  Temp = Bandwith And 7
  Shift Temp , Left , 2
  Temp = Temp + Gain
  Shift Temp , Left , 3
  Temp = Temp + Drssi
  Temp = Temp + &H9400
  Temp = Rf12_trans(temp)
End Sub


Sub Rf12_setbaud(byval Rfbaud As Long )
  Local Ltemp As Long

  If Rfbaud < 663 Then Exit Sub

  If Rfbaud < 5400 Then
    Temp = 43104 / Rfbaud
    Temp = Temp + &HC680
  Else
    Ltemp = 344828 / Rfbaud
    Temp = Ltemp
    Temp = Temp + &HC600
  End If
  Decr Temp
  Temp = Rf12_trans(temp)
End Sub


Sub Rf12_setpower(byval Outpower As Byte , Byval Fskmod As Byte)
  Outpower = Outpower And 7
  Temp = Fskmod And 15
  Shift Temp , Left , 4
  Temp = Temp + Outpower
  Temp = Temp + &H9800
  Temp = Rf12_trans(temp)
End Sub
'##########################
Sub Sendetext                                               'Aufbereitung des Text="Teststring"
 Sendedata = Rufzeichen                                     'welcher String gebraucht wird
 Laenge = Len(sendedata)
 Lean = Laenge + 3
 La = Laenge + 52                                           '50 Bei Empfänger subtrahieren-um bei Print Steuerzeichen zu umgehen
 Ruf = Chr(la) + Sendedata
 C = Checksum(ruf)
 Text = Ruf + Chr(c)
 Text = Text + " "
'Print Text                                                  'Testprint
'Print L ; Sendedata ; C;                                    'Testprint
End Sub
'##########################
Sub Rf12_txdata(byval Maxchar As Byte)
  Disable Interrupts
  Temp = Rf12_trans(&H8238)
  Rf12_ready
  Temp = Rf12_trans(&Hb8aa)
  Rf12_ready
  Temp = Rf12_trans(&Hb8aa)
  Rf12_ready
  Temp = Rf12_trans(&Hb8aa)
  Rf12_ready
  Temp = Rf12_trans(&Hb82d)
  Rf12_ready
  Temp = Rf12_trans(&Hb8d4)
  Rf12_ready
  'For Count = 1 To Lean                                     'Veriable Länge duch Stringberechnung
  For Count = 1 To Maxchar
    Rf12_ready                                              'hier kann das gesendete Datenpaket eingesehen werden
    'Print Rfdata(count) ; "-";
    Temp = &HB800 + Rfdata(count)
    Temp = Rf12_trans(temp)
  Next Count
  Rf12_ready
  Temp = Rf12_trans(&H8208)
  Enable Interrupts
End Sub


Sub Rf12_rxdata(byval Maxchar As Byte)
  Disable Interrupts
  Temp = Rf12_trans(&H82c8)
  Temp = Rf12_trans(&Hca81)
  Temp = Rf12_trans(&Hca83)
  For Count = 1 To Maxchar
    Rf12_ready
    Temp = Rf12_trans(&Hb000)
    Rfdata(count) = Temp
  Next Count
  Temp = Rf12_trans(&H8208)
  Enable Interrupts
End Sub



Function Rf12_trans(byval Wert As Word) As Word
  Local Lowbyte As Byte
  Local Highbyte As Byte

  Lowbyte = Wert And 255
  Shift Wert , Right , 8
  Reset Spi_cs

  Highbyte = Spimove(wert)
  Lowbyte = Spimove(lowbyte)
  Set Spi_cs

  Temp = Highbyte * 256
  Temp = Temp + Lowbyte
  Rf12_trans = Temp
End Function


Sub Rf12_ready
  Reset Spi_cs
  While Spi_sdo = 0                                         'In der Sim. auf 1 stellen
  Wend
End Sub

'###############################################################################


Isr_von_int0:
Disable Int0
Toggle Portc.7
Flag_int0_input = 1
Waitms 100
Enable Int0
Return
Mir ist aufgefallen, dass sobald die "If Flag_int0_input = 1 then" Abfrage herausgenommen wird aus dem Code, wird die Led getoggelt! Daraus schließe ich, dass die Abfrage die ISR_von_int0 irgendwie blockiert!
ABER WARUM??

Das mit den Waitms xy in der ISR ist übrigens nur dazu da, weil nicht nur immer ein Impuls kommt, sondern so ca. 10 Highs in kurzen Abständen hintereinander! Wenn ich das rausmache, ändert sich überhaupt nichts!

Gruß
Chris