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