📄 7122.asm
字号:
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 + -