📄 mdfan.lst
字号:
760 000192
761 000192 1E1B(1) mov A,DataBuffer
762 000193 1F1E(1) mov test_data0,A
763 000194 C0E7(2) call I2Cout0 ;out ACK
764 000195
765 000195 C10C(2) call I2CreadBit ;Read Data
766 000196 C10C(2) call I2CreadBit
767 000197 C10C(2) call I2CreadBit
768 000198 C10C(2) call I2CreadBit
769 000199 C10C(2) call I2CreadBit
770 00019A C10C(2) call I2CreadBit
771 00019B C10C(2) call I2CreadBit
772 00019C C10C(2) call I2CreadBit
773 00019D 1E1B(1) mov A,DataBuffer
774 00019E 1F1F(1) mov test_data1,A
775 00019F C0DC(2) call I2Cout1 ;out NACK
776 0001A0
777 0001A0 C0D1(2) call I2Cstop ;Stop
778 0001A1 clrwdt
779 0001A1 2D5A(1) MOV A, #5AH
780 0001A2 1FCC(1) MOV WDTR, A
781 0001A3 0E00(2) ret
782 0001A4
783 0001A4 ReloadTestDataError:
784 0001A4 161D(1+S) incms ErrorCount
785 0001A5 0000(1) nop
786 0001A6 2D0A(1) mov A,#10
787 0001A7 221D(1) sub A,ErrorCount
788 0001A8 5A86(1+S) bts1 FC
789 0001A9 491A(1) bset I2CjoinErrorFlag
790 0001AA 8160(2) jmp ReloadTestData_Loop
791 0001AB INCLUDE nRF24L01.ASM
792 0001AB ;*****************************************************************
793 0001AB ;Function:SPI_RW
794 0001AB ;Description:SPI read write 1 byte data
795 0001AB ;input:spi_data
796 0001AB ;output:spi_data
797 0001AB ;*****************************************************************
798 0001AB SPI_RW:
799 0001AB movmi bit_count, #8 ;loop 8 times
800 0001AB 2D08(1) MOV A, #8
801 0001AC 1F11(1) MOV bit_count,A
802 0001AD ReadWrite_Loop:
803 0001AD jb1 spi_data.7, MOSI_High ;MSB first
804 0001AD 5710(1+S) bts0 spi_data.7
805 0001AE 81B1(2) jmp MOSI_High
806 0001AF MOSI_Low: ;MSB=0
807 0001AF 42D5(1) bclr PIN_SPI_MOSI ;MOSI output=L
808 0001B0 81B2(2) jmp Data_Shift_Left
809 0001B1 MOSI_High: ;MSB=1
810 0001B1 4AD5(1) bset PIN_SPI_MOSI ;MOSI output=H
811 0001B2 Data_Shift_Left:
812 0001B2 0B10(1) rlcm spi_data ;spi_data<<1
813 0001B3 4DD5(1) bset PIN_SPI_CLK ;generate ring edge
814 0001B4 jb0 PIN_SPI_MISO, MISO_Low ;read MISO pin
815 0001B4 5FD5(1+S) bts1 PIN_SPI_MISO
816 0001B5 81B8(2) jmp MISO_Low
817 0001B6 MISO_High: ;MISO=H
818 0001B6 4810(1) bset spi_data.0 ;LSB=1
819 0001B7 81B9(2) jmp CLK_Low
820 0001B8 MISO_Low: ;MISO=L
821 0001B8 4010(1) bclr spi_data.0 ;LSB=0
822 0001B9 CLK_Low:
823 0001B9 45D5(1) bclr PIN_SPI_CLK ;clk low
824 0001BA 2611(1+S) decms bit_count ;--bit_count==0?
825 0001BB 81AD(2) jmp ReadWrite_Loop
826 0001BC 42D5(1) bclr PIN_SPI_MOSI ;MOSI low before return
827 0001BD 0E00(2) ret
828 0001BE
829 0001BE ;*****************************************************************
830 0001BE ;Function:SPI_Read_Reg
831 0001BE ;Description:SPI read write 1 byte data from register
832 0001BE ;input:spi_reg
833 0001BE ;output:spi_value
834 0001BE ;*****************************************************************
835 0001BE SPI_Read_Reg:
836 0001BE 43D5(1) bclr PIN_SPI_CSN ;SPI enable
837 0001BF movmm spi_data, spi_reg_addr
838 0001BF 1E12(1) MOV A, spi_reg_addr
839 0001C0 1F10(1) MOV spi_data,A
840 0001C1 C1AB(2) call SPI_RW ;write register adrress
841 0001C2 2B10(1) clr spi_data
842 0001C3 C1AB(2) call SPI_RW ;read register value
843 0001C4 movmm spi_value, spi_data
844 0001C4 1E10(1) MOV A, spi_data
845 0001C5 1F13(1) MOV spi_value,A
846 0001C6 4BD5(1) bset PIN_SPI_CSN ;disable SPI
847 0001C7 0E00(2) ret
848 0001C8
849 0001C8 ;*****************************************************************
850 0001C8 ;Function:SPI_Write_Reg
851 0001C8 ;Description:SPI write 1 byte data to register
852 0001C8 ;input:spi_value,spi_reg_addr
853 0001C8 ;output:spi_status stores the value of register STATUS
854 0001C8 ;*****************************************************************
855 0001C8 SPI_Write_Reg:
856 0001C8 43D5(1) bclr PIN_SPI_CSN ;SPI enable
857 0001C9 movmm spi_data, spi_reg_addr
858 0001C9 1E12(1) MOV A, spi_reg_addr
859 0001CA 1F10(1) MOV spi_data,A
860 0001CB C1AB(2) call SPI_RW ;write register adrress
861 0001CC movmm spi_status, spi_data ;store register "Status" value
862 0001CC 1E10(1) MOV A, spi_data
863 0001CD 1F14(1) MOV spi_status,A
864 0001CE movmm spi_data, spi_value
865 0001CE 1E13(1) MOV A, spi_value
866 0001CF 1F10(1) MOV spi_data,A
867 0001D0 C1AB(2) call SPI_RW ;write register value
868 0001D1 4BD5(1) bset PIN_SPI_CSN
869 0001D2 0E00(2) ret
870 0001D3
871 0001D3
872 0001D3
873 0001D3 ;*****************************************************************
874 0001D3 ;Function:SPI_Read_Buf_Any_Pipe
875 0001D3 ;Description:SPI read data from any Pipe
876 0001D3 ;input:status_temp(from "Status" register)
877 0001D3 ;output:data_buf
878 0001D3 ;*****************************************************************
879 0001D3 SPI_Read_Buf_Any_Pipe:
880 0001D3 0815(1) rrc status_temp ;A<-RRC status_temp
881 0001D4 2A07(1) and A, #07h ;get low 3 bit for Pipe Number
882 0001D5 1411(1) add A, #RX_PW_P0 ;get Pipe address
883 0001D6 1F12(1) mov spi_reg_addr, A ;write the address to read from
884 0001D7 C1BE(2) call SPI_Read_Reg ;read pay load width
885 0001D8 movmm pload_width, spi_value
886 0001D8 1E13(1) MOV A, spi_value
887 0001D9 1F07(1) MOV pload_width,A
888 0001DA ;Rx data and store in data_buf
889 0001DA 2B84(1) clr Y
890 0001DB movmi Z, #data_buf ;@YZ point to data_buf
891 0001DB 2D20(1) MOV A, #data_buf
892 0001DC 1F83(1) MOV Z,A
893 0001DD 43D5(1) bclr PIN_SPI_CSN ;enable SPI
894 0001DE movmi spi_data, #RD_RX_PLOAD
895 0001DE 2D61(1) MOV A, #RD_RX_PLOAD
896 0001DF 1F10(1) MOV spi_data,A
897 0001E0 C1AB(2) call SPI_RW ;we are now reading Rx pay load
898 0001E1 Receive_Loop:
899 0001E1 2B10(1) clr spi_data
900 0001E2 C1AB(2) call SPI_RW ;read 1 byte data
901 0001E3 movmm @YZ, spi_data ;store it to data_buf
902 0001E3 1E10(1) MOV A, spi_data
903 0001E4 1FE7(1) MOV @YZ,A
904 0001E5 inc Z ;point to the next byte in data_buf
905 0001E5 1683(1+S) INCMS Z
906 0001E6 0000(1) NOP
907 0001E7 djnz pload_width, Receive_Loop ;data end?
908 0001E7 2607(1+S) decms pload_width
909 0001E8 81E1(2) jmp Receive_Loop
910 0001E9 4BD5(1) bset PIN_SPI_CSN ;disable SPI
911 0001EA 0E00(2) ret
912 0001EB
913 0001EB
914 0001EB ;*****************************************************************
915 0001EB ;Function:Tx_Mode
916 0001EB ;Description:force the device go into Tx mode,and a CE puls trriger Tx data event
917 0001EB ;input:none
918 0001EB ;output:none
919 0001EB ;*****************************************************************
920 0001EB Tx_Mode:
921 0001EB 46D5(1) bclr PIN_CE_nRF24L01 ;CE=0
922 0001EC /*
923 0001EC bclr PIN_SPI_CSN ;Set TX address device,to Writer
924 0001EC movmi spi_data, #WRITE_REG+TX_ADDR
925 0001EC call SPI_RW
926 0001EC movmi spi_data, #TX_ADDR0_DEF
927 0001EC call SPI_RW
928 0001EC movmi spi_data, #TX_ADDR1_DEF
929 0001EC call SPI_RW
930 0001EC movmi spi_data, #TX_ADDR2_DEF
931 0001EC call SPI_RW
932 0001EC movmi spi_data, #TX_ADDR3_DEF
933 0001EC call SPI_RW
934 0001EC movmi spi_data, #TX_ADDR4_DEF
935 0001EC call SPI_RW
936 0001EC bset PIN_SPI_CSN
937 0001EC
938 0001EC nop
939 0001EC nop
940 0001EC
941 0001EC bclr PIN_SPI_CSN ;Use the same address on the RX device as the TX device
942 0001EC movmi spi_data, #WRITE_REG+RX_ADDR_P0
943 0001EC call SPI_RW
944 0001EC movmi spi_data, #TX_ADDR0_DEF
945 0001EC call SPI_RW
946 0001EC movmi spi_data, #TX_ADDR1_DEF
947 0001EC call SPI_RW
948 0001EC movmi spi_data, #TX_ADDR2_DEF
949 0001EC call SPI_RW
950 0001EC movmi spi_data, #TX_ADDR3_DEF
951 0001EC call SPI_RW
952 0001EC movmi spi_data, #TX_ADDR4_DEF
953 0001EC call SPI_RW
954 0001EC bset PIN_SPI_CSN
955 0001EC
956 0001EC nop
957 0001EC nop
958 0001EC
959 0001EC movmi spi_reg_addr, #WRITE_REG+EN_AA
960 0001EC movmi spi_value, #0x01 ;Enable Auto.Ack:Pipe0
961 0001EC call SPI_Write_Reg
962 0001EC
963 0001EC movmi spi_reg_addr, #WRITE_REG+EN_RXADDR
964 0001EC movmi spi_value, #0x01 ;Enable Pipe0
965 0001EC call SPI_Write_Reg
966 0001EC
967 0001EC movmi spi_reg_addr, #WRITE_REG+SETUP_RETR ;Tx configuration
968 0001EC movmi spi_value, #0x1a ;500us+ 86us, 10 retrans...
969 0001EC call SPI_Write_Reg
970 0001EC
971 0001EC movmi spi_reg_addr, #WRITE_REG+RF_CH
972 0001EC ;movmi spi_value, #TX_CH_DEF ;Select default RF channel
973 0001EC movmm spi_value, channel ;select RF channel
974 0001EC call SPI_Write_Reg
975 0001EC
976 0001EC movmi spi_reg_addr, #WRITE_REG+RF_SETUP
977 0001EC movmi spi_value, #0x0f ;TX_PWR:0dBm, Datarate:2Mbps, LNA:HCURR
978 0001EC call SPI_Write_Reg
979 0001EC */
980 0001EC movmi spi_reg_addr, #WRITE_REG+CONFIG
981 0001EC 2D20(1) MOV A, #WRITE_REG+CONFIG
982 0001ED 1F12(1) MOV spi_reg_addr,A
983 0001EE movmi spi_value, #0x0e ;Set PWR_UP bit, enable CRC(2 bytes) & Prim:TX. RX_DR enabled..
984 0001EE 2D0E(1) MOV A, #0x0e
985 0001EF 1F13(1) MOV spi_value,A
986 0001F0 C1C8(2) call SPI_Write_Reg
987 0001F1 0E00(2) ret
988 0001F2 ;**********************************************************
989 0001F2 Write_Tx_Pload:
990 0001F2 43D5(1) bclr PIN_SPI_CSN ;Writes data to TX payload
991 0001F3 movmi spi_data, #WR_TX_PLOAD
992 0001F3 2DA0(1) MOV A, #WR_TX_PLOAD
993 0001F4 1F10(1) MOV spi_data,A
994 0001F5 C1AB(2) call SPI_RW
995 0001F6 movmm spi_data, command
996 0001F6 1E20(1) MOV A, command
997 0001F7 1F10(1) MOV spi_data,A
998 0001F8 C1AB(2) call SPI_RW
999 0001F9 movmm spi_data, local_access_code0
1000 0001F9 1E08(1) MOV A, local_access_code0
1001 0001FA 1F10(1) MOV spi_data,A
1002 0001FB C1AB(2) call SPI_RW
1003 0001FC movmm spi_data, local_access_code1
1004 0001FC 1E09(1) MOV A, local_access_code1
1005 0001FD 1F10(1) MOV spi_data,A
1006 0001FE C1AB(2) call SPI_RW
1007 0001FF movmm spi_data, local_access_code2
1008 0001FF 1E0A(1) MOV A, local_access_code2
1009 000200 1F10(1) MOV spi_data,A
1010 000201 C1AB(2) call SPI_RW
1011 000202 4BD5(1) bset PIN_SPI_CSN
1012 000203 0E00(2) ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -