So ich habe jetzt schonmal den Code für den RFM02 in Bascom abgeändert, Funktioniert scheinbar aber nicht einwandfrei. Hab mittels einer LED getestet wie weit er kommt. Er geht bis zum anfang der Rf12_init funktion und dann wars das. Und ich weiß nicht warum. Hier der 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
' ########################################################################


$regfile = "m88def.dat"
$hwstack = 32                                               ' default use 32 for the hardware stack
$swstack = 10                                               'default use 10 for the SW stack
$framesize = 40

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

$crystal = 8000000
$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)

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.2                                        ' SS-Pin
Config Spi_cs = Output
Spi_sdo Alias Pinb.3                                        ' MOSI-PIN
Set Spi_cs
Config Portc.4 = Output
Led Alias Portc. 4
Led = 1
'init the spi pins
Spiinit

' was so gebraucht wird
Dim Count As Byte
Dim Temp As Word
Dim Rfdata(32) As Byte
Dim Text As String * Maxchar At Rfdata Overlay

Print "Init"
Waitms 1000
Call Rf12_init                                              ' ein paar Register setzen (z.B. CLK auf 10MHz)


' ########################################################################
' ###### Hauptproggi
' ########################################################################
Waitms 1000
Led = 0
Waitms 1000
Text = "Dies ist eia 433MHz Test !!!!!{013}{010}"

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


' Hier ist die Senderoutine
  Print "Sende"
  Call Rf12_txdata(maxchar)

  Wait 1
  Toggle Portc.4

Loop


End                                                         'end program


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

Sub Rf12_init:
   Toggle Portc.4
  Waitms 1000
  Temp = Rf12_trans(&Hcc00)
  Toggle Portc.4
  Waitms 400
  Temp = Rf12_trans(&H8b61)
  Toggle Portc.4
  Temp = Rf12_trans(&Ha640)
  Toggle Portc.4
  Temp = Rf12_trans(&Hd040)
  Toggle Portc.4
  Temp = Rf12_trans(&Hc823)
 Toggle Portc.4
  Temp = Rf12_trans(&Hc220)
 Toggle Portc.4
  Temp = Rf12_trans(&Hc039)
 Toggle Portc.4
End Sub



Sub Rf12_txdata(byval Maxchar As Byte)
  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 Maxchar
    Rf12_ready
    Temp = &HB800 + Rfdata(count)
    Temp = Rf12_trans(temp)
  Next Count
  Rf12_ready
  Temp = Rf12_trans(&H8208)
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
  Wend
End Sub