📄 com.lst
字号:
272 /*----------------------------- Subroutine -------------------------------------
273 Name: spi read
274 Function:
275 Entry:
276 Exit:
277 Caution:
278 -------------------------------------------------------------------------------*/
279 uchar SpiRead(void)
280 {
281 1 uchar i;
282 1 for (i=0;i<8;i++) // Setup byte circulation bits
283 1 {
284 2 DATA_BUF=DATA_BUF<<1; // Right shift DATA_BUF
285 2 SCK=1; // Set clock line high
286 2 if (MISO)
287 2 flag1=1; // Read data
288 2 else
289 2 flag1=0;
290 2 SCK=0; // Set clock line low
291 2 }
292 1 return DATA_BUF; // Return function parameter
293 1 }
294 /*----------------------------- Subroutine -------------------------------------
295 Name: config 905
296 Function:
297 Entry:
298 Exit:
299 Caution:
300 -------------------------------------------------------------------------------*/
301 void Config905(void){
302 1 uchar i;
303 1 CSN=0; // Spi enable for write a spi command
C51 COMPILER V7.50 COM 11/15/2007 14:43:54 PAGE 6
304 1 SpiWrite(WC); // Write config command写放配置命令
305 1 for (i=0;i<RxTxConf.n;i++) // Write configration words 写放配置字
306 1 {
307 2 SpiWrite(RxTxConf.buf[i]);
308 2 }
309 1 CSN=1; // Disable Spi
310 1 }
311 /*----------------------------- Subroutine -------------------------------------
312 Name: Tx Packet
313 Function:
314 Entry:
315 Exit:
316 Caution:
317 -------------------------------------------------------------------------------*/
318 void TxPacket(void){
319 1 uchar i;
320 1 //Config905();
321 1 CSN=0; // Spi enable for write a spi command
322 1 SpiWrite(WTP); // Write payload command
323 1 for (i=0;i<32;i++)
324 1 {
325 2 SpiWrite(TxBuf[i]); // Write 32 bytes Tx data
326 2 }
327 1 CSN=1; // Spi disable
328 1 Delay(1);
329 1 CSN=0; // Spi enable for write a spi command
330 1 SpiWrite(WTA); // Write address command
331 1 for (i=0;i<4;i++) // Write 4 bytes address
332 1 {
333 2 SpiWrite(RxTxConf.buf[i+5]);
334 2 }
335 1 CSN=1; // Spi disable
336 1 TRX_CE=1; // Set TRX_CE high,start Tx data transmission
337 1 Delay(1); // while (DR!=1);
338 1 TRX_CE=0; // Set TRX_CE low
339 1 }
340 /*----------------------------- Subroutine -------------------------------------
341 Name: Rx Packet
342 Function:
343 Entry:
344 Exit:
345 Caution:
346 -------------------------------------------------------------------------------*/
347 void RxPacket(void)
348 {
349 1 uchar i;
350 1 TRX_CE=0; // Set nRF905 in standby mode
351 1 CSN=0; // Spi enable for write a spi command
352 1 SpiWrite(RRP); // Read payload command
353 1 for (i=0;i<32;i++)
354 1 {
355 2 RxBuf[i]=SpiRead(); // Read data and save to buffer
356 2 }
357 1 CSN=1; // Disable spi
358 1 while(DR||AM);
359 1 // P0=RxBuf[0]; // Buffer[0] output from P0 port...
360 1 TRX_CE=1;
361 1 // TRX_CE=1; // Set TRX_CE high,start Tx data transmission
362 1 // Delay(1); // while (DR!=1);
363 1 // TRX_CE=0; // Set TRX_CE low
364 1
365 1 }
C51 COMPILER V7.50 COM 11/15/2007 14:43:54 PAGE 7
366
367 /*----------------------------- Subroutine -------------------------------------
368 Name: datbuf_clr
369 Function:
370 Entry:
371 Exit:
372 Caution:
373 -------------------------------------------------------------------------------*/
374 void datbuf_clr(void){
375 1 unsigned char i;
376 1 for(i=0;i<7;i++){
377 2 TxBuf[i]=0xff;
378 2 }
379 1 }
380 /*----------------------------- Subroutine -------------------------------------
381 Name: com_initial
382 Function:
383 Entry:
384 Exit:
385 Caution:
386 -------------------------------------------------------------------------------*/
387 void com_initial(void){
388 1
389 1 //================NRF905初始化
390 1 CSN=1; // Spi disable
391 1 SCK=0; // Spi clock line init high
392 1 DR=1; // Init DR for input
393 1 AM=1; // Init AM for input
394 1 PWR_UP=1; // nRF905 power on
395 1 TRX_CE=0; // Set nRF905 in standby mode
396 1 TX_EN=0;
397 1
398 1 nRF905Init();
399 1 Delay(13); //80*13
400 1 Config905(); // Config nRF905 module
401 1 SetTxMode(); // Set Tx Mode
402 1 TxPacket(); // Transmit Tx buffer data
403 1
404 1 Delay(500); // delay for led light
405 1
406 1 SetRxMode(); // Set nRF905 in Rx mode
407 1
408 1 // 发
409 1 Delay(500);
410 1
411 1 // load data to send
412 1 TxBuf[0]=0xaa;
413 1 TxBuf[1]=0x55;
414 1 TxBuf[2]=Read_COM_DATA;
415 1 TxBuf[3]=0x00;
416 1 TxBuf[4]=0xaa;
417 1 TxBuf[5]=0x55;
418 1
419 1 SetTxMode(); // Set Tx Mode
420 1 TxPacket(); // Transmit Tx buffer data
421 1 datbuf_clr();
422 1 SetRxMode(); // Set nRF905 in Rx mode
423 1
424 1 b_send_fg=0;
425 1
426 1 }
427 /*----------------------------- Subroutine -------------------------------------
C51 COMPILER V7.50 COM 11/15/2007 14:43:54 PAGE 8
428 Name: com
429 Function:
430 Entry:
431 Exit:
432 Caution:
433 -------------------------------------------------------------------------------*/
434 void com_do_ne(void){
435 1 if(RxBuf[3]==comdata){ //数据相等
436 2 b_disp=1;
437 2 lcm_md=0x02;
438 2 dataresult=0x00;
439 2 }
440 1 else { //不等,重发
441 2 comcmd=Write_COM_DATA;
442 2 b_send_fg=1;
443 2 }
444 1 }
445 void com_do(void){
446 1 if(RxBuf[2]==Feedback_CW_DATA){ //0xa3 下位机反馈写入数据
447 2 com_do_ne();
448 2 fbuzz_en();
449 2 }
450 1
451 1 else if(RxBuf[2]==Feedback_CR_DATA){ //0xa4 下位机反馈要读的数据数据
452 2 comdata=RxBuf[3];
453 2 b_disp=1;
454 2 lcm_md=0x01;
455 2 fbuzz_en();
456 2 }
457 1
458 1 else if(RxBuf[2]==RST_COM_DATA){ //0xa5 下位机复位
459 2 b_disp=1;
460 2 lcm_md=0x04;
461 2 fbuzz_en();
462 2 }
463 1
464 1 }
465
466 void com(void){
467 1 if (DR){ // If recive data ready...
468 2 TR0 = 0; //start t0
469 2
470 2 RxPacket(); // ... recive data
471 2 TR0 = 1;
472 2
473 2 // if((RxBuf[0]==RxBuf[4])&&(RxBuf[1]==RxBuf[5])){
474 2 _nop_();
475 2 _nop_();
476 2 _nop_();
477 2 _nop_();
478 2
479 2 //b_disp=1;
480 2 dsip_r0=RxBuf[0];
481 2 dsip_r1=RxBuf[1];
482 2 dsip_ra=RxBuf[2];
483 2 dsip_rb=RxBuf[3];
484 2 dsip_r4=RxBuf[4];
485 2 dsip_r5=RxBuf[5];
486 2
487 2
488 2 com_do();
489 2
C51 COMPILER V7.50 COM 11/15/2007 14:43:54 PAGE 9
490 2 // if(RxBuf[2]==Feedback_CW_DATA){ //0xa3 下位机反馈写入数据
491 2 // if(RxBuf[3]==comdata){ //数据相等
492 2 // b_disp=1;
493 2 // lcm_md=0x02;
494 2 // dataresult=0x00;
495 2 // }
496 2 // else { //不等,重发
497 2 // comcmd=Write_COM_DATA;
498 2 // b_send_fg=1;
499 2 // }
500 2 // }
501 2 //
502 2 // else if(RxBuf[2]==Feedback_CR_DATA){ //0xa4 下位机反馈要读的数据数据
503 2 // comdata=RxBuf[3];
504 2 // b_disp=1;
505 2 // lcm_md=0x01;
506 2 // }
507 2
508 2 }
509 1 // TR0 = 1; //start t0
510 1 // }
511 1
512 1
513 1 if(b_send_fg==1){
514 2 b_send_fg=0;
515 2 Delay(500);
516 2
517 2 TR0 = 0;
518 2
519 2 TxBuf[0]=0xaa;
520 2 TxBuf[1]=0x55;
521 2 TxBuf[2]=comcmd;
522 2 TxBuf[3]=comdata;
523 2 TxBuf[4]=0xaa;
524 2 TxBuf[5]=0x55;
525 2
526 2 SetTxMode(); // Set Tx Mode
527 2 TxPacket(); // Transmit Tx buffer data
528 2 datbuf_clr();
529 2 SetRxMode(); // Set nRF905 in Rx mode
530 2
531 2 TR0 = 1; //start t0
532 2 }
533 1
534 1 }
535
536
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 468 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 68 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -