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

📄 7122.asm

📁 联笙A7122的2.4G无线芯片的源代码,包括初始化与发送数据和接收数据子程序,和部分的初始程序.
💻 ASM
📖 第 1 页 / 共 3 页
字号:
;*******************************************************************
;      Function name :delay100us                                
;      Description   :延时A*100us
;      Input         : a                         								
;      Output        :                                
;			 Useram	 :SPI_DATA0 SPI_TEMP 
;      call moudle   :
;*******************************************************************						  

delay100us:
							mov		SPI_TEMP,a
							mov		a,@60
delay100us0:				wdtc			
							mov		SPI_DATA0,a
delay100us1:									
							nop		;		
							nop
							nop
							nop		;4
							djz	SPI_DATA0	;							
							jmp	delay100us1	
							djz		SPI_TEMP
							jmp		delay100us0
							wdtc														
							ret

;--------------------------------------
;spi					字写入(16位) 
;--------------------------------------			        
;*******************************************************************
;      Function name : write_spi_register                                
;      Description   : SPI 字写入(16位)               
;      Input         : SPI_ADDRES,SPI_DATA0 ,SPI_DATA1                            								
;      Output        :                               
;			 Useram				 : count,SPI_TEMP
;      call moudle   :											                  
;********************************************************************							        
write_spi_register:;word:									
							bc		PORT_SPI,SPI_CS
							bc		PORT_SPI,SPI_CLK
							bs		PORT_SPI,SPI_RXD								
							mov		a,SPI_ADDRES								
							mov SPI_TEMP,a
							mov	a,@0x08
							mov	count,a
write_spi_ADDRES:		  	  				
							bs	PORT_SPI,SPI_CLK
							rlc	SPI_TEMP							
							bc	PORT_SPI,SPI_RXD	
							jbc	status,c
							bs	PORT_SPI,SPI_RXD
							bc	PORT_SPI,SPI_CLK
							djz	count
							jmp	write_spi_ADDRES

							mov		a,SPI_DATA1	
							mov SPI_TEMP,a
							mov	a,@0x08
							mov	count,a
write_spi_byteh:							
							bs	PORT_SPI,SPI_CLK
							rlc	SPI_TEMP
							jbs	status,c							
							bc	PORT_SPI,SPI_RXD	
							jbc	status,c
							bs	PORT_SPI,SPI_RXD
							bc	PORT_SPI,SPI_CLK
							djz	count  
							jmp	write_spi_byteh
							
							mov		a,SPI_DATA0	
							mov SPI_TEMP,a
							mov	a,@0x08
							mov	count,a
write_spi_bytel:			 				
							bs	PORT_SPI,SPI_CLK
							rlc	SPI_TEMP							
							bc	PORT_SPI,SPI_RXD	
							jbc	status,c
							bs	PORT_SPI,SPI_RXD
							bc	PORT_SPI,SPI_CLK
							djz	count
							jmp	write_spi_bytel		
							bs		PORT_SPI,SPI_CS
							bs		PORT_SPI,SPI_RXD
			       		 ret 
;--------------------------------------
;spi	字读出(16位) 
;--------------------------------------
;*******************************************************************
;      Function name : read_spi_word                                
;      Description   :	SPI 字读出(16位)                
;      Input         :  SPI_ADDRES,                          								
;      Output        :  SPI_DATA0 ,SPI_DATA1                               
;			 Useram				 : count,SPI_TEMP
;      call moudle   : write_spi_byte,											                  
;********************************************************************							        
read_spi_register:
							bc	PORT_SPI,SPI_CLK
							bc	PORT_SPI,SPI_CS		
							mov		a,SPI_ADDRES	
							mov SPI_TEMP,a
							mov	a,@0x08
							mov	count,a
read_spi_word0:							
							bs	PORT_SPI,SPI_CLK
							rlc	SPI_TEMP							
						;	jbs	status,c
							bc	PORT_SPI,SPI_RXD	
							jbc	status,c
							bs	PORT_SPI,SPI_RXD
							bc	PORT_SPI,SPI_CLK
							djz	count
							jmp	read_spi_word0

							mov	a,@0x08
							mov	count,a
read_spi_word1:		    			
							bs	PORT_SPI,SPI_CLK
							bs	status,c
							jbs	PORT_SPI,SPI_TXD
							bc	status,c
							rlc	SPI_TEMP
							bc	PORT_SPI,SPI_CLK
							djz	count
							jmp	read_spi_word1							
							mov	a,SPI_TEMP
							mov	 SPI_DATA1,a
							mov	a,@0x08
							mov	count,a
