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