⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nrf24l01.lst

📁 Holtek audio decoder , headset 参考范例
💻 LST
📖 第 1 页 / 共 4 页
字号:
"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 + -