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

📄 nrf24l01.lst

📁 Holtek audio decoder , headset 参考范例
💻 LST
📖 第 1 页 / 共 4 页
字号:
"File: NRF24L01.ASM  Holtek Cross-Assembler  Version 2.86      Page 1


   1  0000              ;*********************************************************************
   2  0000              ;	nRF Library
   3  0000              ;	Author : hongyuan lai
   4  0000              ;	EMail  : yuan_lai@holtek.com.tw
   5  0000              ;	Date   : 2006/09/26
   6  0000              ;*********************************************************************
   7  0000              #include		ht82a850r.inc


   8  0000              #include		const.inc


   9  0000              #include		nRF24L01.inc


  10  0000              #include		macro.asm


  11  0000              ;=====================================================================
  12  0000              ;	nRF24L01 function for ht82a850r
  13  0000              ;=====================================================================
  14  0000              ; 
  15  0000              ;
  16  0000              ;
  17  0000              ;
  18  0000              ;
  19  0000              
  20  0000              
  21  0000              extern		IRQ_counter:byte
  22  0000              extern		TX_FIFO_STACK:byte
  23  0000              extern		RX_FIFO_STACK:byte
  24  0000              extern		TX_FIFO_ADDR:byte
  25  0000              extern		TX_FIFO_ADDR1:byte
  26  0000              extern		RX_FIFO_ADDR:byte
  27  0000              extern		RX_FIFO_ADDR1:byte
  28  0000              extern		ADC_FIFO_COUNTER:byte
  29  0000              extern		DAC_FIFO_COUNTER:byte
  30  0000              extern		TX_FIFO_ADDR_temp:byte
  31  0000              extern		RX_FIFO_ADDR_temp:byte
  32  0000              extern		RX_FIFO_Status:byte
  33  0000              extern		TX_key_code:byte
  34  0000              extern		channel_1:byte
  35  0000              extern		channel_2:byte
  36  0000              
  37  0000              extern		bFlag_IRQ_Flag:bit
  38  0000              extern		bFlag_IRQ_Flag2:bit
  39  0000              extern		bFlag_TX_FIFO:bit
  40  0000              extern		bFlag_TX_FIFO_Select:bit
  41  0000              extern		bFlag_TX_FIFO_Select1:bit
  42  0000              extern		bFlag_RX_FIFO_Select:bit
  43  0000              extern		bFlag_RX_FIFO_Select1:bit
  44  0000              extern		bFlag_TX_Mode:bit
  45  0000              extern		bFlag_RX_Mode:bit
  46  0000              extern		bFlag_RX_SPI_ok:bit
  47  0000              extern		bFlag_8k_fast:bit
  48  0000              extern		bFlag_End_SPI_Operation:bit
  49  0000              
  50  0000              extern		temp_num:byte
  51  0000              extern		table_data:byte
"File: NRF24L01.ASM  Holtek Cross-Assembler  Version 2.86      Page 2

  52  0000              extern		COMMAND_L:byte
  53  0000              extern		COMMAND_H:byte
  54  0000              extern		FIFO_TEMP:byte
  55  0000              extern		RF_number:byte
  56  0000              
  57  0000              extern		TX_ADDRESS_Select:byte
  58  0000              extern		RX_ADDRESS_Select:byte
  59  0000              extern		nRF_ADDR_value:byte
  60  0000              
  61  0000              extern		Delay_1:byte
  62  0000              extern		Delay_2:byte
  63  0000              extern		Delay_3:byte
  64  0000              
  65  0000              
  66  0000              ;***************************************************************
  67  0000              ;		nRF24L01 initialize nRF24L01 program Start!!
  68  0000              ;		This Program is initialized in 850R
  69  0000              ;***************************************************************
  70  0000              nRF_initial:
  71  0000              ;--pin assignmant
  72  0000  1F15        		clr	pbc
  73  0001  3497        		clr	PCC.1
  74  0002  3417        		clr	PCC.0
  75  0003  3597        		clr	PCC.3  				;MCU CE  pin O/P
  76  0004  3117        		set	PCC.2				;MCU IRQ pin I/P
  77  0005              		kmov 	PC,0FFH
  78  0007  3596        		clr 	NRF_CE				;At configuration Mode CE muse be low
  79  0008  2000     R  		call	DAC_init
  80  0009              		kmov	PGA_CTRL,080h
  81  000B  2000     R  		call	MCU_16M
  82  000C              		
  83  000C              ;--set PWR_UP and delay for 1.5ms into standby mode after into RX mode
  84  000C              		kmov 	COMMAND_H,20H		
  85  000E              		kmov 	COMMAND_L,3BH		
  86  0010  3000     E  		set	bFlag_End_SPI_Operation		;set 2 SPI operation (16 bit)
  87  0011  2000     R  		call 	NRF_SPI_16bit			;send SPI Command 
  88  0012  2000     R  		call 	Delay_1500us			;delay 1.518ms for power down -> standby
  89  0013  2000     R  		call 	Delay_1500us			;delay 1.518ms
  90  0014              
  91  0014              ;--for clean data in fifo
  92  0014              ClearFIFO:
  93  0014  2000     R  		call	FlushTXFIFO			;clear TX FIFO
  94  0015  2000     R  		call	FlushRXFIFO			;clear RX FIFO
  95  0016  2000     R  		call	Clear_NRF_IRQ			;clear IRQ
  96  0017  3916        		SNZ	NRF_IRQ
  97  0018  2800     R  		jmp	ClearFIFO			
  98  0019  2000     R  		call 	Delay_1500us			;delay 1.518ms
  99  001A              
 100  001A              ;--initial register identity
 101  001A              		kmov 	temp_num,12H 			;initial 18 data (1 table) 
 102  001C  2000     R  		call 	NRF_TABLE_init			;initial nRF24L01 TX/RX common option
 103  001D              ;--initial TX/RX ADDR
 104  001D  3000     E  		set	TX_ADDRESS_Select.0		;Write TX P0: E0 E0 E0 E0 E0 H
 105  001E  2000     R  		call	nRF_TX_ADDR_WRITE
 106  001F  3400     E  		clr	TX_ADDRESS_Select.0
 107  0020              
 108  0020              		kmov	RX_ADDRESS_Select,03Fh
 109  0022              $1:		
 110  0022  2000     R  		call	nRF_RX_ADDR_WRITE
 111  0023  0700     E  		mov	a,RX_ADDRESS_Select
