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

📄 nrf24l01.lst

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