📄 nrf2401.lst
字号:
176 {
177 CE=0;
178 }
179 *************************************CE_Low END ********************************/
180 /*************************************nRF2401_ON START******************************/
181 void nRF2401_ON()
182 {
183 1 PWR_UP=1;
184 1 }
185 /*************************************nRF2401_ON END *******************************/
186 /*************************************nRF2401_OFF START*****************************/
187 //void nRF2401_OFF()
188 //{
189 // PWR_UP=0; // Set Power_Up low
190 //}
191 /*************************************nRF2401_OFF END ******************************/
192 /*************************************RXEN_HIGH START ******************************/
193 void RXEN_HIGH()
194 {
195 1 CE=0; //Set CE LOW
196 1 CS=1; //Set CS HIGH--confige mode
197 1 Data=1; //Set Data HIGH, Set RX mode
198 1 DoSPIClock(); //Make one SPIClock cycle
199 1 CS=0; //Set CS LOW
200 1 CE=1; //Set CE HIGH--active mode
201 1 }
202 /*************************************RXEN_HIGH END *******************************/
203 /*************************************TXEN_LOW START ******************************/
204 void TXEN_LOW()
205 {
206 1 CE=0; //Set CE LOW
207 1 CS=1; //Set CS HIGH--confige mode
208 1 Data=0; //Set Data LOW
209 1 DoSPIClock(); //Make one SPIClock cycle
210 1 CS=0; //Set CS LOW
211 1 CE=1; //Set CE HIGH--active mode
212 1 }
213
214 /*************************************TXEN_LOW END *******************************/
215 /*************************************delay10 START ******************************/
216 void Delay10()
217 {
218 1 uchar x;
219 1 uchar y;
220 1 for(x=0;x<10;x++)
221 1 {
222 2 for(y=0;y<100;y++)
223 2 _nop_();
224 2 }
225 1 }
226 /*************************************delay10 END *******************************/
227 /*************************************delay100 START *****************************/
228 void delay100()
229 {
230 1 uchar x;
231 1 uchar y;
232 1 for(x=0;x<100;x++)
233 1 {
234 2 for(y=0;y<100;y++)
235 2 _nop_();
236 2 }
237 1 }
C51 COMPILER V8.02 NRF2401 04/26/2007 20:50:59 PAGE 5
238 /*************************************delay100 END *******************************/
239 /*************************************ShockBurst START *****************************/
240 void BuildShockWord()
241 {
242 1 TXData[0]=0xcc; //MSB ;RX receiver 1 address High byte
243 1 TXData[1]=0xcc; //MSB-1 ;RX receiver 1 address High byte
244 1 TXData[2]=0xcc; //MSB-2 ;RX receiver 1 address Low byte
245 1 TXData[3]=0xcc; //MSB-3 ;RX receiver 1 address Low byte
246 1 TXData[4]=Data1; //MSB-4 ;Data byte 9
247 1 TXData[5]=0x02; //MSB-5 ;Data byte 8
248 1 TXData[6]=0x03; //MSB-6 ;Data byte 7
249 1 TXData[7]=0x04; //MSB-7 ;Data byte 6
250 1 TXData[8]=0x05; //MSB-8 ;Data byte 5
251 1 TXData[9]=0x06; //MSB-9 ;Data byte 4
252 1 TXData[10]=0x07; //MSB-10 ;Data byte 3
253 1 TXData[11]=0x08; //MSB-11 ;Data byte 2
254 1 TXData[12]=0x09; //MSB-12 ;Data byte 1
255 1 TXData[13]=0x10; //MSB-13 ;Data byte 0
256 1 }
257 /************************************* BuildShockWord END *******************************/
258 /************************************* ShockBurst START *******************************/
259 void ShockBurst()
260 {
261 1 CS=0; //Pull CS low
262 1 CE=1; //Enable CE active mode
263 1 for (ByteCnt=0;ByteCnt<14;ByteCnt++)
264 1 {
265 2 tempi=TXData[ByteCnt];
266 2 for (BitCnt=0;BitCnt<8;BitCnt++)
267 2 {
268 3 if (bflag==1) //Check if first bit is HIGH
269 3 Data=1; //Set Data high
270 3 else
271 3 Data=0; //Set Data low
272 3 tempi=tempi<<1; //Left Shift to get next bit
273 3 DoSPIClock();
274 3 //SendData(); //Call SendData
275 3 }
276 2 }
277 1 CE=0; //Disable CE (TX Starts!)--standby mode
278 1 Data=0; //Set Data low
279 1 }
280 /************************************* ShockBurst END ***********************************/
281 /************************************* SendData START *******************************
282
283 void SendData()
284 {
285 for (BitCnt=0;BitCnt<8;BitCnt++)
286 {
287 if (bflag==1) //Check if first bit is HIGH
288 Data=1; //Set Data high
289 else
290 Data=0; //Set Data low
291 tempi=tempi<<1; //Left Shift to get next bit
292 DoSPIClock(); //Call "DoClock" to generate a clock pulse
293 }
294 }
295
296 ************************************** SendData END *************************************/
297 /************************************* CheckButtons START *******************************/
298 void CheckButtons()
299 {
C51 COMPILER V8.02 NRF2401 04/26/2007 20:50:59 PAGE 6
300 1 P0=0xff;
301 1 Temp=P0&0x0f; //read key value from port P0
302 1 if (Temp!=0x0f)
303 1 {
304 2 Temp=Temp<<4;
305 2 Data1=Temp; //put the button Data in dada package
306 2 P0=Data1; //Turn On the LED
307 2 TXEN_LOW(); //set TX mode
308 2 BuildShockWord();
309 2 ShockBurst();
310 2 delay100(); //delay for LED light
311 2 RXEN_HIGH();
312 2 P0=0xff; //close LED display
313 2 }
314 1 }
315 /************************************* CheckButtons END *********************************/
316 /************************************* ReceiveShock START *******************************/
317 void ReceiveShock()
318 {
319 1 Data=1; //Set Data tri state
320 1 Temp=0;
321 1 for (ByteCnt=0;ByteCnt<10;ByteCnt++)
322 1 {
323 2 for(BitCnt=0;BitCnt<8;BitCnt++)
324 2 {
325 3 Temp=Temp<<1; //shift left to receive next bit
326 3 CLK1=1; //set clock high
327 3 _nop_();
328 3 _nop_(); //wait one clk cycle
329 3 Data=1;
330 3 if(Data==1) //check if Data=high
331 3 Temp|=0x01; //yes - set bit high
332 3 CLK1=0; //set clock low
333 3 _nop_(); //wait one clk cycle
334 3 }
335 2 _nop_();
336 2 RXData[ByteCnt]=Temp;
337 2 DR1=1;
338 2 if(DR1!=1) //check if DR1 is not still high
339 2 {
340 3 _nop_();
341 3 P0=RXData[0]; //Turn On the LED
342 3 delay100();
343 3 P0=0xff;
344 3 }
345 2 }
346 1 }
347
348 /************************************* ReceiveShock END *********************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 515 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 48 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -