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

📄 7122.asm

📁 联笙A7122的2.4G无线芯片的源代码,包括初始化与发送数据和接收数据子程序,和部分的初始程序.
💻 ASM
📖 第 1 页 / 共 3 页
字号:
							xor		a,@0x40
							jbc		status,z
							jmp		Calibration_VCO_end  ;vt=01,calibration ok
							
							mov		a,SPI_DATA1
							and		a,@0xc0
							xor		a,@0x00							;vt=00;freq too low
							jbc		status,z
							jmp		Calibration_VCO_L
							mov		a,SPI_DATA1
							and		a,@0xc0
							xor		a,@0xc0							;vt=11;freq too high
							jbc		status,z
							jmp		Calibration_VCO_H
Calibration_VCO_L:
							mov		a,temp2
							xor		a,@0x07
							jbc		status,z
							jmp		Calibration_VCO_err	;temp2==0
							inc		temp2
							djz		temp1
							jmp		Calibration_VCOb
							jmp		Calibration_VCO_err
Calibration_VCO_H:
							mov		a,temp2
							jbc		status,z							
							jmp		Calibration_VCO_err	;temp2==7
							dec		temp2							
							djz		temp1
							jmp		Calibration_VCOb
							jmp		Calibration_VCO_err
Calibration_VCO_end:
							call	SYNth_Di													
					        jbs	flag,VCO_f
					        jmp	Calibration_VCO_end1
							mov		a,temp
							add		a,@VCO_DATA0
							mov		rsr,a
							bank 2
							mov		a,temp2	;当前VCO
							mov		r0,a
							jbc	flag,VCO_f
							jmp	Calibration_VCOa

Calibration_VCO_end1:									
							mov		a,temp
							add		a,@VCO_DATA0
							mov		rsr,a
							bank 2
							swapa	  temp2
							or		r0,a
							rlca	r0
							mov		r0,a	
							call	SYNth_Di				
							ret   		
										 								
Calibration_VCO_err:
							call	SYNth_Di
							mov		a,@0xff							
							ret
;*******************************************************************
;      Function name :TXpacket                                
;      Description   :TX FIFO 写入,传送数据开始 
;      Input         :                          								
;      Output        :                                
;			 Useram				 : temp
;      call moudle   : write_FIFO	,delay10us,SetTRC,FIFOWr_Di,FIFOWr_En
;********************************************************************																													
TXpacket:
							wdtc
							bs	flag,TX_f
							bc	flag,tcc_f
							
							call	FIFOWr_En
														
FIFO_LOOP:
							mov		a,@14		;长度为13
							mov		temp,a				;1
						;	inc		temp
							call	write_FIFO
						
							bank 1														
							mov	a,package_a
							xor	temp,a
							inc	temp
							call	write_FIFO			;2

							mov	a,@0x02
							xor	temp,a
							inc	temp
							call	write_FIFO

							mov	a,ByteKey1_A
							xor	temp,a
							inc	temp
							call	write_FIFO			;3

							mov	a,ByteKey2_A
							xor	temp,a
							inc	temp
							call	write_FIFO			;4

							mov	a,AValRH_A
							xor	temp,a
							inc	temp
							call	write_FIFO			;5
							
							mov	a,AValRV_A
							xor	temp,a
							inc	temp
							call	write_FIFO			;6

							mov	a,AValLH_A
							xor	temp,a
							inc	temp
							call	write_FIFO			;7
							
							mov	a,AValLV_A
							xor	temp,a
							inc	temp
							call	write_FIFO			;8

							mov	a,AValTride_A
							xor	temp,a
							inc	temp
							call	write_FIFO			;9

							mov	a,AValEnter_A
							xor	temp,a
							inc	temp
							call	write_FIFO			;10

							mov	a,AValExit_A
							xor	temp,a
							inc	temp
							call	write_FIFO			;11

							mov	a,AValRect_A
							xor	temp,a
							inc	temp
							call	write_FIFO			;12
							
							mov	a,temp
							call	write_FIFO			;13
						    
						    call	FIFOWr_Di		
						  						  mov		a,frequency		;频率 
						  call	SetFreq
						  mov		a,@0x01
						  call	SetTRC		;进入TX mode
						  mov		a,@0x01
						  call	setandclr_ms1
							call	delay10us
							call	delay10us
							call	delay10us
							call	delay10us
							call	delay10us
							call	delay10us
							bs	r7,2
							bs		PORT_SPI,CD_TXEN
							mov		a,@90	
							mov		temp,a
wait_PR_RDY_H: 			  
							jbc	PORT_SPI,PR_RDY				;2
							jmp	PR_RDY_H
							jbc	PORT_SPI,PR_RDY				;4
							jmp	PR_RDY_H								;4us*temp
							jbc	PORT_SPI,PR_RDY				;6
							jmp	PR_RDY_H
							jbs	PORT_SPI,PR_RDY				;7
							jbc	PORT_SPI,PR_RDY				;9
							jmp	PR_RDY_H
							djz	temp									;10
							jmp		wait_PR_RDY_H				;12
							jmp		w_fifo_error			;等待PR_RDY为1时间过长,进入错误 
PR_RDY_H:					  
								 	
							bc		PORT_SPI,CD_TXEN ;
							mov		a,@0x00
						    call	setandclr_ms1		;进入synthesizer mode							
						    bc	r7,2
						    ret
w_fifo_error:               bc	r7,2
							bc	flag,TX_f
							bc		PORT_SPI,CD_TXEN ;
							mov		a,@0x00
						    call	setandclr_ms1		;进入synthesizer mode	

							ret
;*******************************************************************
;      Function name :Rpacket                                
;      Description   :RX FIFO 读出,接收数据 
;      Input         :                          								
;      Output        :                                
;			 Useram				 : temp
;      call moudle   : FIFORd_En	,read_FIFO	,FIFORd_Di									                  
;********************************************************************																							
RXpacket:			
							bc		flag,RECE_F
							mov		a,@RX_buff0
							mov		rsr,a
							bank 3	
							call	FIFORd_En
							
							call	read_FIFO
							mov	a,@0x09
							mov		temp,a
							mov		r0,a
							mov		temp1,a
							dec		temp
							dec		temp
						;	inc		temp1
RXpacket1:									
							inc		rsr
							call	read_FIFO							
							mov		r0,a														
							xor		temp1,a
							inc		temp1
							djz		temp
							jmp		RXpacket1
							call	read_FIFO
							mov		r0,a
							xor		a,temp1
							jbs		status,z
							jmp	RXpacket_end
	
						    call	FIFORd_Di;
						    bs		flag,RECE_F	
						    ret
					    
RXpacket_end:		        
							call	FIFORd_Di;			    
						    ret

;*******************************************************************
;      Function name :Rpacket                                
;      Description   :RX FIFO 读出,接收数据 
;      Input         :                          								
;      Output        :                                
;			 Useram				 : temp
;      call moudle   : FIFORd_En	,read_FIFO	,FIFORd_Di									                  
;********************************************************************																							
RXpacket_s:			
							bc		flag,RECE_F
							mov		a,@RX_buff0
							mov		rsr,a
							bank 3	
							call	FIFORd_En
							
							call	read_FIFO
							sub	a,@0x20		;32 byte
							jbs	status,c
							jmp	RXpacket_end
							mov	a,SPI_TEMP
							sub	a,@0x05
							jbc	status,c
							jmp	RXpacket_end
							mov	a,SPI_TEMP
							mov		temp,a
							mov		r0,a
							mov		temp1,a
							dec		temp
							dec		temp
						;	inc		temp1
RXpacket1_s:									
							inc		rsr
							call	read_FIFO							
							mov		r0,a
														
							xor		temp1,a
							inc		temp1
							djz		temp
							jmp		RXpacket1_s
							call	read_FIFO
							inc		rsr
							mov		r0,a
							xor		a,temp1
							jbs		status,z
							jmp	RXpacket_end_s

						    call	FIFORd_Di;
						    bs		flag,RECE_F	
						    ret					    
