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

📄 mdfan.lst

📁 用24L01的2.4Ghz无线控制风扇的源程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
   760  000192             
   761  000192   1E1B(1)  	mov	A,DataBuffer
   762  000193   1F1E(1)  	mov	test_data0,A			
   763  000194   C0E7(2)  	call	I2Cout0		;out ACK
   764  000195             
   765  000195   C10C(2)  	call	I2CreadBit	;Read Data
   766  000196   C10C(2)  	call	I2CreadBit
   767  000197   C10C(2)  	call	I2CreadBit
   768  000198   C10C(2)  	call	I2CreadBit
   769  000199   C10C(2)  	call	I2CreadBit
   770  00019A   C10C(2)  	call	I2CreadBit
   771  00019B   C10C(2)  	call	I2CreadBit
   772  00019C   C10C(2)  	call	I2CreadBit
   773  00019D   1E1B(1)  	mov	A,DataBuffer
   774  00019E   1F1F(1)  	mov	test_data1,A				
   775  00019F   C0DC(2)  	call	I2Cout1		;out NACK
   776  0001A0             
   777  0001A0   C0D1(2)  	call	I2Cstop		;Stop
   778  0001A1             	clrwdt
   779  0001A1   2D5A(1)  		MOV		A, #5AH
   780  0001A2   1FCC(1)  		MOV		WDTR, A
   781  0001A3   0E00(2)  	ret
   782  0001A4             
   783  0001A4             ReloadTestDataError:
   784  0001A4   161D(1+S)  	incms	ErrorCount
   785  0001A5   0000(1)  	nop
   786  0001A6   2D0A(1)  	mov	A,#10
   787  0001A7   221D(1)  	sub	A,ErrorCount
   788  0001A8   5A86(1+S)  	bts1	FC
   789  0001A9   491A(1)   	bset	I2CjoinErrorFlag
   790  0001AA   8160(2)  	jmp	ReloadTestData_Loop
   791  0001AB             	INCLUDE		nRF24L01.ASM
   792  0001AB             ;*****************************************************************
   793  0001AB             ;Function:SPI_RW
   794  0001AB             ;Description:SPI read write 1 byte data
   795  0001AB             ;input:spi_data
   796  0001AB             ;output:spi_data
   797  0001AB             ;*****************************************************************
   798  0001AB             SPI_RW:
   799  0001AB             	movmi	bit_count, #8		;loop 8 times
   800  0001AB   2D08(1)  		MOV		A, #8
   801  0001AC   1F11(1)  		MOV		bit_count,A
   802  0001AD             ReadWrite_Loop:	
   803  0001AD             	jb1	spi_data.7, MOSI_High	;MSB first
   804  0001AD   5710(1+S)  	bts0	spi_data.7
   805  0001AE   81B1(2)  		jmp	MOSI_High
   806  0001AF             MOSI_Low:				;MSB=0
   807  0001AF   42D5(1)  	bclr	PIN_SPI_MOSI		;MOSI output=L
   808  0001B0   81B2(2)  	jmp	Data_Shift_Left
   809  0001B1             MOSI_High:				;MSB=1
   810  0001B1   4AD5(1)  	bset	PIN_SPI_MOSI		;MOSI output=H
   811  0001B2             Data_Shift_Left:
   812  0001B2   0B10(1)  	rlcm	spi_data		;spi_data<<1
   813  0001B3   4DD5(1)  	bset	PIN_SPI_CLK		;generate ring edge
   814  0001B4             	jb0	PIN_SPI_MISO, MISO_Low	;read MISO pin
   815  0001B4   5FD5(1+S)  	bts1	PIN_SPI_MISO
   816  0001B5   81B8(2)  		jmp	MISO_Low
   817  0001B6             MISO_High:				;MISO=H
   818  0001B6   4810(1)  	bset	spi_data.0		;LSB=1
   819  0001B7   81B9(2)  	jmp	CLK_Low
   820  0001B8             MISO_Low:				;MISO=L
   821  0001B8   4010(1)  	bclr	spi_data.0		;LSB=0
   822  0001B9             CLK_Low:
   823  0001B9   45D5(1)  	bclr	PIN_SPI_CLK		;clk low
   824  0001BA   2611(1+S)  	decms	bit_count		;--bit_count==0?
   825  0001BB   81AD(2)  	jmp	ReadWrite_Loop
   826  0001BC   42D5(1)  	bclr	PIN_SPI_MOSI		;MOSI low before return
   827  0001BD   0E00(2)  	ret
   828  0001BE             
   829  0001BE             ;*****************************************************************
   830  0001BE             ;Function:SPI_Read_Reg
   831  0001BE             ;Description:SPI read write 1 byte data from register
   832  0001BE             ;input:spi_reg
   833  0001BE             ;output:spi_value
   834  0001BE             ;*****************************************************************
   835  0001BE             SPI_Read_Reg:
   836  0001BE   43D5(1)  	bclr	PIN_SPI_CSN		;SPI enable
   837  0001BF             	movmm	spi_data, spi_reg_addr
   838  0001BF   1E12(1)  		MOV		A, spi_reg_addr
   839  0001C0   1F10(1)  		MOV		spi_data,A
   840  0001C1   C1AB(2)  	call	SPI_RW			;write register adrress 
   841  0001C2   2B10(1)  	clr	spi_data
   842  0001C3   C1AB(2)  	call	SPI_RW			;read register value
   843  0001C4             	movmm	spi_value, spi_data
   844  0001C4   1E10(1)  		MOV		A, spi_data
   845  0001C5   1F13(1)  		MOV		spi_value,A
   846  0001C6   4BD5(1)  	bset	PIN_SPI_CSN		;disable SPI
   847  0001C7   0E00(2)  	ret
   848  0001C8             
   849  0001C8             ;*****************************************************************
   850  0001C8             ;Function:SPI_Write_Reg
   851  0001C8             ;Description:SPI write 1 byte data to register
   852  0001C8             ;input:spi_value,spi_reg_addr
   853  0001C8             ;output:spi_status stores the value of register STATUS
   854  0001C8             ;*****************************************************************
   855  0001C8             SPI_Write_Reg:
   856  0001C8   43D5(1)  	bclr	PIN_SPI_CSN		;SPI enable
   857  0001C9             	movmm	spi_data, spi_reg_addr
   858  0001C9   1E12(1)  		MOV		A, spi_reg_addr
   859  0001CA   1F10(1)  		MOV		spi_data,A
   860  0001CB   C1AB(2)  	call	SPI_RW			;write register adrress
   861  0001CC             	movmm	spi_status, spi_data	;store register "Status" value
   862  0001CC   1E10(1)  		MOV		A, spi_data
   863  0001CD   1F14(1)  		MOV		spi_status,A
   864  0001CE             	movmm	spi_data, spi_value
   865  0001CE   1E13(1)  		MOV		A, spi_value
   866  0001CF   1F10(1)  		MOV		spi_data,A
   867  0001D0   C1AB(2)  	call	SPI_RW			;write register value
   868  0001D1   4BD5(1)  	bset	PIN_SPI_CSN
   869  0001D2   0E00(2)  	ret
   870  0001D3             
   871  0001D3             
   872  0001D3             
   873  0001D3             ;*****************************************************************
   874  0001D3             ;Function:SPI_Read_Buf_Any_Pipe
   875  0001D3             ;Description:SPI read data from any Pipe
   876  0001D3             ;input:status_temp(from "Status" register)
   877  0001D3             ;output:data_buf
   878  0001D3             ;*****************************************************************
   879  0001D3             SPI_Read_Buf_Any_Pipe:
   880  0001D3   0815(1)  	rrc	status_temp		;A<-RRC status_temp
   881  0001D4   2A07(1)  	and	A, #07h			;get low 3 bit for Pipe Number
   882  0001D5   1411(1)  	add 	A, #RX_PW_P0		;get Pipe address
   883  0001D6   1F12(1)  	mov	spi_reg_addr, A		;write the address to read from
   884  0001D7   C1BE(2)  	call	SPI_Read_Reg		;read pay load width
   885  0001D8             	movmm	pload_width, spi_value
   886  0001D8   1E13(1)  		MOV		A, spi_value
   887  0001D9   1F07(1)  		MOV		pload_width,A
   888  0001DA             ;Rx data and store in data_buf	
   889  0001DA   2B84(1)  	clr	Y
   890  0001DB             	movmi	Z, #data_buf		;@YZ point to data_buf
   891  0001DB   2D20(1)  		MOV		A, #data_buf
   892  0001DC   1F83(1)  		MOV		Z,A
   893  0001DD   43D5(1)  	bclr	PIN_SPI_CSN		;enable SPI
   894  0001DE             	movmi	spi_data, #RD_RX_PLOAD
   895  0001DE   2D61(1)  		MOV		A, #RD_RX_PLOAD
   896  0001DF   1F10(1)  		MOV		spi_data,A
   897  0001E0   C1AB(2)  	call	SPI_RW			;we are now reading Rx pay load
   898  0001E1             Receive_Loop:	
   899  0001E1   2B10(1)  	clr	spi_data
   900  0001E2   C1AB(2)  	call	SPI_RW			;read 1 byte data
   901  0001E3             	movmm	@YZ, spi_data		;store it to data_buf
   902  0001E3   1E10(1)  		MOV		A, spi_data
   903  0001E4   1FE7(1)  		MOV		@YZ,A
   904  0001E5             	inc	Z			;point to the next byte in data_buf
   905  0001E5   1683(1+S)  		INCMS		Z
   906  0001E6   0000(1)  		NOP
   907  0001E7             	djnz	pload_width, Receive_Loop	;data end?
   908  0001E7   2607(1+S)  	decms	pload_width
   909  0001E8   81E1(2)  		jmp	Receive_Loop
   910  0001E9   4BD5(1)  	bset	PIN_SPI_CSN		;disable SPI
   911  0001EA   0E00(2)  	ret	
   912  0001EB             
   913  0001EB             	
   914  0001EB             ;*****************************************************************
   915  0001EB             ;Function:Tx_Mode
   916  0001EB             ;Description:force the device go into Tx mode,and a CE puls trriger Tx data event
   917  0001EB             ;input:none
   918  0001EB             ;output:none
   919  0001EB             ;*****************************************************************
   920  0001EB             Tx_Mode:
   921  0001EB   46D5(1)  	bclr	PIN_CE_nRF24L01		;CE=0 
   922  0001EC             /*
   923  0001EC             	bclr	PIN_SPI_CSN		;Set TX address device,to Writer
   924  0001EC             	movmi	spi_data, #WRITE_REG+TX_ADDR
   925  0001EC             	call	SPI_RW
   926  0001EC             	movmi	spi_data, #TX_ADDR0_DEF
   927  0001EC             	call	SPI_RW
   928  0001EC             	movmi	spi_data, #TX_ADDR1_DEF
   929  0001EC             	call	SPI_RW
   930  0001EC             	movmi	spi_data, #TX_ADDR2_DEF
   931  0001EC             	call	SPI_RW
   932  0001EC             	movmi	spi_data, #TX_ADDR3_DEF
   933  0001EC             	call	SPI_RW
   934  0001EC             	movmi	spi_data, #TX_ADDR4_DEF
   935  0001EC             	call	SPI_RW
   936  0001EC             	bset	PIN_SPI_CSN
   937  0001EC             
   938  0001EC             	nop
   939  0001EC             	nop
   940  0001EC             
   941  0001EC             	bclr	PIN_SPI_CSN		;Use the same address on the RX device as the TX device
   942  0001EC             	movmi	spi_data, #WRITE_REG+RX_ADDR_P0
   943  0001EC             	call	SPI_RW
   944  0001EC             	movmi	spi_data, #TX_ADDR0_DEF
   945  0001EC             	call	SPI_RW
   946  0001EC             	movmi	spi_data, #TX_ADDR1_DEF
   947  0001EC             	call	SPI_RW
   948  0001EC             	movmi	spi_data, #TX_ADDR2_DEF
   949  0001EC             	call	SPI_RW
   950  0001EC             	movmi	spi_data, #TX_ADDR3_DEF
   951  0001EC             	call	SPI_RW
   952  0001EC             	movmi	spi_data, #TX_ADDR4_DEF
   953  0001EC             	call	SPI_RW
   954  0001EC             	bset	PIN_SPI_CSN
   955  0001EC             
   956  0001EC             	nop
   957  0001EC             	nop
   958  0001EC             
   959  0001EC             	movmi	spi_reg_addr, #WRITE_REG+EN_AA 
   960  0001EC             	movmi	spi_value, #0x01  	;Enable Auto.Ack:Pipe0
   961  0001EC             	call	SPI_Write_Reg
   962  0001EC             	
   963  0001EC             	movmi	spi_reg_addr, #WRITE_REG+EN_RXADDR
   964  0001EC             	movmi	spi_value, #0x01	;Enable Pipe0
   965  0001EC             	call	SPI_Write_Reg
   966  0001EC             
   967  0001EC             	movmi	spi_reg_addr, #WRITE_REG+SETUP_RETR	;Tx configuration
   968  0001EC             	movmi	spi_value, #0x1a	;500us+ 86us, 10 retrans...
   969  0001EC             	call	SPI_Write_Reg
   970  0001EC             
   971  0001EC             	movmi	spi_reg_addr, #WRITE_REG+RF_CH
   972  0001EC             	;movmi	spi_value, #TX_CH_DEF	;Select default RF channel 
   973  0001EC             	movmm	spi_value, channel	;select RF channel
   974  0001EC             	call	SPI_Write_Reg
   975  0001EC             	
   976  0001EC             	movmi	spi_reg_addr, #WRITE_REG+RF_SETUP
   977  0001EC             	movmi	spi_value, #0x0f	;TX_PWR:0dBm, Datarate:2Mbps, LNA:HCURR
   978  0001EC             	call	SPI_Write_Reg
   979  0001EC             */
   980  0001EC             	movmi	spi_reg_addr, #WRITE_REG+CONFIG
   981  0001EC   2D20(1)  		MOV		A, #WRITE_REG+CONFIG
   982  0001ED   1F12(1)  		MOV		spi_reg_addr,A
   983  0001EE             	movmi	spi_value, #0x0e	;Set PWR_UP bit, enable CRC(2 bytes) & Prim:TX. RX_DR enabled..
   984  0001EE   2D0E(1)  		MOV		A, #0x0e
   985  0001EF   1F13(1)  		MOV		spi_value,A
   986  0001F0   C1C8(2)  	call	SPI_Write_Reg
   987  0001F1   0E00(2)  	ret
   988  0001F2             ;**********************************************************
   989  0001F2             Write_Tx_Pload:
   990  0001F2   43D5(1)  	bclr	PIN_SPI_CSN		;Writes data to TX payload
   991  0001F3             	movmi	spi_data, #WR_TX_PLOAD
   992  0001F3   2DA0(1)  		MOV		A, #WR_TX_PLOAD
   993  0001F4   1F10(1)  		MOV		spi_data,A
   994  0001F5   C1AB(2)  	call	SPI_RW
   995  0001F6             	movmm	spi_data, command
   996  0001F6   1E20(1)  		MOV		A, command
   997  0001F7   1F10(1)  		MOV		spi_data,A
   998  0001F8   C1AB(2)  	call	SPI_RW
   999  0001F9             	movmm	spi_data, local_access_code0
  1000  0001F9   1E08(1)  		MOV		A, local_access_code0
  1001  0001FA   1F10(1)  		MOV		spi_data,A
  1002  0001FB   C1AB(2)  	call	SPI_RW
  1003  0001FC             	movmm	spi_data, local_access_code1
  1004  0001FC   1E09(1)  		MOV		A, local_access_code1
  1005  0001FD   1F10(1)  		MOV		spi_data,A
  1006  0001FE   C1AB(2)  	call	SPI_RW
  1007  0001FF             	movmm	spi_data, local_access_code2
  1008  0001FF   1E0A(1)  		MOV		A, local_access_code2
  1009  000200   1F10(1)  		MOV		spi_data,A
  1010  000201   C1AB(2)  	call	SPI_RW	
  1011  000202   4BD5(1)  	bset	PIN_SPI_CSN
  1012  000203   0E00(2)  	ret

⌨️ 快捷键说明

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