📄 nrf905.lst
字号:
538 4
539 4 //for (r=0; r<32; ++r)
540 4 //{
541 4 //TxBuf[r]='\0';
542 4 // }
543 4
544 4 SetRxMode(); // Set nRF905 in Rx mode
545 4
546 4 wfg = 0;
547 4
548 4 for (r=0; r<32; ++r)
549 4 {
550 5 Int[r+32] = Digital[(sdata/10)*32+r];
551 5 }
C51 COMPILER V8.05a NRF905 06/08/2008 20:18:03 PAGE 10
552 4 for (r=32; r<64; ++r)
553 4 {
554 5 Int[r+32] = Digital[(sdata%10)*32+r-32];
555 5 }
556 4 for (r=0; r<32; ++r)
557 4 {
558 5 Int[r+96] = xiaoshudian[r];
559 5 }
560 4 for (r=96; r<128; ++r)
561 4 {
562 5 Int[r+32] = Digital[(xiaoshu/10)*32+r-96];
563 5 }
564 4 for (r=128; r<160; ++r)
565 4 {
566 5 Int[r+32] = Digital[(xiaoshu%10)*32+r-128];
567 5 }
568 4 for (r=0; r<32; ++r)
569 4 {
570 5 Int[r+192] = sheshidu[r];
571 5 }
572 4
573 4 /*
574 4 print_Char(sdata/10 +'0');
575 4 print_Char(sdata%10 +'0');
576 4 print_Char('.');
577 4 print_Char(xiaoshu/10 +'0');
578 4 print_Char(xiaoshu%10 +'0');
579 4 print_Char('\n');
580 4 */
581 4 }
582 3 else// if(strlen(RxBuf)>1)//RxBuf[5]!='\0'||RxBuf[31]!='\0'||RxBuf[15]!='\0'||RxBuf[22]!='\0'||RxBuf[24
-]!='\0') //接收到汉字码
583 3 {
584 4
585 4 Write_24c04_32bit(count);
586 4 count++;
587 4
588 4
589 4 // print_Char('e');
590 4 // print_Str(RxBuf);
591 4
592 4 for (r=0; r<32; ++r)
593 4 {
594 5 text[r+32] = RxBuf[r];
595 5 }
596 4
597 4 wfg = 1;
598 4
599 4 }
600 3
601 3 for (r=0; r<32; ++r)
602 3 {
603 4 RxBuf[r]='\0';
604 4 }
605 3
606 3 }
607 2
608 2
609 2 if (Key == 0)
610 2 {
611 3 delays_key();
612 3
C51 COMPILER V8.05a NRF905 06/08/2008 20:18:03 PAGE 11
613 3 if (Key == 0)
614 3 {
615 4 Read_24c04_32bit(keycount);
616 4 keycount++;
617 4 //此处添加点阵代码
618 4
619 4 for (r=0; r<32; ++r)
620 4 {
621 5 text[r+32] = RXBuffer[r];
622 5 }
623 4
624 4 //print_Str(RXBuffer);
625 4 }
626 3
627 3 wfg = 1;
628 3
629 3 while(Key==0); //等待按键释放
630 3 }
631 2
632 2
633 2
634 2 /* 串口部分
635 2 if (RxWriteIndex>0)
636 2 {
637 2
638 2 //print_Str(TxBuf);
639 2
640 2 SetTxMode(); // Set Tx Mode
641 2 TxPacket(); // Transmit Tx buffer data
642 2 TxBuf[0] = '\0';
643 2 SetRxMode(); // Set nRF905 in Rx mode
644 2 RxWriteIndex = 0;
645 2
646 2 }
647 2 */
648 2
649 2 }
650 1
651 1 }
652
653
654 void Write_24c04_32bit(unsigned char count)
655 {
656 1 WriteNByte(0xa0,16*count*2,RxBuf,16); //RxBuf 905
657 1 WriteNByte(0xa0,16*count*2+16,&RxBuf[16],16);
658 1 }
659
660 void Read_24c04_32bit(unsigned char keycount)
661 {
662 1 ReadNByte(0xa0,16*keycount*2,RXBuffer,16); //RXBuffer 24c04
663 1 ReadNByte(0xa0,16*keycount*2+16,&RXBuffer[16],16);
664 1 }
665
666
667 /*******************************************************************************************/
668 /*******************************************************************************************/
669 //function Config905();
670 /*******************************************************************************************/
671 void Config905(void)
672 {
673 1 uchar i;
674 1 CSN=0; // Spi enable for write a spi command
C51 COMPILER V8.05a NRF905 06/08/2008 20:18:03 PAGE 12
675 1 SpiWrite(WC); // Write config command写放配置命令
676 1 for (i=0;i<RxTxConf.n;i++) // Write configration words 写放配置字
677 1 {
678 2 SpiWrite(RxTxConf.buf[i]);
679 2 }
680 1 CSN=1; // Disable Spi
681 1 }
682 /*******************************************************************************************/
683 //function SpiWrite();
684 /*******************************************************************************************/
685 void SpiWrite(uchar byte)
686 {
687 1 uchar i;
688 1 DATA_BUF=byte; // Put function's parameter into a bdata variable
689 1 for (i=0;i<8;i++) // Setup byte circulation bits
690 1 {
691 2
692 2 if (flag) // Put DATA_BUF.7 on data line
693 2 MOSI=1;
694 2 else
695 2 MOSI=0;
696 2 SCK=1; // Set clock line high
697 2 DATA_BUF=DATA_BUF<<1; // Shift DATA_BUF
698 2 SCK=0; // Set clock line low
699 2 }
700 1 }
701 /*******************************************************************************************/
702 //function SpiRead();
703 /*******************************************************************************************/
704 uchar SpiRead(void)
705 {
706 1 uchar i;
707 1 for (i=0;i<8;i++) // Setup byte circulation bits
708 1 {
709 2 DATA_BUF=DATA_BUF<<1; // Right shift DATA_BUF
710 2 SCK=1; // Set clock line high
711 2 if (MISO)
712 2 flag1=1; // Read data
713 2 else
714 2 flag1=0;
715 2
716 2
717 2 SCK=0; // Set clock line low
718 2 }
719 1 return DATA_BUF; // Return function parameter
720 1 }
721 /*******************************************************************************************/
722 //function TxPacket();
723 /*******************************************************************************************/
724 void TxPacket(void)
725 {
726 1 uchar i;
727 1 //Config905();
728 1 CSN=0; // Spi enable for write a spi command
729 1 SpiWrite(WTP); // Write payload command
730 1 for (i=0;i<32;i++)
731 1 {
732 2 SpiWrite(TxBuf[i]); // Write 32 bytes Tx data
733 2 }
734 1 CSN=1; // Spi disable
735 1 Delay(1);
736 1 CSN=0; // Spi enable for write a spi command
C51 COMPILER V8.05a NRF905 06/08/2008 20:18:03 PAGE 13
737 1 SpiWrite(WTA); // Write address command
738 1 for (i=0;i<4;i++) // Write 4 bytes address
739 1 {
740 2 SpiWrite(RxTxConf.buf[i+5]);
741 2 }
742 1 CSN=1; // Spi disable
743 1 TRX_CE=1; // Set TRX_CE high,start Tx data transmission
744 1 Delay(1); // while (DR!=1);
745 1 TRX_CE=0; // Set TRX_CE low
746 1 }
747 /*******************************************************************************************/
748 //function RxPacket();
749 /*******************************************************************************************/
750 void RxPacket(void)
751 {
752 1 uchar i;
753 1 TRX_CE=0; // Set nRF905 in standby mode
754 1 CSN=0; // Spi enable for write a spi command
755 1 SpiWrite(RRP); // Read payload command
756 1 for (i=0;i<32;i++)
757 1 {
758 2 RxBuf[i]=SpiRead(); // Read data and save to buffer
759 2 }
760 1 CSN=1; // Disable spi
761 1 while(DR||AM);
762 1 //P0= RxBuf[0]; // Buffer[0] output from P0 port...
763 1 TRX_CE=1;
764 1
765 1 }
766 /*******************************************************************************************/
767 //function SetTxMode();
768 /*******************************************************************************************/
769 void SetTxMode(void)
770 {
771 1 TX_EN=1;
772 1 TRX_CE=0;
773 1 Delay(1); // delay for mode change(>=650us)
774 1 }
775 /*******************************************************************************************/
776 //function SetRxMode();
777 /*******************************************************************************************/
778 void SetRxMode(void)
779 {
780 1 TX_EN=0;
781 1 TRX_CE=1;
782 1 Delay(1); // delay for mode change(>=650us)
783 1 }
784
785 void delays_key(void)
786 {
787 1 uchar i;
788 1
789 1 for (i=1300; i>0; --i);
790 1 }
791
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2306 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = 745 11
PDATA SIZE = ---- ----
C51 COMPILER V8.05a NRF905 06/08/2008 20:18:03 PAGE 14
DATA SIZE = 33 ----
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -