📄 nrf2401.lst
字号:
C51 COMPILER V8.02 NRF2401 04/26/2007 20:50:59 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE NRF2401
OBJECT MODULE PLACED IN nRF2401.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE nRF2401.c OPTIMIZE(0,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 /**********************************************************************************/
2 /**********************************************************************************/
3 // The nRF2401 2.4GHz Multi Channel Software
4 //
5 // This software and any related documentation is provided "as is" without any
6 // warranty of any kind, either express or implied, including, without
7 // limitation, the implied warranties or merchantability, fitness for a
8 // particular purpose, and noninfringment. The entire risk arising out of use
9 // of this software remains with you.
10 // write time is 2004.3.20====debug time is 2004.3.20--21
11 // copyright is shenzhen.xuntong Co.Ltd
12 // cpu= At89lv51,keilC51 compiler
13 /**********************************************************************************/
14 /**********************************************************************************/
15 #include <reg51.h>
16 #include <stdio.h>
17 #include <string.h>
18 #include <math.h>
19 #include <intrins.h>
20 /**********************************************************************************/
21 #define uchar unsigned char
22 #define uint unsigned int
23
24 #define Fclk 3686400
25 #define BitRate 19200
26 #define BRR (Fclk/(16*Bitrate))-1
27
28 #define timerdiv 1
29 #define timerval 256-(Fclk/timerdiv)/100000 // timeout each 10us
30 /**********************************************************************************/
31 uchar InitData[15];
32 uchar TXData[14];
33 uchar RXData[10];
34
35 uchar Temp;
36 uchar BitCnt;
37 uchar ByteCnt;
38 uchar Data1= 0xff;
39
40 bdata uchar tempi;
41 /**********************************************************************************/
42 sbit CLK1 =P2^0; // Clock TX/RX for Data Channel1 3-wire interface
43 sbit CS =P2^2; // Chip Select Activates Comfiguration Mode
44 sbit Data =P2^3; // RX Data Channel1/TX Data Input/3-wire interface
45 sbit CE =P2^4; // Chip Enalbe Activates RX or TX mode
46 sbit Clk2 =P2^5; // Clock for RX Data Channel2
47 sbit Dout2 =P2^6; // RX Data Channel2
48
49 sbit DR2 =P3^2; // RX Data Ready at Data Channel2(ShockBurst only)
50 sbit DR1 =P3^3; // RX Data Ready at Data Channel1(ShockBurst only)
51 sbit PWR_UP =P3^5; // nRF2401供电口,P口供
52
53 sbit LED1 =P0^4;
54 sbit LED2 =P0^5;
55 sbit LED3 =P0^6;
C51 COMPILER V8.02 NRF2401 04/26/2007 20:50:59 PAGE 2
56 sbit LED4 =P0^7;
57
58 sbit bflag =tempi^7;
59
60 /**********************************************************************************/
61 void init_io();
62 void nRF2401_ON();
63 void BuildInitWord();
64 void InitnRF2401();
65 void DoSPIClock();
66 void CE_High();
67 void RXEN_HIGH();
68 void TXEN_LOW();
69 void Delay10();
70 void delay100();
71 void BuildShockWord();
72 void ShockBurst();
73 void CheckButtons();
74 void ReceiveShock();
75
76 /*****************************************MAIN START ******************************/
77 void main(void)
78 {
79 1 init_io();
80 1 nRF2401_ON();
81 1 BuildInitWord();
82 1 InitnRF2401();
83 1 CE_High();
84 1 RXEN_HIGH();
85 1 delay100(); //delay for LED light
86 1 P0=0xff; //close all LED
87 1 TXEN_LOW(); // set TX mode
88 1 BuildShockWord(); // RF Package
89 1 ShockBurst();
90 1 Delay10(); // delay for mode change
91 1 RXEN_HIGH(); // Set RX mode
92 1 while(1)
93 1 {
94 2 CheckButtons(); //check if the button is pressed
95 2 DR1=1;
96 2 if(DR1==1) // Check if DR1 is high (any received from nRF2401)
97 2 ReceiveShock();
98 2 }
99 1
100 1 }
101
102 /*************************************Rmain END *******************************/
103 /*************************************init_io START ******************************/
104 void init_io()
105 {
106 1 P0=0Xff;
107 1 P1=0xff;
108 1 P2=0x00;
109 1 P3=0xff;
110 1 P0=0x0f;
111 1 }
112
113 /*************************************init_io END *******************************/
114 /*************************************BuildSPIWord START****************************/
115 void BuildInitWord()
116 {
117 1 InitData[0]=0x50; //RX receiver 2, Datalength 80bit(10 byte)
C51 COMPILER V8.02 NRF2401 04/26/2007 20:50:59 PAGE 3
118 1 InitData[1]=0x50; //RX receiver 1, Datalength 80bit(10 byte)
119 1 InitData[2]=0x00;
120 1 InitData[3]=0xcc;
121 1 InitData[4]=0xcc;
122 1 InitData[5]=0xcc;
123 1 InitData[6]=0xcc;
124 1 InitData[7]=0x00;
125 1 InitData[8]=0xcc; //RX receiver 1 address High byte
126 1 InitData[9]=0xcc; //RX receiver 1 address High byte
127 1 InitData[10]=0xcc; //RX receiver 1 address Low byte
128 1 InitData[11]=0xcc; //RX receiver 1 address Low byte
129 1 //InitData[12]=0x82; //this is for 32 bit address(Bit7-Bit2), 16bit CRC(Bit1), CRC disable(Bit0) for ES c
-hip
130 1 InitData[12]=0x83; //this is for 32 bit address(Bit7-Bit2), 16bit CRC(Bit1), CRC enable(Bit0) for final
-chip
131 1 InitData[13]=0x4f; //One receiver(Bit7), shock Mode(Bit6), Datarate(Bit5) 250K, crystal(Bit4-Bit2), RF P
-ower(Bit1-Bit0)
132 1 //InitData[13]=0x6f; //One receiver(Bit7), shock Mode(Bit6), Datarate(Bit5) 1M, crystal(Bit4-Bit2), RF Po
-wer(Bit1-Bit0)
133 1 InitData[14]=0x05; //Channel Number(Bit7-Bit1), RX/TX mode(Bit0)
134 1 }
135 /*************************************BuildSPIWord END******************************/
136 /*************************************InitnRF2401 START******************************/
137 void InitnRF2401()
138 {
139 1 CE=0; //Disable CE
140 1 CS=1; //Enable CS--confige mode
141 1 for (ByteCnt=0;ByteCnt<15;ByteCnt++)
142 1 {
143 2 tempi=InitData[ByteCnt];
144 2 for (BitCnt=0;BitCnt<8;BitCnt++)
145 2 {
146 3 if (bflag==1) //Check if first bit is HIGH
147 3 Data=1; //Set Data high
148 3 else
149 3 Data=0; //Set Data low
150 3 tempi=tempi<<1; //Left Shift to get next bit
151 3 DoSPIClock(); //Call "DoClock" to generate a clock pulse
152 3 }
153 2 }
154 1 CS=0; //Disable CS--standby mode
155 1 Data=0; //Set Data low
156 1 }
157 /*************************************InitnRF2401 END *******************************/
158 /*************************************DoSPIClock START******************************/
159 void DoSPIClock()
160 {
161 1 CLK1=1;
162 1 _nop_();
163 1 _nop_();
164 1 CLK1=0;
165 1 }
166
167 /*************************************DoSPIClock END *******************************/
168 /*************************************CE_High START ******************************/
169 void CE_High()
170 {
171 1 CE=1;
172 1 }
173 /*************************************CE_High END *******************************/
174 /*************************************TXEN_LOW START ******************************
175 void CE_Low()
C51 COMPILER V8.02 NRF2401 04/26/2007 20:50:59 PAGE 4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -