📄 nrf2401.lst
字号:
C51 COMPILER V7.50 NRF2401 08/06/2008 16:10:36 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE NRF2401
OBJECT MODULE PLACED IN nRF2401.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE nRF2401.c 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 "fx2.h"
16 #include "fx2regs.h"
17 #include "intrins.h"
18 /**********************************************************************************/
19 #define uchar unsigned char
20 #define uint unsigned int
21
22 #define Fclk 3686400
23 #define BitRate 19200
24 #define BRR (Fclk/(16*Bitrate))-1
25
26 #define timerdiv 1
27 #define timerval 256-(Fclk/timerdiv)/100000 // timeout each 10us
28 /**********************************************************************************/
29 uchar InitData[15];
30 uchar TXData[30];
31 uchar RXData[26];
32
33 uchar Temp;
34 uchar BitCnt;
35 uchar ByteCnt;
36 uchar Data1= 0xff;
37
38 bdata uchar tempi;
39 /**********************************************************************************/
40
41 #define BIT(b) (1<<(b))
42 #define NBIT(b) ~(1<<(b))
43
44 #define CS 0
45 #define CE 2
46 #define PWR_UP 4
47
48 #define DR1 1
49 #define CLK1 3
50 #define DATA 5
51
52
53 sbit bflag =tempi^7;
54
55 /**********************************************************************************/
C51 COMPILER V7.50 NRF2401 08/06/2008 16:10:36 PAGE 2
56 void init_io();
57 void nRF2401_ON();
58 void BuildInitWord();
59 void InitnRF2401();
60 void DoSPIClock();
61 void CE_High();
62 void RXEN_HIGH();
63 void TXEN_LOW();
64 void Delay10();
65 void delay100();
66 void BuildShockWord();
67 void ShockBurst();
68 void ReceiveShock();
69 void initUart(void);
70
71 #define LED_ADDR 0x72
72
73 void write_leds (BYTE d)
74 {
75 1 while (I2CS & 0x40); //Wait for stop to be done
76 1 I2CS = 0x80; //Set start condition
77 1 I2DAT = LED_ADDR; //Write led address
78 1 while (!(I2CS & 0x01)); //Wait for done
79 1 I2DAT = d; //Write data
80 1 while (!(I2CS & 0x01)); //Wait for done
81 1 I2CS = 0x40; //Set stop bit
82 1 }
83
84 /*****************************************MAIN START ******************************/
85 void my_InitnRF2401(void)
86 {
87 1 init_io();
88 1 nRF2401_ON();
89 1 BuildInitWord();
90 1 InitnRF2401();
91 1 CE_High();
92 1 RXEN_HIGH();
93 1 delay100(); //delay for LED light
94 1 write_leds(0x0E); //close all LED
95 1 TXEN_LOW(); // set TX mode
96 1 BuildShockWord();
97 1 ShockBurst();
98 1 Delay10(); // delay for mode change
99 1 TXEN_LOW();
100 1
101 1 // initUart();
102 1 /* while(1)
103 1 {
104 1 // CheckButtons(); //check if the button is pressed
105 1
106 1 //DR1=1;
107 1 if(IOA&BIT(DR1)) // Check if DR1 is high (any received from nRF2401)
108 1 {
109 1 ReceiveShock();
110 1 // write_leds(6);
111 1 }
112 1 else
113 1 {
114 1 // write_leds(1);
115 1 }
116 1
117 1 }
C51 COMPILER V7.50 NRF2401 08/06/2008 16:10:36 PAGE 3
118 1 */
119 1
120 1 }
121 /*************************************Rmain END *******************************/
122 /*************************************init_io START ******************************/
123 void init_io()
124 {
125 1 OEA|=BIT(CS)|BIT(CE)|BIT(PWR_UP)|BIT(CLK1)|BIT(DATA);
126 1 OEA&=NBIT(DR1);
127 1
128 1 IOA|=BIT(PWR_UP);
129 1 IOA&=NBIT(CS)&NBIT(CE)&NBIT(CLK1)&NBIT(DATA);
130 1 }
131 /*************************************init_io END *******************************/
132 /*************************************BuildSPIWord START****************************/
133 void BuildInitWord()
134 {
135 1 InitData[0]=0xd0; //RX receiver 2, Datalength 13*16bit(26 byte)
136 1 InitData[1]=0xd0; //RX receiver 1, Datalength 13*16bit(26 byte)
137 1 InitData[2]=0x00;
138 1 InitData[3]=0xcc;
139 1 InitData[4]=0xcc;
140 1 InitData[5]=0xcc;
141 1 InitData[6]=0xcc;
142 1 InitData[7]=0x00;
143 1 InitData[8]=0xcc; //RX receiver 1 address High byte
144 1 InitData[9]=0xcc; //RX receiver 1 address High byte
145 1 InitData[10]=0xcc; //RX receiver 1 address Low byte
146 1 InitData[11]=0xcc; //RX receiver 1 address Low byte
147 1 //InitData[12]=0x82; //this is for 32 bit address(Bit7-Bit2), 16bit CRC(Bit1), CRC disable(Bit0) for ES c
-hip
148 1 InitData[12]=0x83; //this is for 32 bit address(Bit7-Bit2), 16bit CRC(Bit1), CRC enable(Bit0) for final
-chip
149 1 //InitData[13]=0x4f; //One receiver(Bit7), shock Mode(Bit6), Datarate(Bit5) 250K, crystal(Bit4-Bit2), RF
- Power(Bit1-Bit0)
150 1 InitData[13]=0x6f; //One receiver(Bit7), shock Mode(Bit6), Datarate(Bit5) 1M, crystal(Bit4-Bit2), RF Powe
-r(Bit1-Bit0)
151 1 InitData[14]=0x04; //Channel Number(Bit7-Bit1), RX/TX mode(Bit0), transmit mode
152 1 }
153 /*************************************BuildSPIWord END******************************/
154 /*************************************InitnRF2401 START******************************/
155 void InitnRF2401()
156 {
157 1 //Disable CE
158 1 IOA&=NBIT(CE);
159 1 IOA|=BIT(CS); //Enable CS--confige mode
160 1 for (ByteCnt=0;ByteCnt<15;ByteCnt++)
161 1 {
162 2 tempi=InitData[ByteCnt];
163 2 for (BitCnt=0;BitCnt<8;BitCnt++)
164 2 {
165 3 if (bflag==1) //Check if first bit is HIGH
166 3 //Set Data high
167 3 IOA|=BIT(DATA);
168 3 else
169 3 //Set Data low
170 3 IOA&=NBIT(DATA);
171 3 tempi=tempi<<1; //Left Shift to get next bit
172 3 DoSPIClock(); //Call "DoClock" to generate a clock pulse
173 3 }
174 2 }
175 1 IOA&=NBIT(CS); //Disable CS--standby mode
C51 COMPILER V7.50 NRF2401 08/06/2008 16:10:36 PAGE 4
176 1 IOA&=NBIT(DATA); //Set Data low
177 1 }
178 /*************************************InitnRF2401 END *******************************/
179 /*************************************DoSPIClock START******************************/
180 void DoSPIClock()
181 {
182 1 IOA|=BIT(CLK1);
183 1 _nop_();
184 1 _nop_();
185 1 _nop_();
186 1 _nop_();
187 1 _nop_();
188 1 _nop_();
189 1 IOA&=NBIT(CLK1);
190 1 }
191
192 /*************************************DoSPIClock END *******************************/
193 /*************************************CE_High START ******************************/
194 void CE_High()
195 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -