?? 2.4g_rf.asm
字號:
MOV A,@0X3
AND SPI_BUFH,A
MOV A,@0X0
XOR A,SPI_BUFH
JBC STATUS,Z
JMP _CAL_NEXT
MOV A,@0X1
XOR A,SPI_BUFH
JBC STATUS,Z
JMP _CAL_OK
MOV A,@0X2
XOR A,SPI_BUFH
JBC STATUS,Z
JMP _CAL_OK
_CAL_NEXT:
DJZ TEMP
JMP _CAL_BANK_LOOP
NOP
NOP
_CAL_OK:
RET
_WAIT_RX:
/*
MOV A,@00000000B ;Address 00
MOV SPI_ADDRE,A
CALL _SPI_READ
MOV A,@10000000B ;Address 00
MOV SPI_ADDRE,A
JBS PORT5,CH_12
JMP _enter_CH1
JMP _enter_CH2
_enter_CH1:
MOV A,@0x60
ADD A,@10
MOV SPI_BUFL,A ;2410M
JMP _enter_LP
_enter_CH2:
MOV A,@0x60
ADD A,@10
MOV SPI_BUFL,A ;2460M
_enter_LP:
CALL _SPI_WRITE */
MOV A,@00001100B ;Address 03 Mode control register
MOV SPI_ADDRE,A
CALL _SPI_READ
MOV A,@10001100B
MOV SPI_ADDRE,A
MOV A,@11110111B ;SET TRC = 0
AND SPI_BUFL,A
CALL _SPI_WRITE
NOP
BS PORT6,MS1
BC PORT5,LED
WDTC
JBS PORT5,7 ;RX_SYN = 1?
JMP $-2
WDTC
JBS PORT6,3 ;FP_RDY = 1?
JMP $-2
NOP
BC PORT6,MS1
RET
_RX_DATA_BANK:
MOV A,@0X20
MOV PARM,A
MOV A,@0XC0
AND FSR,A
MOV A,@0X20
OR FSR,A
_RX_LOOP:
MOV A,@0X8
MOV COUNT,A
_RX_LP:
BS PORT6,F_CLK
JBC PORT6,TRXD
JMP _RX_SETBIT
BC STATUS,C
JMP _RX_NT
_RX_SETBIT:
BS STATUS,C
_RX_NT:
RLC FIFO_BUF
BC PORT6,F_CLK
DJZ COUNT
JMP _RX_LP
MOV A,FIFO_BUF
MOV IND,A
INC FSR
WDTC
DJZ PARM
JMP _RX_LOOP
RET
_Access_data_tab:
JBC FLAG,DATA_F
JMP _STR_LPP
MOV A,DATA_REG
JBS STATUS,Z
JMP _STR_LK1
MOV A,@0X20
MOV DATA_REG,A
MOV A,@0X20
MOV FSR,A
_STR_LK1:
BANK1
MOV A,IND
BANK0
MOV DATA_BUF,A
INC FSR
DJZ DATA_REG
JMP _STR_END
BS FLAG,DATA_F
_STR_LPP:
MOV A,DATA_REG
JBS STATUS,Z
JMP _STR_LP1
MOV A,@0X20
MOV DATA_REG,A
MOV A,@0X20
MOV FSR,A
_STR_LP1:
BANK1
MOV A,IND
BANK0
MOV DATA_BUF,A
INC FSR
DJZ DATA_REG
JMP _STR_END
BC FLAG,DATA_F
JMP _STR_END
_STR_END:
BANK0
RET
;************************************
_START:
NOP
DISI
ROM_PAGE1
CALL _CLEAN_ALL_RAM
CALL _IO_INIT
CALL _AD_adjust
ROM_PAGE0
CLR TMR
MOV A,@000001110B ; TCC = (1/4M)/*1*(1:128)
CONTW
CALL _RESET_RF
MOV A,@00001100B ;Address 03 Mode control register
MOV SPI_ADDRE,A
CALL _SPI_READ
MOV A,@00000100B ;SET SYN = 1
OR SPI_BUFL,A
MOV A,@10001100B
MOV SPI_ADDRE,A
CALL _SPI_WRITE
MOV A,@10000000B
MOV R9,A
BS R9,ADPD
NOP
BS R9,adrun
IOC_PAGE0
MOV A,@00001000B
IOW IOCF0
ENI
_MAIN_LOOP:
JBS PORT6,TX_RX
JMP _ENTER_TX
JMP _ENTER_RX
_ENTER_TX:
WDTC
JBS FLAG,AD_OK
JMP _MAIN_LOOP
BC FLAG,AD_OK
BC PORT5,LED
MOV A,@0X0
IOW IOCF0
DISI
MOV A,@00100000B
MOV SPI_ADDRE,A
CALL _SPI_READ
MOV A,@10100000B
MOV SPI_ADDRE,A
MOV A,@00000100B ;EFW = 1
OR SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@0X40 ;Access code +64Byte
MOV PARM,A
_FIFO_LP2:
MOV A,@0X8
MOV COUNT,A
CALL _Access_data_tab
MOV A,DATA_BUF
MOV FIFO_BUF,A
_FIFO_LP1:
BS PORT6,F_CLK
RLC FIFO_BUF
JBS STATUS,C
JMP $+3
BS PORT6,TRXD
JMP $+2
BC PORT6,TRXD
NOP
BC PORT6,F_CLK
DJZ COUNT
JMP _FIFO_LP1
DJZ PARM
JMP _FIFO_LP2
BS PORT6,TRXD
MOV A,@00100000B
MOV SPI_ADDRE,A
CALL _SPI_READ
MOV A,@10100000B
MOV SPI_ADDRE,A
MOV A,@11111011B ;EFW = 0
AND SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@00001100B
MOV SPI_ADDRE,A
CALL _SPI_READ
MOV A,@10001100B
MOV SPI_ADDRE,A
MOV A,@00001000B ;TRC = 1
OR SPI_BUFL,A
CALL _SPI_WRITE
BS PORT6,MS1
MOV A,@0X5
CALL _DELAYUS
BS PORT6,CD_TXEN
WDTC
JBS PORT6,FP_RDY
JMP $-2
MOV A,@0X5
CALL _DELAYUS
BC PORT6,CD_TXEN
BC PORT6,MS1
WDTC
MOV A,@10000000B
MOV R9,A
BS R9,ADPD
NOP
BS R9,adrun
MOV A,@00001000B
IOW IOCF0
ENI
INC LED_COUNT
MOV A,@0X10
SUB A,LED_COUNT
JBS STATUS,C
JMP _MAIN_LOOP
BS PORT5,LED
CLR LED_COUNT
JMP _MAIN_LOOP
;*************************************
_ENTER_RX:
WDTC
CALL _WAIT_RX
MOV A,@10
CALL _DELAYMS
BS PORT5,LED
MOV A,@00100000B ;Address 08 FIFO control register
MOV SPI_ADDRE,A ;64 Bytes
CALL _SPI_READ
MOV A,@10100000B
MOV SPI_ADDRE,A
MOV A,@00010000B ;EFR = 1
OR SPI_BUFL,A
CALL _SPI_WRITE
BANK1
CALL _RX_DATA_BANK
BANK2
CALL _RX_DATA_BANK
NOP
MOV A,@00100000B ;Address 08 FIFO control register
MOV SPI_ADDRE,A ;64 Bytes
CALL _SPI_READ
MOV A,@10100000B
MOV SPI_ADDRE,A
MOV A,@11101111B ;EFR = 0
AND SPI_BUFL,A
CALL _SPI_WRITE
NOP
MOV A,@20
CALL _DELAYMS
JMP _MAIN_LOOP
;***********ROMPAGE 1*****************************
ORG 0X400
_IO_INIT:
MOV A,@00000001B ;SET AS IO/AD
MOV R8,A
MOV A,@00000000B
MOV R9,A ;ADCON
MOV A,@00000000B
MOV RA,A ;ADOC AD 校正
;MOV RB,A ;ADDATA
;MOV RC,A ;ADDATA1H
;MOV RD,A ;ADDATA1L
MOV A,@11110000B
MOV RE,A ;Disable awake
IOC_PAGE0
MOV A,@00000000B
IOW IOC80 ;PWMCON
MOV A,@00000000B
IOW IOC90 ;TMRCON
MOV A,@00000000B
IOW IOCA0 ;Disable OP
MOV A,@0X0FF
IOW IOCB0 ;Disable Port6 pull-down
IOW IOCC0 ;Disable Port5 open-drain
MOV A,@10010101B
IOW IOCD0 ;Enable P6.7 pull-up
MOV A,@0X0
IOW IOCE0 ;disable WDT
IOW IOCF0 ;disable all int
IOC_PAGE1
MOV A,@0X0
IOW IOC51
IOW IOC61
IOW IOC71
IOW IOC81
IOW IOC91
IOW IOCA1
IOW IOCB1
IOW IOCC1
IOW IOCD1
IOW IOCE1
IOW IOCF1
IOC_PAGE0
MOV A,@11011000B
IOW PORT5
MOV PORT5,A
MOV A,@00001011B
IOW PORT6
MOV PORT6,A
MOV A,@0X0
IOW PORT7
MOV PORT7,A
RET
_CLEAN_ALL_RAM:
CALL _CLR_BANK00
CALL _CLR_BANK0
CALL _CLR_BANK1
CALL _CLR_BANK2
CALL _CLR_BANK3
RET
_CLR_BANK00: ;10--3F
MOV A,@0X10
MOV FSR,A
CLR_LOOP:
CLR IND
INC FSR
MOV A,FSR
AND A,@0X3F
JBS STATUS,Z
JMP CLR_LOOP
RET
;===========
_CLR_BANK0:
MOV A,@0X20
MOV FSR,A
BANK0
JMP CLR_LOOP
_CLR_BANK1:
MOV A,@0X20
MOV FSR,A
BANK1
JMP CLR_LOOP
_CLR_BANK2:
MOV A,@0X20
MOV FSR,A
BANK2
JMP CLR_LOOP
_CLR_BANK3:
MOV A,@0X20
MOV FSR,A
BANK3
JMP CLR_LOOP
_AD_adjust:
MOV A,@00000111B
MOV TEMP,A
AD_loop:
MOV A,TEMP
MOV RA,A ;ADOC
MOV A,@10000000B
MOV R9,A ;ADCON
BS R9,ADPD
BS RA,7
NOP
BS R9,adrun
AD_LOOP1:
JBC R9,adrun
JMP $-1
MOV A,@0X0
SUB A,ADDATA1H
JBS STATUS,C
JMP AD_LOOP2
JBS STATUS,Z
JMP AD_LOOP3
AD_LOOP2:
MOV A,@0X2
SUB A,ADDATA1L
JBS STATUS,C
JMP AD_LOOP4
AD_LOOP3:
MOV A,@00001000B
ADD TEMP,A
JMP AD_LOOP
AD_LOOP4:
BC RA,7
RET
/* ADD PC,A
RETL @0X3C ;1
RETL @0XDE
RETL @0X05
RETL @0X83
RETL @0X5F
RETL @0XE2
RETL @0X93
RETL @0XB7
RETL @0XAD ;2
RETL @0XCC
RETL @0X12
RETL @0X9B
RETL @0X6E
RETL @0X77
RETL @0XF1
RETL @0X62
RETL @0XB5 ;3
RETL @0X95
RETL @0XCF
RETL @0X23
RETL @0X01
RETL @0X31
RETL @0XDB
RETL @0X4A
RETL @0X34 ;4
RETL @0XFB
RETL @0X55
RETL @0X6E
RETL @0XBC
RETL @0X67
RETL @0X10
RETL @0XEB
RETL @0X88 ;5
RETL @0XE5
RETL @0X19
RETL @0XC1
RETL @0X0B
RETL @0X5B
RETL @0X09
RETL @0X22
RETL @0XC0 ;6
RETL @0X42
RETL @0XA8
RETL @0X55
RETL @0X8A
RETL @0X26
RETL @0X70
RETL @0XEE
RETL @0X30 ;7
RETL @0X97
RETL @0XEB
RETL @0X54
RETL @0X15
RETL @0XFA
RETL @0X47
RETL @0X8B
RETL @0X13 ;8
RETL @0X1E
RETL @0X6F
RETL @0X05
RETL @0X5A
RETL @0X41
RETL @0X77
RETL @0XD0 */
end
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -