📄 nrf24l01.lst
字号:
576 0012 NRF_TABLE_init:
577 0012
578 0012 0F00 R mov A,LOW( nRF2401_table)
579 0013 0087 mov TBLP,A
580 0014 0F00 R mov A,HIGH(nRF2401_table)
581 0015 009F mov TBHP,A
582 0016
583 0016 3722 clr UCC.@UCC_SYSCLK ;12MHz SYSCLK
584 0017 3334 set SIO_CSEN ;SPI Chip Select Function Enable
585 0018 3234 set SIO_CPOL ;rising edge change data
586 0019 1F35 clr SBCR
587 001A
588 001A
589 001A ;---Master Mode, SCLK=fSIO
590 001A 3735 clr M1
591 001B 36B5 clr M0
"File: NRF24L01.ASM Holtek Cross-Assembler Version 2.86 Page 11
592 001C 37B5 clr CKS ;Fsio=Fsys/2
593 001D
594 001D NRF_SPI_Table:
595 001D
596 001D 3435 clr TRF
597 001E 31B5 set MLS ;MSB shift first
598 001F 3235 set SBEN ;SPI Enable
599 0020 349E clr intc1.@INTC1_ESII ;SPI Interrupt Disable
600 0021 3135 set CSEN ;start SPI enable
601 0022
602 0022 ;SPI_Test_Polling_START:
603 0022
604 0022 1D00 E TABRDC table_data
605 0023 XMOV SBDR,table_data ;Low byte first MSB first
606 0025 $1: ;Send operation SPI Command
607 0025 3835 SNZ TRF
608 0026 2800 R JMP $1
609 0027 3435 CLR TRF
610 0028 0000 NOP
611 0029 XMOV SBDR,TBLH ;High byte MSB first
612 002B $2: ;Send operation Write SPI Data
613 002B 3835 SNZ TRF
614 002C 2800 R JMP $2
615 002D 3435 CLR TRF
616 002E
617 002E 3535 clr CSEN ;End SPI operation
618 002F 3635 clr SBEN ;SPI Disable
619 0030 1487 inc TBLP
620 0031 1780 E SDZ temp_num ;Table end?
621 0032 2800 R jmp NRF_SPI_Table
622 0033 0003 ret
623 0034
624 0034
625 0034 ;***************************************************************
626 0034 ; nRF24L01 SPI 16bit
627 0034 ;
628 0034 ; 1.only for read/write register or 2-Byte operation
629 0034 ; 2.clr/set bFlag_bFlag_End_SPI_Operation.
630 0034 ; If we are not have any payload to send/receiver please clr,else set.
631 0034 ; 3.The first 8 bit will save in COMMAND_H from SBDR
632 0034 ; The second 8 bit will save in COMMAND_L from SBDR
633 0034 ;***************************************************************
634 0034 NRF_SPI_16bit:
635 0034 2000 R call SPI_EN
636 0035
637 0035 XMOV SBDR,COMMAND_H
638 0037 $3:
639 0037 ;nop
640 0037 ;nop
641 0037 ;nop
642 0037 3835 SNZ TRF
643 0038 2800 R JMP $3
644 0039 3435 CLR TRF
645 003A
646 003A XMOV COMMAND_H,SBDR
647 003C
648 003C 3800 E snz bFlag_End_SPI_Operation ; 1:16 bit mode, 0:8 bit mode
649 003D 2800 R jmp $5
650 003E XMOV SBDR,COMMAND_L
651 0040 $4:
"File: NRF24L01.ASM Holtek Cross-Assembler Version 2.86 Page 12
652 0040 ;nop
653 0040 ;nop
654 0040 ;nop
655 0040 3835 SNZ TRF
656 0041 2800 R JMP $4
657 0042 3435 CLR TRF
658 0043 XMOV COMMAND_L,SBDR
659 0045 $5:
660 0045 3535 clr CSEN ;End SPI operation
661 0046 3635 clr SBEN ;SPI Disable
662 0047
663 0047 0003 ret
664 0048
665 0048
666 0048 ;***************************************************************
667 0048 ; nRF24L01 SPI payload (32Byte) TX Payload Only
668 0048 ; 1.only use in TX payload transfer.
669 0048 ; 2.33 byte to send. 1 byte for command ,32 byte for payload data.
670 0048 ;***************************************************************
671 0048 NRF_SPI_TX_payload:
672 0048 KMOV temp_num,Payload_Size ;For payload loop times
673 004A
674 004A 2000 R call SPI_EN
675 004B
676 004B ;--Send TX command
677 004B KMOV SBDR,NRF_CMD_TX_PAYLOAD
678 004D $2:
679 004D 3835 snz TRF
680 004E 2800 R jmp $2
681 004F 3435 CLR TRF
682 0050
683 0050 kmov BP,001h
684 0052 Payload_loop_TX:
685 0052 KMOV SBDR,R1
686 0054 ;$5: ; 200us at 12Mhz
687 0054 ; snz TRF ; 200us at 16Mhz
688 0054 ; jmp $5
689 0054 kmov R1,080h ; 2006.8.23 clear TX RAM (unsigned)
690 0056 1483 inc MP1
691 0057 3435 CLR TRF
692 0058 1780 E SDZ temp_num
693 0059 2800 R jmp Payload_loop_TX
694 005A
695 005A 3535 clr CSEN ;End SPI operation
696 005B 3635 clr SBEN ;SPI Disable
697 005C
698 005C 1F04 clr BP
699 005D 0003 ret
700 005E
701 005E
702 005E ;***************************************************************
703 005E ; nRF24L01 SPI payload (32Byte) RX Payload Only
704 005E ; 1.only use in RX payload transfer.
705 005E ; 2.33 byte to send. 1 byte for command ,32 byte for payload data.
706 005E ;***************************************************************
707 005E NRF_SPI_RX_payload:
708 005E KMOV temp_num,Payload_Size ;For payload loop times
709 0060 1480 E inc temp_num
710 0061 2000 R call SPI_EN
711 0062
"File: NRF24L01.ASM Holtek Cross-Assembler Version 2.86 Page 13
712 0062 ;--Send RX command
713 0062 KMOV SBDR,NRF_CMD_RX_PAYLOAD
714 0064 $3:
715 0064 3835 snz TRF
716 0065 2800 R jmp $3
717 0066 kmov RX_FIFO_Status,SBDR
718 0068
719 0068 3435 CLR TRF
720 0069
721 0069 kmov RX_key_code,MP1 ;for read key code 2007.05.11
722 006B kmov BP,001h
723 006D 2800 R jmp Payload_loop_RX1
724 006E Payload_loop_RX:
725 006E KMOV R1,SBDR
726 0070 1483 inc MP1
727 0071 3435 clr TRF
728 0072 Payload_loop_RX1:
729 0072 KMOV SBDR,R1
730 0074 ;$6:
731 0074 ; snz TRF
732 0074 ; jmp $6
733 0074 0000 NOP
734 0075 ;CLR TRF
735 0075 1780 E SDZ temp_num
736 0076 2800 R jmp Payload_loop_RX
737 0077
738 0077 3535 clr CSEN ;End SPI operation
739 0078 3635 clr SBEN ;SPI Disable
740 0079
741 0079 kmov MP1,RX_key_code
742 007B kmov RX_key_code,R1
743 007D
744 007D 1F04 clr BP
745 007E 0003 ret
746 007F
747 007F
748 007F SPI_EN:
749 007F 3722 clr UCC.@UCC_SYSCLK ;12MHz SYSCLK
750 0080 3334 set SIO_CSEN ;SPI Chip Select Function Enable
751 0081 3234 set SIO_CPOL ;rising edge change data
752 0082 1F35 clr SBCR
753 0083
754 0083 ;--SCLK=fSIO
755 0083 3735 clr M1
756 0084 36B5 clr M0
757 0085 37B5 clr CKS ;Fsio=Fsys/2
758 0086
759 0086 3435 clr TRF
760 0087 31B5 set MLS ;MSB shift first
761 0088 3235 set SBEN ;SPI Enable
762 0089 349E clr intc1.@INTC1_ESII ;SPI Interrupt Disable
763 008A 3135 set CSEN ;Chip Select Enable,Start SPI to send TX payload data
764 008B 0003 ret
765 008C
766 008C
767 008C ;***************************************************************
768 008C ; nRF24L01 SPI Config address of TX transmit and RX receive.
769 008C ; 1.Config/Change TX point to RX point 0 ~ 5 Address.
770 008C ; 2.Config/Change RX point Address.
771 008C ; 3.Before use this function,must to check the address value.
"File: NRF24L01.ASM Holtek Cross-Assembler Version 2.86 Page 14
772 008C ; 4.How to use:
773 008C ; a.set TX_ADDRESS_Select.BitNum
774 008C ; b.call nRF_ADDR_WRITE
775 008C ; c.clr TX_ADDRESS_Select.BitNum
776 008C ;***************************************************************
777 008C
778 0000 CODE2 .section PAGE 'code'
779 0000 TX_to_P0_ADDR_Table: ;TX_ADDRESS_Select.0
780 0000 00E1 00E3 DC 0E1h,0E3h,0E5h,0E7h,0E9h;
00E5 00E7 00E9
781 0005 TX_to_P1_ADDR_Table: ;TX_ADDRESS_Select.1
782 0005 00C2 00C3 DC 0C2h,0C3h,0C4h,0C5h,0C6h;
00C4 00C5 00C6
783 000A TX_to_P2_ADDR_Table: ;TX_ADDRESS_Select.2
784 000A 00C2 00C3 DC 0C2h,0C3h,0C4h,0C5h,0C7h;
00C4 00C5 00C7
785 000F TX_to_P3_ADDR_Table: ;TX_ADDRESS_Select.3
786 000F 00C2 00C3 DC 0C2h,0C3h,0C4h,0C5h,0C8h;
00C4 00C5 00C8
787 0014 TX_to_P4_ADDR_Table: ;TX_ADDRESS_Select.4
788 0014 00C2 00C3 DC 0C2h,0C3h,0C4h,0C5h,0C9h;
00C4 00C5 00C9
789 0019 TX_to_P5_ADDR_Table: ;TX_ADDRESS_Select.5
790 0019 00C2 00C3 DC 0C2h,0C3h,0C4h,0C5h,0CAh;
00C4 00C5 00CA
791 001E
792 001E RX_P0_ADDR_Table: ;RX_ADDRESS_Select.0
793 001E 00E1 00E3 DC 0E1h,0E3h,0E5h,0E7h,0E9h;
00E5 00E7 00E9
794 0023 RX_P1_ADDR_Table: ;RX_ADDRESS_Select.1
795 0023 00C2 00C3 DC 0C2h,0C3h,0C4h,0C5h,0C6h;
00C4 00C5 00C6
796 0028 RX_P2_ADDR_Table: ;RX_ADDRESS_Select.2
797 0028 00C7 DC 0C7h;
798 0029 RX_P3_ADDR_Table: ;RX_ADDRESS_Select.3
799 0029 00C8 DC 0C8h;
800 002A RX_P4_ADDR_Table: ;RX_ADDRESS_Select.4
801 002A 00C9 DC 0C9h;
802 002B RX_P5_ADDR_Table: ;RX_ADDRESS_Select.5
803 002B 00CA DC 0CAh;
804 002C
805 002C
806 002C
807 002C nRF_TX_ADDR_WRITE:
808 002C 0700 E mov a,TX_ADDRESS_Select
809 002D 0C00 xor a,00h
810 002E 3D0A sz z
811 002F 0003 ret ;not set any TX_ADDR to write
812 0030
813 0030 KMOV temp_num,Address_Size ;For Address loop 5 times
814 0032
815 0032 2000 R call SPI_EN
816 0033
817 0033 ;=== Address define set for configuation
818 0033
819 0033 3800 E snz TX_ADDRESS_Select.0
820 0034 2800 R jmp $1
821 0035
822 0035 0F00 R mov a,low TX_to_P0_ADDR_Table
823 0036 0087 mov TBLP,a
"File: NRF24L01.ASM Holtek Cross-Assembler Version 2.86 Page 15
824 0037 0F00 R mov a,high TX_to_P0_ADDR_Table
825 0038 009F mov TBHP,a
826 0039 0F30 mov a,30h
827 003A 00B6 MOV SBDR,a
828 003B 2800 R jmp $6
829 003C ;----------------------------------
830 003C $1:
831 003C 3800 E snz TX_ADDRESS_Select.1
832 003D 2800 R jmp $2
833 003E
834 003E 0F00 R mov a,low TX_to_P1_ADDR_Table
835 003F 0087 mov TBLP,a
836 0040 0F00 R mov a,high TX_to_P1_ADDR_Table
837 0041 009F mov TBHP,a
838 0042 0F30 mov a,30h
839 0043 00B6 MOV SBDR,a
840 0044 2800 R jmp $6
841 0045 ;----------------------------------
842 0045 $2:
843 0045 3800 E snz TX_ADDRESS_Select.2
844 0046 2800 R jmp $3
845 0047
846 0047 0F00 R mov a,low TX_to_P2_ADDR_Table
847 0048 0087 mov TBLP,a
848 0049 0F00 R mov a,high TX_to_P2_ADDR_Table
849 004A 009F mov TBHP,a
850 004B 0F30 mov a,30h
851 004C 00B6 MOV SBDR,a
852 004D 2800 R jmp $6
853 004E ;----------------------------------
854 004E $3:
855 004E 3800 E snz TX_ADDRESS_Select.3
856 004F 2800 R jmp $4
857 0050
858 0050 0F00 R mov a,low TX_to_P3_ADDR_Table
859 0051 0087 mov TBLP,a
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -