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

📄 nrf24l01.lst

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

 292  00A1  3412        		clr	pa.0
 293  00A2              
 294  00A2              	;-------- 8K int fast than IRQ	
 295  00A2              			
 296  00A2  0700     E  		mov	a,DAC_FIFO_COUNTER
 297  00A3  0C20        		xor	a,020h
 298  00A4  390A        		snz	z
 299  00A5  2800     R  		jmp	$10
 300  00A6  3C00     E  		sz	bFlag_RX_FIFO_Select1
 301  00A7  2800     R  		jmp	$1
 302  00A8              $2:		
 303  00A8  3800     E  		snz	bFlag_RX_FIFO_Select
 304  00A9  2800     R  		jmp	$8
 305  00AA              		xmov	RX_FIFO_ADDR_temp,RX_FIFO_ADDR
 306  00AC  3000     E  		set	bFlag_RX_FIFO_Select1		
 307  00AD              		xmov	DAC_FIFO_COUNTER,02h
 308  00AF              		kmov	TX_FIFO_ADDR_temp,TX_FIFO_ADDR
 309  00B1  3000     E  		set     bFlag_TX_FIFO_Select1		
 310  00B2              		xmov	ADC_FIFO_COUNTER,02h		
 311  00B4  3314        set	pb6				
 312  00B5  2800     R  		jmp	$10
 313  00B6              $1:		
 314  00B6  3C00     E  		sz	bFlag_RX_FIFO_Select
 315  00B7  2800     R  		jmp	$8
 316  00B8              		xmov	RX_FIFO_ADDR_temp,RX_FIFO_ADDR1
 317  00BA  3400     E  		clr	bFlag_RX_FIFO_Select1		
 318  00BB              		xmov	DAC_FIFO_COUNTER,02h
 319  00BD              		kmov	TX_FIFO_ADDR_temp,TX_FIFO_ADDR1
 320  00BF  3400     E  		clr     bFlag_TX_FIFO_Select1		
 321  00C0              		xmov	ADC_FIFO_COUNTER,02h
 322  00C2  3714        clr	pb6		
 323  00C3  2800     R  		jmp	$10
 324  00C4              $8:
 325  00C4              		xmov	DAC_FIFO_COUNTER,01eh
 326  00C6              		xmov	ADC_FIFO_COUNTER,01eh
 327  00C8  2800     R  		jmp	$10	
 328  00C9              
 329  00C9              $10:			
 330  00C9              		
 331  00C9              	;------- RAM to DAC (play)
 332  00C9              		xmov	FIFO_TEMP,WDTS			;save WDT
 333  00CB              		xmov	WDTS,01010000b			;dac write mode  	
 334  00CD  0700     E  		mov     A,RX_FIFO_ADDR_temp		;RX ADDRESS start
 335  00CE  0300     E  		ADD     A,DAC_FIFO_COUNTER				
 336  00CF  0083        		mov     MP1,A				
 337  00D0              		kmov	DAC_LIMIT_L,R1
 338  00D2  1483        		inc     MP1
 339  00D3              	   	kmov	DAC_LIMIT_H,R1
 340  00D5  1480     E  		inc     DAC_FIFO_COUNTER
 341  00D6  1480     E  		inc     DAC_FIFO_COUNTER
 342  00D7              			
 343  00D7              	;------- write DAC trigger
 344  00D7  31AF        		set	DAC_WR.3
 345  00D8  0000        		nop
 346  00D9  35AF        		clr	DAC_WR.3
 347  00DA  0000        		nop	
 348  00DB              		xmov	WDTS,FIFO_TEMP 
 349  00DD              	
 350  00DD              	;------- ADC to RAM (rec)
 351  00DD  0700     E  		mov     a,TX_FIFO_ADDR_temp
"File: NRF24L01.ASM  Holtek Cross-Assembler  Version 2.86      Page 7

 352  00DE  0300     E  		add     a,ADC_FIFO_COUNTER
 353  00DF  0083        		mov     mp1,a
 354  00E0              		kmov    R1,RECORD_DATA_L
 355  00E2  1483        		inc     mp1
 356  00E3              		kmov	R1,RECORD_DATA_H
 357  00E5  1480     E  		inc     ADC_FIFO_COUNTER
 358  00E6  1480     E  		inc     ADC_FIFO_COUNTER		
 359  00E7              	 
 360  00E7              	;--------- IRQ check
 361  00E7  3916        		snz	NRF_IRQ
 362  00E8  2000     R  		call	nRF_RX_Receive_IRQ
 363  00E9              		 
 364  00E9              	;--------- TX/RX mode flag
 365  00E9  0700     E  		mov	a,IRQ_counter
 366  00EA  0C00        		xor	a,000h
 367  00EB  390A        		snz	z
 368  00EC  2800     R  		jmp	$17		
 369  00ED  2000     R  		call	TX_mode_set
 370  00EE  2000     R  		call	nRF_TX_Transmit
 371  00EF              $17:
 372  00EF              	;------- RX read			
 373  00EF  0700     E  		mov	a,IRQ_counter
 374  00F0  0C01        		xor	a,001h
 375  00F1  3D0A        		sz	z
 376  00F2  2000     R  		call	nRF_RX_Receive
 377  00F3              
 378  00F3              	;------- RX mode switch
 379  00F3  0700     E  		mov	a,IRQ_counter
 380  00F4  0C03        		xor	a,03h
 381  00F5  390A        		snz	z
 382  00F6  2800     R  		jmp	$19
 383  00F7  2000     R  		call	Delay_30us
 384  00F8              		kmov	RF_number,channel_2
 385  00FA  2000     R  		call	RF_Channel_set		
 386  00FB  2000     R  		call	RX_mode_set	
 387  00FC              $19:
 388  00FC              	;------- Second transmission at channel 0Bh
 389  00FC  0700     E  		mov	a,IRQ_counter
 390  00FD  0C08        		xor	a,08h
 391  00FE  390A        		snz	z
 392  00FF  2800     R  		jmp	$18
 393  0100  2000     R  		call	TX_mode_set
 394  0101  2000     R  		call	TX_reuse_pl
 395  0102  2000     R  		call	Pluse_CE_to_send			
 396  0103              $18:
 397  0103              	;------- RX read
 398  0103  0700     E  		mov	a,IRQ_counter
 399  0104  0C09        		xor	a,009h
 400  0105  390A        		snz	z
 401  0106  2800     R  		jmp	$22
 402  0107  3800     E  		snz	bFlag_IRQ_Flag
 403  0108  2000     R  		call	nRF_RX_Receive
 404  0109  3C00     E  		sz	bFlag_IRQ_Flag
 405  010A  2000     R  		call	FlushRXFIFO
 406  010B              $22:		
 407  010B              	;------- RX mode switch
 408  010B  0700     E  		mov	a,IRQ_counter
 409  010C  0C0B        		xor	a,0Bh
 410  010D  390A        		snz	z
 411  010E  2800     R  		jmp	$20
"File: NRF24L01.ASM  Holtek Cross-Assembler  Version 2.86      Page 8

 412  010F              		kmov	RF_number,channel_1
 413  0111  2000     R  		call	RF_Channel_set		
 414  0112  2000     R  		call	RX_mode_set
 415  0113  3400     E  		clr	bFlag_IRQ_Flag		
 416  0114              $20:
 417  0114              	;-------auto handshake for loss channel1 IRQ
 418  0114  0700     E  		mov	a,IRQ_counter
 419  0115  0C14        		xor	a,014h
 420  0116  390A        		snz	z
 421  0117  2800     R  		jmp	$21
 422  0118  3214        		set	pb4
 423  0119              		kmov	RF_number,channel_2
 424  011B  2000     R  		call	RF_Channel_set		
 425  011C  2000     R  		call	RX_mode_set	
 426  011D  3614        		clr	pb4
 427  011E              $21:	
 428  011E              		
 429  011E  1480     E  		inc	IRQ_counter	
 430  011F              
 431  011F  0003        ret		
 432  0120              
 433  0120              ;***************************************************************
 434  0120              ;		nRF24L01 TX/RX Mode toogle 
 435  0120              ;		1.This function is for device toogle PTX/PRX 
 436  0120              ;		2.only toogle Chip's TX/RX mode. 
 437  0120              ;		3.COMMAND_H: first  send Address
 438  0120              ;		  COMMADD_L: second send Register data setting
 439  0120              ;		4.TX/RX payload
 440  0120              ;***************************************************************
 441  0120              RF_Channel_set:
 442  0120              		kmov	COMMAND_H,25H
 443  0122              		kmov	COMMAND_L,RF_number
 444  0124  3000     E  		set	bFlag_End_SPI_Operation
 445  0125  2000     R  		call	NRF_SPI_16bit
 446  0126  0003        ret
 447  0127              
 448  0127              TX_MODE:
 449  0127              							;20H + 00H = Write register command+ Register address  
 450  0127              		kmov	COMMAND_H,20H			;Send SPI Command of Write Register and address is 00H
 451  0129              		kmov	COMMAND_L,7AH			;Setup config register PTX (TX Mode) bit 0=0:PTX
 452  012B  3000     E  		set	bFlag_End_SPI_Operation
 453  012C  2000     R  		call	NRF_SPI_16bit
 454  012D  0003        ret
 455  012E              
 456  012E              RX_MODE:
 457  012E              							;20H + 00H = Write register command + Register address
 458  012E              		kmov	COMMAND_H,20H			;Send SPI Command of Write Register
 459  0130              		kmov	COMMAND_L,3BH			;Setup config register PRX (RX Mode) bit 0=1:PRX
 460  0132  3000     E  		set	bFlag_End_SPI_Operation
 461  0133  2000     R  		call	NRF_SPI_16bit
 462  0134  0003        ret
 463  0135              
 464  0135              TX_reuse_pl:
 465  0135              		kmov	COMMAND_H,11100011b
 466  0137  3400     E  		clr	bFlag_End_SPI_Operation
 467  0138  2000     R  		call	NRF_SPI_16bit
 468  0139  0003        ret
 469  013A              
 470  013A              TX_Payload:
 471  013A              		KMOV	COMMAND_H,NRF_CMD_TX_PAYLOAD	;get status register
"File: NRF24L01.ASM  Holtek Cross-Assembler  Version 2.86      Page 9

 472  013C  2000     R  		call	NRF_SPI_TX_payload
 473  013D  0003        ret
 474  013E              
 475  013E              RX_Payload:
 476  013E              		KMOV	COMMAND_H,NRF_CMD_RX_PAYLOAD	;get status register
 477  0140  2000     R  		call	NRF_SPI_RX_payload
 478  0141  0003        ret
 479  0142              
 480  0142              DAC_init:
 481  0142  339C        		set	USVC.7
 482  0143  0709        		mov	a,WDTS
 483  0144  0080     E  		mov	FIFO_TEMP,a
 484  0145  0F50        		mov	a,01010000b
 485  0146  0089        		mov	WDTS,a
 486  0147  1F2D        		clr	[02DH]
 487  0148  0F80        		mov	a,80h
 488  0149  00AE        		mov	[02EH],a
 489  014A  0000        		nop	
 490  014B  31AF        		Set	[02FH].3
 491  014C  0000        		nop	
 492  014D  35AF        		clr	[02FH].3
 493  014E  3434        		clr	DA_L_ENB 			;DA Left Channel Enable
 494  014F  0000        		nop
 495  0150  34B4        		clr	DA_R_ENB 			;DA Right Channel Enable
 496  0151  0000        		nop
 497  0152  0003        ret
 498  0153              
 499  0153              Delay_1500us:
 500  0153  0F06        		mov	a,06H
 501  0154  0080     E  		mov	Delay_1,a
 502  0155  0FF0        		mov	a,0F0H
 503  0156  0080     E  		mov	Delay_2,a
 504  0157              Delay_1500us_Wait:
 505  0157  1780     E  		SDZ	Delay_2
 506  0158  2800     R  		JMP	Delay_1500us_Wait
 507  0159  1780     E  		SDZ	Delay_1
 508  015A  2800     R  		JMP	Delay_1500us_Wait
 509  015B  0003        		RET
 510  015C              		
 511  015C              Delay_30us:
 512  015C  0F2A        		mov	a,02AH
 513  015D  0080     E  		mov	Delay_1,a
 514  015E              Delay_30us_Wait:
 515  015E  1780     E  		SDZ	Delay_1
 516  015F  2800     R  		JMP	Delay_30us_Wait
 517  0160  0003        		RET		
 518  0161              
 519  0161              ;***************************************************************
 520  0161              ;		nRF24L01 
 521  0161              ;		1.Clear TX FIFO / RX FIFO / IRQ
 522  0161              ;		2.REUSE_TX_PL
 523  0161              ;		3.NOP Command
 524  0161              ;***************************************************************
 525  0161              Clear_NRF_TX_IRQ:
 526  0161              		kmov 	COMMAND_H,27H		
 527  0163              		kmov 	COMMAND_L,20H	
 528  0165  3000     E  		set	bFlag_End_SPI_Operation	
 529  0166  2000     R  		call 	NRF_SPI_16bit			;send SPI Command
 530  0167  0003        ret
 531  0168              
"File: NRF24L01.ASM  Holtek Cross-Assembler  Version 2.86      Page 10

 532  0168              Clear_NRF_RX_IRQ:
 533  0168              		kmov 	COMMAND_H,27H		
 534  016A              		kmov 	COMMAND_L,40H	
 535  016C  3000     E  		set	bFlag_End_SPI_Operation	
 536  016D  2000     R  		call 	NRF_SPI_16bit			;send SPI Command
 537  016E  0003        ret
 538  016F              
 539  016F              Clear_NRF_IRQ:
 540  016F              		kmov 	COMMAND_H,27H		
 541  0171              		kmov 	COMMAND_L,70H	
 542  0173  3000     E  		set	bFlag_End_SPI_Operation	
 543  0174  2000     R  		call 	NRF_SPI_16bit			;send SPI Command
 544  0175  0003        ret
 545  0176              
 546  0176              FlushTXFIFO:
 547  0176              		kmov	COMMAND_H,NRF_CMD_FLUSH_TX
 548  0178  3400     E  		clr	bFlag_End_SPI_Operation	
 549  0179  2000     R  		call 	NRF_SPI_16bit			;send SPI Command
 550  017A  2000     R  		call	Clear_NRF_IRQ
 551  017B  0003        ret
 552  017C              
 553  017C              FlushRXFIFO:
 554  017C              		kmov	COMMAND_H,NRF_CMD_FLUSH_RX
 555  017E  3400     E  		clr	bFlag_End_SPI_Operation	
 556  017F  2000     R  		call 	NRF_SPI_16bit			;send SPI Command
 557  0180  2000     R  		call	Clear_NRF_IRQ
 558  0181              
 559  0181  0003        ret
 560  0182              
 561  0182              REUSETXPL:
 562  0182              		kmov	COMMAND_H,NRF_CMD_REUSE_TX_PL
 563  0184  3400     E  		clr	bFlag_End_SPI_Operation	
 564  0185  2000     R  		call 	NRF_SPI_16bit			;send SPI Command
 565  0186  0003        ret
 566  0187              
 567  0187              NOPCommand:
 568  0187              		kmov	COMMAND_H,NRF_CMD_NOP
 569  0189  3400     E  		clr	bFlag_End_SPI_Operation	
 570  018A  2000     R  		call 	NRF_SPI_16bit			;send SPI Command
 571  018B  0003        ret
 572  018C              
 573  018C              ;***************************************************************
 574  018C              ;		nRF24L01 Pulse CE high to send at least 10u Second
 575  018C              ;		1. 1 instruction 4 clocks
 576  018C              ;		2. 12MHz OSC => 12/4=3MHz => 1/3 = 0.33uS (1 machine cycle)
 577  018C              ;		3. 10uS = 0.333us x 33(ins) = 10.3..
 578  018C              ;***************************************************************
 579  018C              
 580  018C              Pluse_CE_to_send:
 581  018C  3196        		set	NRF_CE
 582  018D              		kmov	temp_num,0DH
 583  018F              delay_ce:
 584  018F  1780     E  		SDZ	temp_num
 585  0190  2800     R  		jmp	delay_ce
 586  0191  3596        		clr	NRF_CE
 587  0192  0003        ret
 588  0193              
 589  0193              ;***************************************************************
 590  0193              ;		nRF24L01 SPI initial 
 591  0193              ;

⌨️ 快捷键说明

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