📄 +
字号:
234 1 }
235 /*************************************nRF2401_ON END *******************************/
236 /*************************************nRF2401_OFF START*****************************/
C51 COMPILER V7.06 NRF2401 04/17/2007 19:36:47 PAGE 5
237 //void nRF2401_OFF()
238 //{
239 // PWR_UP=0; // Set Power_Up low
240 //}
241 /*************************************nRF2401_OFF END ******************************/
242 /*************************************RXEN_HIGH START ******************************/
243 void RXEN_HIGH()
244 {
245 1 CE=0; //Set CE LOW
246 1 CS=1; //Set CS HIGH--confige mode
247 1 Data=1; //Set Data HIGH
248 1 DoSPIClock(); //Make one SPIClock cycle
249 1 CS=0; //Set CS LOW
250 1 CE=1; //Set CE HIGH--active mode
251 1 }
252 /*************************************RXEN_HIGH END *******************************/
253 /*************************************TXEN_LOW START ******************************/
254 void TXEN_LOW()
255 {
256 1 CE=0; //Set CE LOW
257 1 CS=1; //Set CS HIGH--confige mode
258 1 Data=0; //Set Data LOW
259 1 DoSPIClock(); //Make one SPIClock cycle
260 1 CS=0; //Set CS LOW
261 1 CE=1; //Set CE HIGH--active mode
262 1 }
263
264 /*************************************TXEN_LOW END *******************************/
265 /*************************************delay_n START *****************************/
266 void delay_n(uchar n)
267 {
268 1 uchar x;
269 1 uchar y;
270 1 for(x=0;x<n;x++)
271 1 {
272 2 //for(y=0;y<100;y++)
273 2 for(y=0;y<130;y++)/////jia
274 2 _nop_();
275 2 }
276 1 }
277 /*************************************delay_n END *******************************/
278 /*************************************ShockBurst START *****************************/
279 void BuildShockWord(Data1)
280 {
281 1 TXData[0]=0xcc; //MSB ;RX receiver 1 address High byte
282 1 TXData[1]=0xcc; //MSB-1 ;RX receiver 1 address High byte
283 1 TXData[2]=0xcc; //MSB-2 ;RX receiver 1 address Low byte
284 1 TXData[3]=0xcc; //MSB-3 ;RX receiver 1 address Low byte
285 1 TXData[4]=Data1; //MSB-4 ;Data byte 9
286 1 TXData[5]=0x02; //MSB-5 ;Data byte 8
287 1 TXData[6]=0x03; //MSB-6 ;Data byte 7
288 1 TXData[7]=0x04; //MSB-7 ;Data byte 6
289 1 TXData[8]=0x05; //MSB-8 ;Data byte 5
290 1 TXData[9]=0x06; //MSB-9 ;Data byte 4
291 1 TXData[10]=0x07; //MSB-10 ;Data byte 3
292 1 TXData[11]=0x08; //MSB-11 ;Data byte 2
293 1 TXData[12]=0x09; //MSB-12 ;Data byte 1
294 1 TXData[13]=0x10; //MSB-13 ;Data byte 0
295 1 }
296 /************************************* BuildShockWord END *******************************/
297 /************************************* ShockBurst START *******************************/
298 void ShockBurst()
C51 COMPILER V7.06 NRF2401 04/17/2007 19:36:47 PAGE 6
299 {
300 1 CS=0; //Pull CS low
301 1 CE=1; //Enable CE active mode
302 1 for (ByteCnt=0;ByteCnt<14;ByteCnt++)
303 1 {
304 2 tempi=TXData[ByteCnt];
305 2 for (BitCnt=0;BitCnt<8;BitCnt++)
306 2 {
307 3 if (bflag==1) //Check if first bit is HIGH
308 3 Data=1; //Set Data high
309 3 else
310 3 Data=0; //Set Data low
311 3 tempi=tempi<<1; //Left Shift to get next bit
312 3 DoSPIClock();
313 3 //SendData(); //Call SendData
314 3 }
315 2 }
316 1 CE=0; //Disable CE (TX Starts!)--standby mode
317 1 Data=0; //Set Data low
318 1 }
319 /************************************* ShockBurst END ***********************************/
320 /************************************* SendData START *******************************
321
322 void SendData()
323 {
324 for (BitCnt=0;BitCnt<8;BitCnt++)
325 {
326 if (bflag==1) //Check if first bit is HIGH
327 Data=1; //Set Data high
328 else
329 Data=0; //Set Data low
330 tempi=tempi<<1; //Left Shift to get next bit
331 DoSPIClock(); //Call "DoClock" to generate a clock pulse
332 }
333 }
334
335 ************************************** SendData END *************************************/
336 /************************************* CheckButtons START *******************************/
337 /*
338 void CheckButtons_jia()
339 {
340 uchar xx;
341 P0=0xff;
342 Temp=P0&0x0f; //read key value from port P0
343 if (Temp!=0x0f)
344 {
345 delay_n(10);
346 Temp=P0&0x0f; //read key value from port P0
347 if (Temp!=0x0f)
348 {
349 xx=Temp;
350 Temp=Temp<<4;
351 Data1=Temp; //put the button Data in dada package
352 P0=Data1; //Turn On the LED
353 TXEN_LOW(); //set TX mode
354 BuildShockWord(Data1);
355 ShockBurst();
356 TxData(xx);
357 delay_n(500);
358 P0=0xff; //close LED display
359 RXEN_HIGH();
360
C51 COMPILER V7.06 NRF2401 04/17/2007 19:36:47 PAGE 7
361 while((P0&0x0f)!=0x0f);
362 }
363 }
364 }
365 */
366 void CheckButtons()
367 {
368 1 uchar xx;
369 1 P0=0xff;
370 1 Temp=P0&0xaa; //read key value from port P0
371 1 if (Temp!=0xaa)
372 1 {
373 2 delay_n(10);
374 2 Temp=P0&0xaa; //read key value from port P0
375 2 if (Temp!=0xaa)
376 2 {
377 3 xx=Temp;
378 3 Temp=Temp>>1;
379 3 Data1=Temp; //put the button Data in dada package
380 3 P0=Data1; //Turn On the LED
381 3 TXEN_LOW(); //set TX mode
382 3 BuildShockWord(Data1);
383 3 ShockBurst();
384 3 TxData(xx);
385 3 delay_n(500);
386 3 P0=0xff; //close LED display
387 3 RXEN_HIGH();
388 3
389 3 while((P0&0xaa)!=0xaa);
390 3 }
391 2 }
392 1 }
393 /************************************* CheckButtons END *********************************/
394 /************************************* ReceiveShock START *******************************/
395 /*
396 void ReceiveShock_jia()
397 {
398 uchar xx;
399 Data=1; //Set Data tri state
400 Temp=0;
401 for (ByteCnt=0;ByteCnt<10;ByteCnt++)
402 {
403 for(BitCnt=0;BitCnt<8;BitCnt++)
404 {
405 Temp=Temp<<1; //shift left to receive next bit
406 CLK1=1; //set clock high
407 _nop_();
408 _nop_(); //wait one clk cycle
409 Data=1;
410 if(Data==1) //check if Data=high
411 Temp|=0x01; //yes - set bit high
412 CLK1=0; //set clock low
413 _nop_(); //wait one clk cycle
414 }
415 _nop_();
416 RXData[ByteCnt]=Temp;
417 DR1=1;
418 if(DR1!=1) //check if DR1 is not still high
419 {
420 _nop_();
421 P0=RXData[0]; //Turn On the LED
422 xx=(RXData[0]>>4)&0x0f;
C51 COMPILER V7.06 NRF2401 04/17/2007 19:36:47 PAGE 8
423 TxData(xx);
424 delay_n(500);
425 P0=0xff;
426 }
427 }
428 }
429 */
430 void ReceiveShock()
431 {
432 1 uchar xx;
433 1 Data=1; //Set Data tri state
434 1 Temp=0;
435 1 for (ByteCnt=0;ByteCnt<10;ByteCnt++)
436 1 {
437 2 for(BitCnt=0;BitCnt<8;BitCnt++)
438 2 {
439 3 Temp=Temp<<1; //shift left to receive next bit
440 3 CLK1=1; //set clock high
441 3 _nop_();
442 3 _nop_(); //wait one clk cycle
443 3 Data=1;
444 3 if(Data==1) //check if Data=high
445 3 Temp|=0x01; //yes - set bit high
446 3 CLK1=0; //set clock low
447 3 _nop_(); //wait one clk cycle
448 3 }
449 2 _nop_();
450 2 RXData[ByteCnt]=Temp;
451 2 DR1=1;
452 2 if(DR1!=1) //check if DR1 is not still high
453 2 {
454 3 _nop_();
455 3 P0=RXData[0]; //Turn On the LED
456 3 xx=RXData[0]<<1;//
457 3 TxData(xx);
458 3 delay_n(500);
459 3 P0=0xff;
460 3 }
461 2 }
462 1 }
463 /************************************* ReceiveShock END *********************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 588 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 52 ----
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 + -