read_spi_word2:					
							bs	PORT_SPI,SPI_CLK
							bs	status,c
							jbs	PORT_SPI,SPI_TXD
							bc	status,c
							rlc	SPI_TEMP
							bc	PORT_SPI,SPI_CLK
							djz	count
							jmp	read_spi_word2							
							mov	a,SPI_TEMP
							
							mov		SPI_DATA0,a			
							bs	PORT_SPI,SPI_CS	
							bs	PORT_SPI,SPI_RXD	
							ret

;*******************************************************************
;      Function name : read_FIFO                                
;      Description   :	FIFO 字节读出(8位)               
;      Input         :	                             								
;      Output        : A                                
;			 Useram				 : count,SPI_TEMP
;      call moudle   : 												                  
;********************************************************************							
read_FIFO:					
							bs	PORT_SPI,FIFO_CLK
							bs	status,c
							jbs	PORT_SPI,TRXD
							bc	status,c
							rlc	SPI_TEMP
							bc	PORT_SPI,FIFO_CLK
							
							bs	PORT_SPI,FIFO_CLK
							bs	status,c
							jbs	PORT_SPI,TRXD
							bc	status,c
							rlc	SPI_TEMP
							bc	PORT_SPI,FIFO_CLK
							
							bs	PORT_SPI,FIFO_CLK
							bs	status,c
							jbs	PORT_SPI,TRXD
							bc	status,c
							rlc	SPI_TEMP
							bc	PORT_SPI,FIFO_CLK
							
							bs	PORT_SPI,FIFO_CLK
							bs	status,c
							jbs	PORT_SPI,TRXD
							bc	status,c
							rlc	SPI_TEMP
							bc	PORT_SPI,FIFO_CLK
							
							bs	PORT_SPI,FIFO_CLK
							bs	status,c
							jbs	PORT_SPI,TRXD
							bc	status,c
							rlc	SPI_TEMP
							bc	PORT_SPI,FIFO_CLK
							
							bs	PORT_SPI,FIFO_CLK
							bs	status,c
							jbs	PORT_SPI,TRXD
							bc	status,c
							rlc	SPI_TEMP
							bc	PORT_SPI,FIFO_CLK
							
							bs	PORT_SPI,FIFO_CLK
							bs	status,c
							jbs	PORT_SPI,TRXD
							bc	status,c
							rlc	SPI_TEMP
							bc	PORT_SPI,FIFO_CLK
							
							bs	PORT_SPI,FIFO_CLK
							bs	status,c
							jbs	PORT_SPI,TRXD
							bc	status,c
							rlc	SPI_TEMP
							bc	PORT_SPI,FIFO_CLK
							mov	a,SPI_TEMP
							ret
												
;*******************************************************************
;      Function name : write_FIFO                                
;      Description   :	FIFO 字节写入(8位)               
;      Input         :	A                             								
;      Output        :                                 
;			 Useram				 : count,SPI_TEMP
;      call moudle   : 												                  
;********************************************************************							
write_FIFO:	
							mov	SPI_TEMP,a
						;	mov	a,@0x08
						;	mov	count,a
write_FIFO1:	
							bs	PORT_SPI,FIFO_CLK
							rlc	SPI_TEMP
							bc	PORT_SPI,SPI_RXD
							jbc	status,c
							bs	PORT_SPI,SPI_RXD
							bc	PORT_SPI,FIFO_CLK
							
							bs	PORT_SPI,FIFO_CLK
							rlc	SPI_TEMP
							bc	PORT_SPI,SPI_RXD
							jbc	status,c
							bs	PORT_SPI,SPI_RXD
							bc	PORT_SPI,FIFO_CLK
							
							bs	PORT_SPI,FIFO_CLK
							rlc	SPI_TEMP
							bc	PORT_SPI,SPI_RXD
							jbc	status,c
							bs	PORT_SPI,SPI_RXD
							bc	PORT_SPI,FIFO_CLK
							
							bs	PORT_SPI,FIFO_CLK
							rlc	SPI_TEMP
							bc	PORT_SPI,SPI_RXD
							jbc	status,c
							bs	PORT_SPI,SPI_RXD
							bc	PORT_SPI,FIFO_CLK
							
							bs	PORT_SPI,FIFO_CLK
							rlc	SPI_TEMP
							bc	PORT_SPI,SPI_RXD
							jbc	status,c
							bs	PORT_SPI,SPI_RXD
							bc	PORT_SPI,FIFO_CLK
							
							bs	PORT_SPI,FIFO_CLK
							rlc	SPI_TEMP
							bc	PORT_SPI,SPI_RXD
							jbc	status,c
							bs	PORT_SPI,SPI_RXD
							bc	PORT_SPI,FIFO_CLK
							
							bs	PORT_SPI,FIFO_CLK
							rlc	SPI_TEMP
							bc	PORT_SPI,SPI_RXD
							jbc	status,c
							bs	PORT_SPI,SPI_RXD
							bc	PORT_SPI,FIFO_CLK
							
							bs	PORT_SPI,FIFO_CLK
							rlc	SPI_TEMP
							bc	PORT_SPI,SPI_RXD
							jbc	status,c
							bs	PORT_SPI,SPI_RXD
							bc	PORT_SPI,FIFO_CLK
							ret

;*******************************************************************
;      Function name : FIFOWr_En                                
;      Description   :	开启TX FIFO               
;      Input         :	                           								
;      Output        :                                 
;			 Useram				 : 
;      call moudle   : write_spi_register												                  
;********************************************************************							
FIFOWr_En:
							mov	a,@W_FIFO_Control
							mov		SPI_ADDRES,a
							mov	a,@(FIFO_Constant_C0|0x04)
							mov		SPI_DATA0,a
							mov	a,@FIFO_Constant_C1	
							mov		SPI_DATA1,a
							call	write_spi_register	
							ret

;*******************************************************************
;      Function name : FIFOWr_Di                                
;      Description   :	关闭TX FIFO               
;      Input         :	                           								
;      Output        :                                 
;			 Useram				 : count,SPI_TEMP
;      call moudle   :write_spi_register 												                  
;********************************************************************							
FIFOWr_Di:
							mov	a,@W_FIFO_Control
							mov		SPI_ADDRES,a
							mov	a,@(FIFO_Constant_C0&0xfb)	;!04
							mov		SPI_DATA0,a
							mov	a,@FIFO_Constant_C1	 
							mov		SPI_DATA1,a
							call	write_spi_register		;
							ret						

;*******************************************************************
;      Function name : FIFORd_En                                
;      Description   :	开启 RX FIFO          
;      Input         :	                           								
;      Output        :                                 
;			 Useram				 : 
;      call moudle   : write_spi_register											                  
;********************************************************************							
FIFORd_En:
							mov		a,@W_FIFO_Control
							mov		SPI_ADDRES,a
							mov		a,@FIFO_Constant_C1
							mov		SPI_DATA1,a
							mov		a,@(FIFO_Constant_C0|0x10)	;10
							mov		SPI_DATA0,a
							call	write_spi_register		;	
							ret						

;*******************************************************************
;      Function name : FIFORd_Di                                
;      Description   :	关闭RX FIFO          
;      Input         :	                           								
;      Output        :                                 
;			 Useram				 : 
;      call moudle   : write_spi_register											                  
;********************************************************************							
FIFORd_Di:				
							mov		a,@W_FIFO_Control
							mov		SPI_ADDRES,a
							mov		a,@FIFO_Constant_C1
							mov		SPI_DATA1,a
							mov		a,@(FIFO_Constant_C0&0x0ef)	;!10
							mov		SPI_DATA0,a
							call	   write_spi_register		;	
							ret
													
;*******************************************************************
;      Function name : SYNth_En                                
;      Description   :将MODE Register 中的SYN位置1,pin MS0=1时进入SYNthsizer mode    
;      Input         :	                           								
;      Output        :                                 
;			 Useram				 :
;      call moudle   : write_spi_register											                  
;********************************************************************							
SYNth_En:								
							mov		a,@W_Mode_Control
							mov		SPI_ADDRES,a
							mov		a,@MODE_Constant_C1
							mov		SPI_DATA1,a
							mov		a,@(MODE_Constant_C0|0x04)
							mov		SPI_DATA0,a
							call	write_spi_register		;	
							mov		a,@0x01
							call	delay100us	;4	
							ret

;*******************************************************************
;      Function name : SYNth_Di                                
;      Description   :将MODE Register 中的SYN位清0,pin MS0=1时进入standby mode
;      Input         :	                           								
;      Output        :                                 
;			 Useram				 :
;      call moudle   : write_spi_register											                  
;********************************************************************							
SYNth_Di:								
							mov		a,@W_Mode_Control
							mov		SPI_ADDRES,a
							mov		a,@MODE_Constant_C1
							mov		SPI_DATA1,a
							mov		a,@(MODE_Constant_C0&0xfb)
							mov		SPI_DATA0,a

⌨️ 快捷键说明

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