majid_valentine
Junior Member level 3
rfm12b
hi all
can any body help me to initial rfm12 module with bascom or codvision please????
hi all
can any body help me to initial rfm12 module with bascom or codvision please????
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
$regfile = "m88def.dat"
$hwstack = 40
$swstack = 40
$framesize = 40
$crystal = 8000000
$baud = 4800
Declare Sub Init_rfm12bp
Declare Sub Spi16(byval Dout As Word)
Declare Sub Send_buffer
Dim Dout As Word
Dim Dspi As Integer
Dim Dsdo As Integer
Dim Freq As Single
Dim Param As Word
Nsel Alias Portb.2
Config Nsel = Output
Sdi Alias Portb.3
Config Sdi = Output
Sdo Alias Pinb.4
Config Sdo = Input
Sck Alias Portb.5
Config Sck = Output
Nres Alias Portb.0
Config Nres = Output
Config Portc = Output
Config Portd.5 = Output
Dim Buffer As String * 10
Dim Shulp As String * 3
Dim Bhulp As Byte
Dim Bhulp2 As Byte
Dim Bhulp3 As Byte
Dim Bhulp4 As Byte
Dim Ihulp As Integer
Dim Whulp As Word
Wait 1
Nres = 1
Gosub Init_rfm12bp
Do
Buffer = "mulac"
Print Buffer
Call Send_buffer
Wait 10
Buffer = "ljudi"
Print Buffer
Call Send_buffer
Wait 10
Loop
Sub Spi16(dout As Word)
Nsel = 0
Dsdo = 0
For Ihulp = 1 To 16
Dspi = Dout And &H8000
If Dspi = 0 Then
Sdi = 0
Else
Sdi = 1
End If
Dout = Dout * 2
Dsdo = Dsdo * 2
If Sdo = 1 Then
Dsdo = Dsdo + 1
End If
Sck = 1
Nop : Nop
nop : nop
nop : nop
nop : nop
nop : nop
nop : nop
nop : nop
nop
Sck = 0
Print Sdi
Next Ihulp
Nsel = 1
Print "----------------------------------"
End Sub
Sub Init_rfm12bp
Nsel = 1
Sck = 0
Call Spi16(&H80d8)
Call Spi16(&H8209)
Call Spi16(&Ha640)
Call Spi16(&Hc647)
Call Spi16(&Hcc77)
Call Spi16(&H94a0)
Call Spi16(&Hc2ac)
Call Spi16(&Hca80)
Call Spi16(&Hca83)
Call Spi16(&Hc49b)
Call Spi16(&H9850)
Call Spi16(&He000)
Call Spi16(&Hc80e)
Call Spi16(&Hc000)
End Sub
Sub Send_buffer
Set Portd.5
Call Spi16(&H0000)
Waitus 5
Call Spi16(&H8228)
Waitus 5
Call Spi16(&H8238)
Waitus 5
Call Spi16(&Hb8aa)
Waitus 5
Call Spi16(&Hb8aa)
Waitus 5
Call Spi16(&Hb8aa)
Waitus 5
Call Spi16(&Hb82d)
Waitus 5
Call Spi16(&Hb8d4)
Bhulp3 = Len(buffer)
For Bhulp = 1 To Bhulp3
Shulp = Mid(buffer , Bhulp , 1)
Bhulp2 = Asc(shulp)
Param = &HB800 + Bhulp2
Call Spi16(param)
Print shulp
Waitus 5
Next Bhulp
Waitus 5
Call Spi16(&Hb8aa)
Waitus 5
Call Spi16(&Hb8aa)
Waitus 5
Call Spi16(&H8208)
Reset Portd.5
End Sub
$regfile = "m88def.dat"
$hwstack = 128
$swstack = 128
$framesize = 128
$crystal = 8000000
$baud = 4800
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
Config Lcdmode = Port
Prr = 0
'*******************************************************************************
Declare Sub Init_rfm12bp
Declare Sub Spi16(byval Dout As Word)
Dim Dout As Word
Dim Dspi As Word
Dim Dsdo As Word
Dim Param As Word
Config Portd.7 = Output
Config Portd.6 = Output
Nsel Alias Portb.2
Config Nsel = Output
Sdi Alias Portb.3
Config Sdi = Output
Sdo Alias Pinb.4
Config Sdo = Input
Sck Alias Portb.5
Config Sck = Output
Nres Alias Portb.0
Config Nres = Output
Dim Buffer As String * 10
Dim Shulp As String * 3
Dim Nspi As Integer
Dim Wd As Word
Dim E As Byte
Dim F As Byte
Dim Rxt As Bit
Dim N As Byte
Locate 1 , 1
Lcd "Simple Rx"
Wait 2
Cls
Gosub Init_rfm12bp
On Int0 Rfmpart
Enable Int0
Config Int0 = Low Level
Enable Interrupts
Do
If Rxt = 1 Then
Rxt = 0
Locate 1 , 1
Lcd Buffer
End If
Loop
Rfmpart:
Buffer = ""
Locate 2 , 1
For N = 1 To 5
Call Spi16(&H0000)
Call Spi16(&Hb000)
Buffer = Buffer + Chr(dsdo)
Lcd Dsdo
Next N
Call Spi16(&Hca80)
Call Spi16(&Hca83)
Toggle Portd.7
Rxt = 1
Return
Sub Spi16(dout As Word) 'RFM12BP write routine
Nsel = 0
Dsdo = 0
For Nspi = 1 To 16 'clock 16 bits out
Dspi = Dout And &H8000
If Dspi = 0 Then
Sdi = 0 'shiftout a 0
Else
Sdi = 1 'shiftout a 1
End If
Print Sdi
Dout = Dout * 2
Dsdo = Dsdo * 2
If Sdo = 1 Then
Dsdo = Dsdo + 1
End If
Sck = 1
Nop : Nop : nop 'small wait
nop : nop : nop
nop : nop : nop
nop : nop : nop
nop : nop: nop
Sck = 0
Next Nspi
Nsel = 1
End Sub
Sub Init_rfm12bp 'Init the RFM12BP transceiver
Nsel = 1
Sck = 0
Call Spi16(&H80d8)
Call Spi16(&H82d9)
Call Spi16(&Ha640)
Call Spi16(&Hc647)
Call Spi16(&H94a0)
Call Spi16(&Hc2ac)
Call Spi16(&Hcc77)
Call Spi16(&Hca80)
Call Spi16(&Hca83)
Call Spi16(&Hc49b)
Call Spi16(&H9850)
Call Spi16(&Hced4)
Call Spi16(&He000)
Call Spi16(&Hc800)
Call Spi16(&Hc000)
End Sub