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