"File: NRF24L01.ASM  Holtek Cross-Assembler  Version 2.86      Page 3

 112  0024  0C00        		xor	a,00h
 113  0025  390A        		snz	z
 114  0026  2800     R  		jmp	$1
 115  0027              		
 116  0027              		kmov	RX_ADDRESS_Select,07Fh
 117  0029              $2:
 118  0029  2000     R  		call	nRF_RX_ADDR_READ
 119  002A  0700     E  		mov	a,RX_ADDRESS_Select
 120  002B  0C00        		xor	a,00h
 121  002C  390A        		snz	z
 122  002D  2800     R  		jmp	$2
 123  002E              ;--variable define	    
 124  002E              		kmov	TX_FIFO_ADDR,(OFFSET TX_FIFO_STACK)
 125  0030  0700     E  		mov	A,TX_FIFO_ADDR
 126  0031  0080     E  		mov	TX_FIFO_ADDR_temp,A		
 127  0032  0B20        		add	A,20H
 128  0033  0080     E  		mov	TX_FIFO_ADDR1,A		
 129  0034              					
 130  0034              		kmov	RX_FIFO_ADDR,(OFFSET RX_FIFO_STACK)	
 131  0036  0700     E  		mov	A,RX_FIFO_ADDR
 132  0037  0080     E  		mov	RX_FIFO_ADDR_temp,A		
 133  0038  0B20        		ADD	A,20H
 134  0039  0080     E  		mov	RX_FIFO_ADDR1,A
 135  003A              		
 136  003A              		kmov	ADC_FIFO_COUNTER,02h		; initial value 2006.08.28
 137  003C              		kmov	DAC_FIFO_COUNTER,02h
 138  003E  3400     E  		clr	bFlag_RX_FIFO_Select		; initial RX SPI offset
 139  003F  3000     E  		set	bFlag_RX_FIFO_Select1		; initial play offset
 140  0040  3000     E  		set	bFlag_TX_FIFO_Select		; initial TX SPI offset
 141  0041  3400     E  		clr	bFlag_TX_FIFO_Select1		; initial rec offset
 142  0042  3000     E  		set	bFlag_8k_fast
 143  0043              		kmov	IRQ_counter,055h
 144  0045              		
 145  0045              		kmov	channel_1,15h
 146  0047              		kmov	channel_2,1fh
 147  0049              		kmov	RF_number,channel_1
 148  004B  2000     R  		call	RF_Channel_set
 149  004C              									
 150  004C  3196        		set	NRF_CE
 151  004D  2000     R  		call 	Delay_1500us			;delay 1.518ms
 152  004E  2000     R  		call 	Delay_1500us			;delay 1.518ms
 153  004F              		
 154  004F  0003        ret	
 155  0050              
 156  0050              ;***************************************************************
 157  0050              ;		nRF24L01 TX Examine 
 158  0050              ;***************************************************************
 159  0050              nRF_TX_Transmit:
 160  0050  3800     E  		snz	bFlag_TX_FIFO_Select		; swapping TA_RAM
 161  0051  2800     R  		jmp	TX_DATA_CONFIG1			; 1 to TX_RAM 1
 162  0052  2800     R  		jmp	TX_DATA_CONFIG2			; 0 to TX_RAM 2
 163  0053              
 164  0053              TX_DATA_CONFIG1:
 165  0053  3C00     E  		sz	bFlag_TX_FIFO_Select1
 166  0054  2800     R  		jmp	TX_DATA_CONFIG2
 167  0055              			
 168  0055              		kmov	MP1,TX_FIFO_ADDR	
 169  0057  2000     R  		call 	TX_Payload
 170  0058              		
 171  0058  3000     E  		set	bFlag_TX_FIFO_Select		; switch to TX_RAM 2  		
"File: NRF24L01.ASM  Holtek Cross-Assembler  Version 2.86      Page 4

 172  0059  2800     R  		jmp	TX_DATA_CONFIG3
 173  005A              TX_DATA_CONFIG2:
 174  005A  3800     E  		snz	bFlag_TX_FIFO_Select1
 175  005B  2800     R  		jmp	TX_DATA_CONFIG1
 176  005C              		
 177  005C              		kmov	MP1,TX_FIFO_ADDR1
 178  005E  2000     R  		call 	TX_Payload		
 179  005F              		
 180  005F  3400     E  		clr	bFlag_TX_FIFO_Select		; switch to TX_RAM 1
 181  0060              TX_DATA_CONFIG3:
 182  0060  2000     R  		call 	Pluse_CE_to_send
 183  0061                		;call	Clear_NRF_TX_IRQ
 184  0061  0003        ret
 185  0062              
 186  0062              
 187  0062              ;***************************************************************
 188  0062              ;		nRF24L01 RX Examine 
 189  0062              ;***************************************************************
 190  0062              nRF_RX_Receive_IRQ:
 191  0062  0700     E  		mov	a,RF_number
 192  0063  0400     E  		xor	a,channel_1
 193  0064  390A        		snz	z
 194  0065  2800     R  		jmp	$1
 195  0066  3012        		set	pa.0
 196  0067  1F00     E  		clr	IRQ_counter
 197  0068  3000     E  		set	bFlag_IRQ_Flag
 198  0069  2000     R  		call	Clear_NRF_RX_IRQ
 199  006A              $1:		
 200  006A  0700     E  		mov	a,RF_number
 201  006B  0400     E  		xor	a,channel_2
 202  006C  390A        		snz	z
 203  006D  0003        		ret
 204  006E              		kmov	IRQ_counter,08h
 205  0070  2000     R  		call	Clear_NRF_RX_IRQ
 206  0071  2000     R  		call	Delay_30us		;for early get second IRQ
 207  0072  3000     E  		set	bFlag_IRQ_Flag2		;read second payload				
 208  0073  0003        ret
 209  0074              
 210  0074              
 211  0074              nRF_RX_Receive:
 212  0074  3C00     E  		sz	bFlag_IRQ_Flag
 213  0075  2800     R  		jmp	RX_FATA_CONFIG
 214  0076              		;sz	NRF_IRQ
 215  0076  3800     E  		snz	bFlag_IRQ_Flag2
 216  0077  0003        		ret
 217  0078              
 218  0078              RX_FATA_CONFIG:
 219  0078  3114        set	pb2
 220  0079  3400     E  		clr	bFlag_IRQ_Flag2
 221  007A  3800     E  		snz	bFlag_RX_FIFO_Select
 222  007B  2800     R  		jmp	RX_DATA_CONFIG1
 223  007C  2800     R  		jmp	RX_DATA_CONFIG2
 224  007D              		
 225  007D              ;------------- FIFO Stack 1 ----------------		
 226  007D              RX_DATA_CONFIG1:
 227  007D  3C00     E  		sz	bFlag_RX_FIFO_Select1
 228  007E  2800     R  		jmp	RX_DATA_CONFIG2	
 229  007F              		
 230  007F  0700     E  		mov	A,RX_FIFO_ADDR	 	
 231  0080  0083        		mov	MP1,A			
"File: NRF24L01.ASM  Holtek Cross-Assembler  Version 2.86      Page 5

 232  0081  2000     R  		call	RX_Payload
 233  0082              
 234  0082  3000     E  		set	bFlag_RX_FIFO_Select		;switch to RAM2
 235  0083  2800     R  		jmp	RX_DATA_CONFIG3
 236  0084              
 237  0084              ;------------- FIFO Stack 0 ----------------				
 238  0084              RX_DATA_CONFIG2:
 239  0084  3800     E  		snz	bFlag_RX_FIFO_Select1
 240  0085  2800     R  		jmp	RX_DATA_CONFIG1	
 241  0086              		
 242  0086  0700     E  		mov	A,RX_FIFO_ADDR1
 243  0087  0083        		mov	MP1,A			
 244  0088  2000     R  		call	RX_Payload		
 245  0089              
 246  0089  3400     E  		clr	bFlag_RX_FIFO_Select		;switch to RAM1
 247  008A              RX_DATA_CONFIG3:
 248  008A  3514        clr	pb2
 249  008B              		;call	Clear_NRF_RX_IRQ		
 250  008B  0003        ret
 251  008C              
 252  008C              
 253  008C              ;***************************************************************
 254  008C              ;		nRF24L01 TX/RX mode switch Examine 
 255  008C              ;***************************************************************
 256  008C              TX_RX_Switch:
 257  008C  3C00     E  		sz	bFlag_TX_Mode
 258  008D  2800     R  		jmp	$2
 259  008E  3C00     E  		sz	bFlag_RX_Mode
 260  008F  2800     R  		jmp	$1
 261  0090  2800     R  		jmp	$3
 262  0091              	
 263  0091              $1:	
 264  0091  3196        		set	NRF_CE
 265  0092  2000     R  		call	RX_MODE
 266  0093  3400     E  		clr	bFlag_RX_Mode		
 267  0094  2800     R  		jmp	$3
 268  0095              $2:	
 269  0095  3596        		clr	NRF_CE	
 270  0096  2000     R  		call	TX_MODE
 271  0097  3400     E  		clr	bFlag_TX_Mode
 272  0098              $3:
 273  0098              
 274  0098  0003        ret
 275  0099              
 276  0099              TX_mode_set:
 277  0099  3596        		clr	NRF_CE
 278  009A  2000     R  		call	TX_MODE
 279  009B  0003        ret
 280  009C              
 281  009C              RX_mode_set:
 282  009C  2000     R  		call	RX_MODE
 283  009D  3196        		set	NRF_CE		
 284  009E  0003        ret	
 285  009F              
 286  009F              
 287  009F              ;***************************************************************
 288  009F              ;		nRF24L01 play/rec int function 
 289  009F              ;***************************************************************
 290  009F              nRF_int:
 291  009F              		kmov	BP,001h				;switch to RAM Bank1

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -