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

📄 7122.asm

📁 联笙A7122的2.4G无线芯片的源代码,包括初始化与发送数据和接收数据子程序,和部分的初始程序.
💻 ASM
📖 第 1 页 / 共 3 页
字号:
							call	write_spi_register		;		
							ret		
							
;*******************************************************************
;      Function name : SetTRC                                
;      Description   :将a,写入Tcr中,Tcr=1设定TX模式,Tcr=0设定RX模式, 
;      Input         :a                           								
;      Output        :                                 
;			 Useram				 :
;      call moudle   : write_spi_register											                  
;********************************************************************							
SetTRC:								
							mov		temp,a
							mov		a,@0xd7;
							mov		SPI_DATA0,a
							mov		a,@0x7f
							and		SPI_DATA0,a
							mov		a,temp
							jbs		status,z
							mov		a,@0x08
							or		SPI_DATA0,a
							
							mov		a,@W_Mode_Control
							mov		SPI_ADDRES,a
							mov		a,@MODE_Constant_C1
							mov		SPI_DATA1,a
							call	write_spi_register		;		
							ret
																
;*******************************************************************
;      Function name : SetFreq                                
;      Description   : 根据A,查表得到当前值对应频点值,设定工作频率       
;      Input         : a                           								
;      Output        :                                 
;			 Useram				 : temp
;      call moudle   : write_spi_register											                  
;********************************************************************							
SetFreq:		  		  
							and	a,@0x0f;最后4位(0-15)	
						    page 5
						    call	Freq_tab   						;查表法来做								
						    page 4
							mov	temp,a
							add		a,@FC_DATA0
							mov		rsr,a
							bank 2
							mov	a,FC_COMA
							jbs	flag,sync_f		;启动同步标志 
							mov	a,r0
							jbc	flag,TX_f
							add		a,@0x02
							add		a,@Syntheslzer0_C0	
							mov		SPI_DATA0,a
							mov		a,@Syntheslzer0_C1
						  jbc		status,c
						  add		a,@0x01
						  mov		SPI_DATA1,a
						  
						  mov	a,temp			;VCO_DATA0==0x20
						  add		a,@VCO_DATA0
						  mov		rsr,a
						  bank 2
						  mov		a,VCO_COM
						  jbs	    flag,sync_f
						  mov		a,r0
						  mov		temp1,a
						  jbs	flag,TX_f
						  swapa temp1
						  and		a,@0xe0			;VCO 调整 
						  or		SPI_DATA1,a
						  mov		a,@W_Syntheslzer0
						  mov		SPI_ADDRES,a
						  call	write_spi_register
							ret
;*******************************************************************
;      Function name : ResetRF                                
;      Description   :	复位RF芯片           
;      Input         :	                           								
;      Output        :                                 
;			 Useram				 : count,SPI_TEMP
;      call moudle   : write_spi_register											                  
;********************************************************************
ResetRF:			
							mov		a,@W_Mode_Control
							mov		SPI_ADDRES,a
							mov		a,@0x00
							mov		SPI_DATA1,a
							mov		a,@0x02
							mov		SPI_DATA0,a				;ce=1,pin ms0
							call	write_spi_register		;	
							
							mov		a,@0x00
							mov		SPI_DATA1,a
							mov		a,@0x03
							mov		SPI_DATA0,a
							call	write_spi_register		;		
							ret
;*******************************************************************
;      Function name :set_statanby                                
;      Description   :设置statanby mode           
;      Input         :	                           								
;      Output        :                                 
;			 Useram				 : count,SPI_TEMP
;      call moudle   : write_spi_register											                  
;********************************************************************																						
								
set_statanby:	
							mov		a,@W_Mode_Control
							mov		SPI_ADDRES,a
							mov		a,@0x00
							mov		SPI_DATA1,a
							mov		a,@0x02
							mov		SPI_DATA0,a				;ce=1,pin ms0=1
							call	write_spi_register		;	
							
							mov		a,@W_Calibration1
							mov		SPI_ADDRES,a
							mov		a,@0x00
							mov		SPI_DATA1,a
							mov		a,@0x00
							mov		SPI_DATA0,a				;ETR=0,ms1=0
							call	write_spi_register		;
							ret	
							
setandclr_ms1:							
							mov		SPI_DATA0,a				;ETR=a==,ms1=a							
							mov		a,@W_Calibration1
							mov		SPI_ADDRES,a
							clr		SPI_DATA1							
							call	write_spi_register		;
							ret		
;*******************************************************************
;      Function name :IntRF                                
;      Description   :初始化RF芯片           
;      Input         :	                           								
;      Output        :                                 
;			 Useram				 : temp
;      call moudle   : write_spi_register											                  
;********************************************************************																						
IntRF:				
							ior		r6
							and		a,@0b11111011
							iow		r6
							bs		PORT_SPI,SPI_CS
							bc		PORT_SPI,SPI_CLK
							bs		PORT_SPI,SPI_TXD
							bs		PORT_SPI,SPI_RXD
							bc		PORT_SPI,CD_TXEN
							call	set_statanby									;statanby mode
							bs		PORT_SPI,SPI_CS
							bc		PORT_SPI,SPI_CLK
							bs		PORT_SPI,SPI_TXD
							bs		PORT_SPI,SPI_RXD
							bc		PORT_SPI,CD_TXEN
							call	ResetRF	
							
							mov		a,@W_Syntheslzer0
							mov		SPI_ADDRES,a
							mov		a,@0x09;Syntheslzer0_C1							
							mov		SPI_DATA1,a
							mov		a,@0x60;Syntheslzer0_C0
							mov		SPI_DATA0,a
							call	write_spi_register		;Bnk=0,freq=2400hz 0960
							
							mov		a,@W_Syntheslzer1
							mov		SPI_ADDRES,a
							mov		a,@Syntheslzer1_C1;Syntheslzer1_C1
							mov		SPI_DATA1,a
							mov		a,@Syntheslzer1_C0;0x1b;Syntheslzer1_C0
							mov		SPI_DATA0,a		
							call	write_spi_register		;VTH=6 cp=500uA, ;0b1b
						  
						   mov		a,@W_Syntem_clock
						   mov		SPI_ADDRES,a
							mov		a,@Syntem_clock_C1
							mov		SPI_DATA1,a
							mov		a,@Syntem_clock_C0
							mov		SPI_DATA0,a
							call	write_spi_register		;	clock 设置 	;2231
							 
							mov		a,@W_Mode_Control
							mov		SPI_ADDRES,a
							mov		a,@MODE_Constant_C1
							mov		SPI_DATA1,a
							mov		a,@MODE_Constant_C0
							mov		SPI_DATA0,a
							call	write_spi_register		;	mode 设置 ;03d3
							
							mov		a,@Mode_Control
							mov		SPI_ADDRES,a
		eiu:	
							call	read_spi_register
							mov	a,@0xf2
							nop
							call	delay100us
					;		jmp	eiu

							mov		a,@W_Tx_Control0
							mov		SPI_ADDRES,a
							mov		a,@0xff
							mov		SPI_DATA1,a
							mov		a,@0xd0			;ffd0
							mov		SPI_DATA0,a
							call	write_spi_register		;
							
							mov		a,@W_Tx_Control1
							mov		SPI_ADDRES,a
							mov		a,@0xe2
							mov		SPI_DATA1,a
							mov		a,@0x3f
							mov		SPI_DATA0,a
							call	write_spi_register		;e23f	
							
							mov		a,@W_Rx_Control0
							mov		SPI_ADDRES,a
							mov		a,@0x06
							mov		SPI_DATA1,a
							mov		a,@0xF6
							mov		SPI_DATA0,a
							call	write_spi_register		;FiFo mode 启动同步功能 06f6
							
							mov		a,@W_Rx_Control1
							mov		SPI_ADDRES,a
							mov		a,@0x00
							mov		SPI_DATA1,a
							mov		a,@0x030
							mov		SPI_DATA0,a
							call	write_spi_register		;0030
																					
							mov		a,@W_FIFO_Control
							mov		SPI_ADDRES,a
							mov		a,@FIFO_Constant_C1	;0x0f;
							mov		SPI_DATA1,a
							mov		a,@FIFO_Constant_C0	;@0xc1;
							mov		SPI_DATA0,a
							call		write_spi_register		;		FIFO控制 
							
							mov		a,@W_Access_Code
							mov		SPI_ADDRES,a
							mov		a,@0x09
							mov		temp,a
							mov		a,@synchro_0
							mov		rsr,a
							bank 3
write_AccessCode:							
							mov		a,r0			;29-2f
							inc	rsr
							mov		SPI_DATA0,a
							mov		SPI_DATA1,a
							call	write_spi_register		;写9次 
							djz	temp
							jmp	write_AccessCode

						  mov		a,@W_Calibration0			;CAL_REG0
						  mov		SPI_ADDRES,a
						  mov		a,@Calibration0_c1
						  mov		SPI_DATA1,a
						  mov		a,@Calibration0_c0
						  mov		SPI_DATA0,a
						  call	write_spi_register			;01f4
						  
						  mov		a,@W_Calibration1			;CAL_REG1
						  mov		SPI_ADDRES,a
						  mov		a,@Calibration1_c1		;
						  mov		SPI_DATA1,a
						  mov		a,@Calibration1_c0
						  mov		SPI_DATA0,a
						  call	write_spi_register			;0001
						  
						  mov		a,@W_ADC_REG			;ADC_REG
						  mov		SPI_ADDRES,a
						  mov		a,@ADC_REG_c1
						  mov		SPI_DATA1,a
						  mov		a,@ADC_REG_c0
						  mov		SPI_DATA0,a
						  call	write_spi_register			;0d83
						  
						    mov		a,@W_Mode_Control
							mov		SPI_ADDRES,a
							mov		a,@MODE_Constant_C1A	;01d3
							mov		SPI_DATA1,a
							mov		a,@MODE_Constant_C0
							mov		SPI_DATA0,a
							call	write_spi_register		;01d3
							
						  mov		a,@W_Calibration1			;CAL_REG1
						  mov		SPI_ADDRES,a
						  mov		a,@Calibration1_c1	;0X00
						  mov		SPI_DATA1,a
						  mov		a,@Calibration1_c0a;03
						  mov		SPI_DATA0,a
						  call	write_spi_register	;03	//ecal=1
						  
						  mov		a,@200			;20ms
						  call	delay100us
						  
						  mov		a,@W_Mode_Control
							mov		SPI_ADDRES,a
							mov		a,@MODE_Constant_C1
							mov		SPI_DATA1,a
							mov		a,@MODE_Constant_C0
							mov		SPI_DATA0,a
							call	write_spi_register		;
waite_Calibration1:							
							mov		a,@Calibration1
							mov		SPI_ADDRES,a
							call	read_spi_register		;
							mov		a,SPI_DATA0
							and		a,@0x02
							jbs		status,z
							jmp		waite_Calibration1
							mov		a,@W_Calibration1
							mov		SPI_ADDRES,a
							mov		a,@0x37
							mov		SPI_DATA0,A
							clr		SPI_DATA1
							call	write_spi_register

							mov	a,@0xf0
							call	delay100us
							call	SYNth_Di
							
							clr	temp
							
SET_VCO_LOOP:   
							mov		a,temp
							call	Calibration_VCO		;2
							inc		temp
							mov		a,temp
							xor		a,@0xe				;13个频点 
							jbs		status,z
							jmp		SET_VCO_LOOP
							NOP
							nop
							ret
;*******************************************************************
;      Function name :Calibration_VCO                                
;      Description   :根据频点代码,找到对应频点,求出该频点的VCO,并存入对应的寄存器中    
;      Input         :a  ,temp                           								
;      Output        :                                
;			 Useram :temp1,temp2
;      call moudle   : write_spi_register											                  
;********************************************************************							
Calibration_VCO:			bc	flag,VCO_f									
Calibration_VCOa:		   							
							mov		a,@0x08
							xor		flag,a
							mov		temp1,a
							call		SYNth_En		;3
							mov		a,@0x03
							mov		temp2,a
Calibration_VCOb:
							mov		a,@FC_DATA0		;第一频点存数位置 
							add		a,temp
							mov		rsr,a
							bank 2
							mov		a,r0
							add		a,@Syntheslzer0_C0							
							mov		SPI_DATA0,a
							mov		a,@Syntheslzer0_C1
							jbc		status,c
							add		a,@0x01
							mov		SPI_DATA1,a
							
							jbc	flag,VCO_f
							jmp	Calibration_VCOc
							mov		a,@0x02
							add		SPI_DATA0,a
							mov		a,@0x01
							jbs		status,c
							mov		a,@0x00
							add		SPI_DATA1,a
Calibration_VCOc:							
							mov		a,@0x1f
							and		SPI_DATA1,a
							swap	temp2				;移位4次 
							rlca	temp2				;移位5次 
							swap	temp2				;换回原来值 
							or		SPI_DATA1,a
							mov		a,@W_Syntheslzer0			;write
							mov		SPI_ADDRES,a
							call	write_spi_register;
							
							mov		a,@0x3
							call	delay100us							
							mov		a,@Syntheslzer1			;read
							mov		SPI_ADDRES,a
							call	read_spi_register
							mov		a,SPI_DATA1
							and		a,@0xc0

⌨️ 快捷键说明

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