📄 test.asm
字号:
;---------------for test mode--------------
PIN_IRQ_nRF24L01_TX EQU P0.0 ;input,Interrupt signal, from nRF24L01
PIN_SPI_MISO_TX EQU P1.7 ;input,Master In, Slave Out pin
PIN_SPI_MOSI_TX EQU P1.6 ;output,Master Out, Slave In pin
PIN_SPI_CLK_TX EQU P1.4 ;output,Serial Clock pin
PIN_SPI_CSN_TX EQU P1.3 ;output,Slave Select pin(to CSN, nRF24L01)
PIN_CE_nRF24L01_TX EQU P1.2 ;output,Chip Enable pin signal
;-------------------------------------------
Port_Init_Test:
mov A, #0ffh ;enable all pull-up register
mov P5UR, A
mov P1UR, A
mov P0UR, A
mov P5M, A ;configure all pin as output
mov P1M, A
mov P0M, A
bclr P5M.@BIT(PIN_SPI_MISO) ;MISO input
bclr P0M.@BIT(PIN_IRQ_nRF24L01) ;INT input
bclr P1M.@BIT(PIN_SPI_MISO_TX) ;MISO input
bclr P0M.@BIT(PIN_IRQ_nRF24L01_TX) ;INT input
clr P1OC ;disable open-drain
movmi P5, #10001000b ;MISO=Hiz,MOSI=L,SCK=L,BUZZ=L,CSN=H,CE=L
movmi P1, #10001000b ;MISO=Hiz,MOSI=L,SCK=L,BUZZ=L,CSN=H,CE=L
movmi P0, #00000011b ;INT=Hiz,LED_2H=L
ret
CE_Puls_TX:
bset PIN_CE_nRF24L01_TX
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
bclr PIN_CE_nRF24L01_TX
ret
Init_INT:
clr INTRQ
clr INTEN
movmi PEDGE, #10h ;falling edge trigger
;B0BSET FP01IEN ;enable INT from nRF24L01
B0BSET FP00IEN ;enable INT from nRF24L01(TX)
eint
ret
SPI_RW_TX:
movmi bit_count, #8
ReadWrite_Loop_TX:
jb1 spi_data.7, MOSI_High_TX
MOSI_Low_TX:
bclr PIN_SPI_MOSI_TX
jmp Data_Shift_Left_TX
MOSI_High_TX:
bset PIN_SPI_MOSI_TX
Data_Shift_Left_TX:
rlcm spi_data ;spi_data<<1
bset PIN_SPI_CLK_TX
jb0 PIN_SPI_MISO_TX, MISO_Low_TX
MISO_High_TX:
bset spi_data.0
jmp CLK_Low_TX
MISO_Low_TX:
bclr spi_data.0
CLK_Low_TX:
bclr PIN_SPI_CLK_TX
decms bit_count ;--bit_count==0?
jmp ReadWrite_Loop_TX
bclr PIN_SPI_MOSI_TX ;MOSI low before return
ret
;*****************************************************************
;Function:SPI_Read_Reg
;Description:SPI read write 1 byte data from register
;input:spi_reg
;output:spi_value
;*****************************************************************
SPI_Read_Reg_TX:
bclr PIN_SPI_CSN_TX
movmm spi_data, spi_reg_addr
call SPI_RW_TX
clr spi_data
call SPI_RW_TX
movmm spi_value, spi_data
bset PIN_SPI_CSN_TX
ret
;*****************************************************************
;Function:SPI_Write_Reg
;Description:SPI write 1 byte data to register
;input:spi_value,spi_reg_addr
;output:spi_status stores the value of register STATUS
;*****************************************************************
SPI_Write_Reg_TX:
bclr PIN_SPI_CSN_TX
movmm spi_data, spi_reg_addr
call SPI_RW_TX
movmm spi_status, spi_data
movmm spi_data, spi_value
call SPI_RW_TX
bset PIN_SPI_CSN_TX
ret
;*****************************************************************
;Function:SPI_Read_Buf
;Description:SPI write 1 byte data to register
;input:access_code0,access_code1,command
;output:none
;*****************************************************************
Read_Rx_Pload_TX:
SPI_Read_Buf_TX:
bclr PIN_SPI_CSN_TX
movmi spi_data, #RD_RX_PLOAD
call SPI_RW_TX
clr spi_data
call SPI_RW_TX
movmm access_code0, spi_data
clr spi_data
call SPI_RW_TX
movmm access_code1, spi_data
clr spi_data
call SPI_RW_TX
movmm access_code2, spi_data
clr spi_data
call SPI_RW_TX
movmm command, spi_data
bset PIN_SPI_CSN_TX
ret
;*****************************************************************
;Function:SPI_Write_Buf
;Description:SPI write 1 byte data to register
;input:access_code0,access_code1,command
;output:none
;*****************************************************************
Write_Tx_Pload_TX:
SPI_Write_Buf_TX:
bclr PIN_SPI_CSN_TX
movmi spi_data, #WR_TX_PLOAD
call SPI_RW_TX
movmm spi_data, access_code0
call SPI_RW_TX
movmm spi_data, access_code1
call SPI_RW_TX
movmm spi_data, access_code2
call SPI_RW_TX
movmm spi_data, command
call SPI_RW_TX
bset PIN_SPI_CSN_TX
ret
;-----------------------------------------------------------------
Tx_Mode_TX:
bclr PIN_SPI_CSN_TX ;Set TX address device
movmi spi_data, #WRITE_REG+TX_ADDR
call SPI_RW_TX
movmi spi_data, #TX_ADDR0_DEF
call SPI_RW_TX
movmi spi_data, #TX_ADDR1_DEF
call SPI_RW_TX
movmi spi_data, #TX_ADDR2_DEF
call SPI_RW_TX
movmi spi_data, #TX_ADDR3_DEF
call SPI_RW_TX
movmi spi_data, #TX_ADDR4_DEF
call SPI_RW_TX
bset PIN_SPI_CSN_TX
nop
nop
bclr PIN_SPI_CSN_TX ;Use the same address on the RX device as the TX device
movmi spi_data, #WRITE_REG+RX_ADDR_P0
call SPI_RW_TX
movmi spi_data, #TX_ADDR0_DEF
call SPI_RW_TX
movmi spi_data, #TX_ADDR1_DEF
call SPI_RW_TX
movmi spi_data, #TX_ADDR2_DEF
call SPI_RW_TX
movmi spi_data, #TX_ADDR3_DEF
call SPI_RW_TX
movmi spi_data, #TX_ADDR4_DEF
call SPI_RW_TX
bset PIN_SPI_CSN_TX
nop
nop
bclr PIN_SPI_CSN_TX ;Writes data to TX payload
movmi spi_data, #WR_TX_PLOAD
call SPI_RW_TX
movmi spi_data, #TX_DATA0
call SPI_RW_TX
movmi spi_data, #TX_DATA1
call SPI_RW_TX
movmi spi_data, #TX_DATA2
call SPI_RW_TX
bset PIN_SPI_CSN_TX
movmi spi_reg_addr, #WRITE_REG+EN_AA
movmi spi_value, #0x01 ;Enable Auto.Ack:Pipe0
call SPI_Write_Reg_TX
movmi spi_reg_addr, #WRITE_REG+EN_RXADDR
movmi spi_value, #0x01 ;Enable Pipe0
call SPI_Write_Reg_TX
movmi spi_reg_addr, #WRITE_REG+SETUP_RETR ;Tx configuration
movmi spi_value, #0x1a ;500us+ 86us, 10 retrans...
call SPI_Write_Reg_TX
movmi spi_reg_addr, #WRITE_REG+RF_CH
movmi spi_value, #TX_CH_DEF ;Select default RF channel
call SPI_Write_Reg_TX
movmi spi_reg_addr, #WRITE_REG+RF_SETUP
movmi spi_value, #0x0f ;TX_PWR:0dBm, Datarate:2Mbps, LNA:HCURR
call SPI_Write_Reg_TX
movmi spi_reg_addr, #WRITE_REG+CONFIG
movmi spi_value, #0x0e ;Set PWR_UP bit, enable CRC(2 bytes) & Prim:TX. RX_DR enabled..
call SPI_Write_Reg_TX
ret
;########################################
INT0_ISR:
bclr FP00IRQ ;clear FP01IRQ to accept the next interrup
movmi spi_reg_addr, #WRITE_REG+STATUS
movmi spi_value, #MASK_IRQ_FLAGS
call SPI_Write_Reg_TX
mov A, spi_status
and A, #MASK_IRQ_FLAGS
cmprs A, #MASK_RX_DR_FLAG
jz Rx_DR_Int_TX ;RX_DR
cmprs A, #MASK_TX_DS_FLAG
jz Tx_DS_Int_TX ;TX_DS
cmprs A, #MASK_MAX_RT_FLAG
jz Max_RT_Int_TX ;MAX_RT
jmp ISR_Exit ;default exit
Rx_DR_Int_TX:
movmi irq_source, #RX_DR
rrc spi_status ;A<-RRC spi_status
and A, #07h ;get low 3 bit for Pipe Number
add A, #RX_PW_P0 ;get Pipe address
mov spi_reg_addr, A ;write the address to read from
call SPI_Read_Reg_TX
movmm pload_width, spi_value
;Rx data and store to data_buf
clr Y
movmi Z, #data_buf
bclr PIN_SPI_CSN_TX
movmi spi_data, #RD_RX_PLOAD
call SPI_RW_TX
Receive_Loop_TX:
clr spi_data
call SPI_RW_TX
movmm @YZ, spi_data
inc Z
djnz pload_width, Receive_Loop_TX
bset PIN_SPI_CSN_TX
jmp ISR_Exit
Tx_DS_Int_TX:
movmi irq_source, #TX_DS
jmp ISR_Exit
Max_RT_Int_TX:
movmi irq_source, #MAX_RT
jmp ISR_Exit
;#######################################
;-----------------------------------------------------------
/*
call Port_Init_Test
call Init_INT
call Rx_Mode ;port5 in Rx mode
call Tx_Mode_TX ;port1 in Tx mode
Loop:
nop
nop
nop
nop
call CE_Puls_TX ;Tx data
lop:
nop
nop
nop
nop
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -