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