Hi,
hier ist mal der Code

Code:
'Elektor RFM12

'$regfile = "M8def.dat"
'$regfile = "M168def.dat"                                    'es handelt sich um einen ATmega168
$regfile = "M168Pdef.dat"                                   'es handelt sich um einen ATmega168P

'$crystal = 3686400                                          'der eingebauter RC-Oszillator läuft mit 3,6864 Mhz
$crystal = 16000000
'$crystal = 1000000
$hwstack = 40                                               'im Speicher werden für den Hardware-Stack 100 Byte reserviert
$swstack = 10                                               'im Speicher werden für den Software-Stack 100 Byte reserviert
$framesize = 40                                             'im Speicher werden für den Frame 100 Byte reserviert
$baud = 9600


'Taster
Config Pind.2 = Input
Pind.2 = 1                                                  'pullup
Taster1 Alias Pind.2

'LED
Led_grün Alias Portc.5
Config Led_grün = Output
Led_rot Alias Portc.4
Config Led_rot = Output


Nsel Alias Portd.7
Sdi Alias Portb.3
Sdo Alias Pinb.4
Sck Alias Portb.5

Config Sdo = Input
Config Nsel = Output
Config Sdi = Output
Config Sck = Output


Dim D As Word
Dim Data_in(10) As Byte
Dim Data_out(10) As Byte
Dim N As Byte
Dim Timeout As Word
Dim T As Word
Dim Tt As Word
Dim Freq As Single

Declare Sub Send_rfm12
Declare Sub Receive_rfm12
Declare Sub Freq_rfm12
Declare Sub Wait_rfm12
Declare Function Spi16(byval Dout As Word) As Word

'Config Portc = Output
'Porta = &HFF

'Init
  Nsel = 1
  Sck = 0
  D = Spi16(&H80d7)                                         ' El , Ef , 11.5pf, 433 MHz band
  'D = Spi16(&H80e7)                                         ' El , Ef , 11.5pf, 868 MHz band
  D = Spi16(&H82d9)                                         '!er , !ebb , Et , Es , Ex , !eb , !ew , Dc
  D = Spi16(&Ha67c)                                         ' 434,15 MHz / 868,3 MHz
  D = Spi16(&Hc647)                                         ' 4.8kbps
  D = Spi16(&H94a4)                                         ' Vdi , Fast , 134 kHz , 0db , -79dbm
  D = Spi16(&Hc2ac)                                         ' Al , !ml , Dig , Dqd4
  D = Spi16(&Hca81)                                         ' Fifo8 , Sync , !ff , Dr
  D = Spi16(&Hc483)                                         ' @pwr , No Rstric , !st , !fi , Oe , En
  D = Spi16(&H9850)                                         ' 90 kHz , power - 0 dB
  D = Spi16(&He000)                                         '
  D = Spi16(&Hc800)                                         '
  D = Spi16(&Hc000)                                         ' 1 MHz , 2.2V

  Freq = 434.150
        '868.300
  Freq_rfm12

'start transmitter, no data
'Goto Test1:

'transmit  data
'Goto Test2:

'transmit key data
'Goto Test3:

'start receiver, all data
'Goto Test4:

'start receiver, matched data
'Goto Test5:

Print "RFM12 Test"

 Do

    For N = 1 To 10
      Data_out(n) = N
    Next N


    Send_rfm12
    Waitms 500
    For N = 1 To 10
       Data_in(n) = 0
    Next N

    Timeout = 400 + Rnd(1000)
    Receive_rfm12
    For N = 1 To 10
       Print Data_in(n);
       Print " ";
    Next N
    Waitms 700


 Toggle Led_grün

 Loop


Sub Freq_rfm12
  If Freq < 800 Then Freq = Freq * 2
  Freq = Freq - 860
  D = Freq / 0.0050
  If D < 96 Then D = 96
  If D > 3903 Then D = 3903
  D = D + &HA000
  D = Spi16(d)
End Sub


Sub Send_rfm12
  D = Spi16(&H8238)
  Wait_rfm12
  D = Spi16(&Hb8aa)
  Wait_rfm12
  D = Spi16(&Hb8aa)
  Wait_rfm12
  D = Spi16(&Hb8aa)
  Wait_rfm12
  D = Spi16(&Hb82d)
  Wait_rfm12
  D = Spi16(&Hb8d4)
  For N = 1 To 10
    Wait_rfm12
    D = &HB800 + Data_out(n)
    D = Spi16(d)
  Next N
  Wait_rfm12
  D = Spi16(&Hb8aa)
  Wait_rfm12
  D = Spi16(&Hb8aa)
  Wait_rfm12
  D = Spi16(&H8208)
End Sub

Sub Wait_rfm12
  Nsel = 0

  Do
  Loop Until Sdo = 1



End Sub


Sub Receive_rfm12
  Tt = Timeout * 10
  D = Spi16(&H82c8)
  D = Spi16(&Hca83)
  For N = 1 To 10
    Nsel = 0
    T = 0
    Do
      T = T + 1
      Waitus 100
      If T > Tt Then Goto Nosignal
    Loop Until Sdo = 1
    D = Spi16(&Hb000)
    Data_in(n) = D
  Next N
Nosignal:
  D = Spi16(&H8208)
End Sub


Function Spi16(byval Dout As Word) As Word
Local Nspi As Integer
Local Dspi As Integer
Local Dsdo As Word
  Nsel = 0
  Dsdo = 0
  For Nspi = 1 To 16
    Dspi = Dout And &H8000
    If Dspi = 0 Then
       Sdi = 0
    Else
       Sdi = 1
    End If
    Dout = Dout * 2
    Dsdo = Dsdo * 2
    Dsdo = Dsdo + Sdo
    Sck = 1
    Waitus 5
    Sck = 0
  Next Nspi
  Nsel = 1
  Spi16 = Dsdo
End Function



'transceiver tests

'start transmitter, no data
Test1:
  D = Spi16(&H8238)
  Do
  Loop


  'transmit data
Test2:
  D = Spi16(&H8238)
  Do
    Wait_rfm12
    D = Spi16(&Hb8aa)
  Loop


  'transmit key data
Test3:
  D = Spi16(&H8238)
  Do
    Wait_rfm12
    D = Spi16(&Hb82d)
    Wait_rfm12
    D = Spi16(&Hb8d4)
  Loop


'start receiver, all data
Test4:
  D = Spi16(&H82c8)
  D = Spi16(&Hca87)
  For N = 1 To 100
    Wait_rfm12
    D = Spi16(&Hb000)
    Data_in(n) = D
    Print Chr(d);
  Next N
  Do
  Loop


'start receiver, matched data
Test5:
    D = Spi16(&H82c8)
    D = Spi16(&Hca83)
    For N = 1 To 100
      Wait_rfm12
      D = Spi16(&Hb000)
      Data_in(n) = D
      Print Chr(d);
    Next N
  Do
  Loop