RXpacket_end_s:
							call	FIFORd_Di;										    
						    ret	
						    
;*******************************************************************
;      Function name :WaitAck                                
;      Description   :设定进入RX状态,等待FP——RDY=1,完成接收DATA,同时启动TC2,超过1MS则传0,有资料则传1
;      Input         : frequency                         								
;      Output        :  a    收到后返回FF,否则为0                          
;			 Useram				 : temp
;      call moudle   : SetFreq	,SetTRC	,setandclr_ms1								                  
;********************************************************************																							
WaitAck:			      
							bc	flag,TX_f
							call	SYNth_Di
							mov		a,frequency
						  call		SetFreq
						  mov		a,@0x00
						  call	SetTRC
						  mov		a,@0x01
						  call	setandclr_ms1
							bs	r7,2
							mov		a,@250
							mov		temp,a
							
WaitAck1:				
							jbc		PORT_SPI,PR_RDY				;
							jmp		WaitAck2
							jbs		PORT_SPI,PR_RDY				;							
							jbc		PORT_SPI,PR_RDY				;4us*temp 
							jmp		WaitAck2
							jbc		PORT_SPI,PR_RDY				;
							jmp		WaitAck2
							jbc		PORT_SPI,PR_RDY				;
							jmp		WaitAck2
							jbs		PORT_SPI,PR_RDY				;							
							jbc		PORT_SPI,PR_RDY				;4us*temp 
							jmp		WaitAck2
							jbc		PORT_SPI,PR_RDY				;
							jmp		WaitAck2
							jbc		PORT_SPI,PR_RDY				;
							jmp		WaitAck2
							jbs		PORT_SPI,PR_RDY				;
							jbc		PORT_SPI,PR_RDY
							jmp		WaitAck2
							djz		temp	
						  jmp		WaitAck1
						  jmp		WaitAck_err	;等待超时 
WaitAck2:				  		  
						 bc	r7,2
						  bs	flag,RECE_F;	;接收包标志 
						  mov		a,@0x00
						  call	setandclr_ms1
						 ; call	SYNth_En	  
						  ret
WaitAck_err:	
					  	bc	r7,2
					  	bc	flag,RECE_F;	;接收包标志 
					  	mov		a,@0x00
						  call	setandclr_ms1
						  ret
;*******************************************************************
;      Function name :MeasureRSSI                                
;      Description   :设定7121做RSSI的测量 
;      Input         : frequency                         								
;      Output        :  a                              
;			 Useram				 : temp
;      call moudle   : delay10us	,write_spi_register	,setandclr_ms1									                  
;********************************************************************																							
						  
MeasureRSSI:
							mov		a,@0x01
						  call	setandclr_ms1		
						  call	delay10us
						  call	delay10us
						  call	delay10us
						  call	delay10us
						  call	delay10us
						  call	delay10us
						  mov		a,@W_Calibration1
						  mov		SPI_ADDRES,a
						  mov		a,@0x00
						  mov		SPI_DATA1,a
						  mov		a,@0x05
						  mov		SPI_DATA0,a
						  call	write_spi_register
						  clr		temp
MeasureRSSI1:	
							dec		temp					  
							jbc		status,z
							jmp		MeasureRSSI_err			;等待1。3333*256US
						  call	read_spi_register;
						  mov		a,@0x04
						  and		SPI_DATA0,a
						  jbs		status,z
						  jmp		MeasureRSSI1
						  mov		a,@0x00
						  call	setandclr_ms1
						  mov		a,RSSI
						  call	read_spi_register;
						  mov		a,SPI_DATA0
						  ret
MeasureRSSI_err:
							mov		a,@0x00
						  call	setandclr_ms1
							mov		a,@0xff
							ret						    														

⌨️ 快捷键说明

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