Software e Hardware para linha x51
Moderadores: 51, guest2003, Renie, gpenga
por tcpipchip » 20 Ago 2013 16:26
Se alguem tiver interesse, aqui esta código fonte que implementei no BASCOM.
- Código: Selecionar todos
$include "nrf24e1.inc"
$crystal = 16000000
Config Timer0 = Timer , Gate = Internal , Mode = 1
Dim Addr_count As Const 4
Dim Addr_index As Const 8
Declare Sub Transmitpacket(b As Byte)
Declare Sub Transmitter
Declare Sub Receivepacket
Declare Sub Receiver
Declare Sub Delay100us(b As Byte)
Declare Sub Spireadwrite(b As Byte)
Declare Sub Init
Declare Sub Inittimer
Declare Sub Led(b As Byte)
Dim I As Byte
Dim Status As Byte
Dim R As Byte
Dim T As Byte
Dim U As Byte
Dim C As Byte
Dim D As Byte
Dim E As Byte
Dim F As Byte
Dim G As Byte
Dim Timer_count_parcial As Byte
Dim Timer_count_total As Const 20
Goto Inicio
On Timer0 Timer0interrupt
Sub Led(b As Byte)
If B = 1 Then
P0 = P0 And &HFE
Timer_count_parcial = 0
Start Timer0
Else
P0 = P0 Or &H01;
End If
End Sub
Sub Spireadwrite(b As Byte)
Exif = Exif And &HDF
Spi_data = B
Status = Exif And &H20
While Status = 0
Status = Exif And &H20
Wend
R = Spi_data
End Sub
Sub Delay100us(b As Byte)
While B <> 0
For I = 0 To 35 Step 1
Next I
B = B - 1
Wend
End Sub
Sub Transmitpacket(b As Byte)
Ce = 1
Delay100us 0
For I = 1 To Addr_count Step 1
U = Addr_index + I
T = Lookup(u , Rconf)
Spireadwrite T
Next I
Spireadwrite B
Ce = 0
Delay100us 3
End Sub
Sub Transmitter
Cs = 1
Delay100us 0
T = Lookup(0 , Tconf)
For D = 1 To T Step 1
U = Lookup(d , Tconf)
Spireadwrite U
Next D
Cs = 0
C = 0
While 1 = 1
Transmitpacket C
C = C + 1
Wend
End Sub
Sub Receivepacket
Ce = 1
While Dr1 = 0
Wend
Spireadwrite 0
G = R
Ce = 0
R = G
End Sub
Sub Receiver
Cs = 1
Delay100us 0
T = Lookup(0 , Rconf)
For E = 1 To T Step 1
U = Lookup(e , Rconf)
Spireadwrite U
Next E
Cs = 0
While 1 = 1
Receivepacket
F = R
Led 1
Wend
End Sub
Sub Inittimer
Timer_count_parcial = 0
Stop Timer0
Ckcon = Ckcon Or &H08
Tf0 = 0
Enable Timer0
End Sub
Timer0interrupt:
Tf0 = 0
Load Timer0 , &HF060
Timer_count_parcial = Timer_count_parcial + 1
If Timer_count_parcial = Timer_count_total Then
P0 = P0 Or &H01
Stop Timer0
End If
Return
Sub Init
P0_dir = &H20
P0 = &H89
Spiclk = 1
Spi_ctrl = &H02
Pwr_up = 1
Delay100us 30
Inittimer
Start Timer0
Enable Interrupts
End Sub
Inicio:
Init
Status = P0 And &H20
If Status = &H20 Then
Receiver
Else
Transmitter
End If
Rconf:
Data 15 , &H08 , &H08 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H12 , &H34 , &H56 , &H78 , &H81 , &H6F , &H05
Tconf:
Data 15 , &H08 , &H08 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H12 , &H34 , &H56 , &H78 , &H81 , &H6F , &H04
- Código: Selecionar todos
Cy Alias Psw.7
Ac Alias Psw.6
F0 Alias Psw.5
Rs1 Alias Psw.4
Rs0 Alias Psw.3
Ov Alias Psw.2
F1 Alias Psw.1
P Alias Psw.0
Tf1 Alias Tcon.7
Tr1 Alias Tcon.6
Tf0 Alias Tcon.5
Tr0 Alias Tcon.4
Ie1 Alias Tcon.3
It1 Alias Tcon.2
Ie0 Alias Tcon.1
It0 Alias Tcon.0
Ea Alias Ie.7
Et2 Alias Ie.5
Es Alias Ie.4
Et1 Alias Ie.3
Ex1 Alias Ie.2
Et0 Alias Ie.1
Ex0 Alias Ie.0
Pt2 Alias Ip.5
Ps Alias Ip.4
Pt1 Alias Ip.3
Px1 Alias Ip.2
Pt0 Alias Ip.1
Px0 Alias Ip.0
T1 Alias P0.6
T0 Alias P0.5
Int1 Alias P0.4
Int0 Alias P0.3
T2 Alias P1.0
Sm0 Alias Scon.7
Sm1 Alias Scon.6
Sm2 Alias Scon.5
Ren Alias Scon.4
Tb8 Alias Scon.3
Rb8 Alias Scon.2
Ti Alias Scon.1
Ri Alias Scon.0
Tf2 Alias T2con.7
Exf2 Alias T2con.6
Rclk Alias T2con.5
Tclk Alias T2con.4
Exen2 Alias T2con.3
Tr2 Alias T2con.2
C_t2 Alias T2con.1
Cp_rl2 Alias T2con.0
Smod1 Alias Eicon.7
Wdti Alias Eicon.3
Ewdi Alias Eie.4
Ex5 Alias Eie.3
Ex4 Alias Eie.2
Ex3 Alias Eie.1
Ex2 Alias Eie.0
Pwdi Alias Eip.4
Px5 Alias Eip.3
Px4 Alias Eip.2
Px3 Alias Eip.1
Px2 Alias Eip.0
Pwr_up Alias Radio.7
Dr2 Alias Radio.6
Ce Alias Radio.6
Clk2 Alias Radio.5
Dout2 Alias Radio.4
Cs Alias Radio.3
Dr1 Alias Radio.2
Clk1 Alias Radio.1
Data Alias Radio.0
-

tcpipchip
- Dword
-
- Mensagens: 6560
- Registrado em: 11 Out 2006 22:32
- Localização: TCPIPCHIPizinho!
Voltar para 8051
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante