?? 2.4g_rf.asm
字號:
;EMC78P418 Li charge
INCLUDE "418_MAC.asm"
INCLUDE "RAM_define.asm"
ORG 0X000
JMP _START
;-------------------------------------------------
;TIMEROUT INTERRUPT SUBROUTINE
;-------------------------------------------------
ORG 0X008
MOV STORE_ACC,A
SWAP STORE_ACC
SWAPA STATUS
MOV STORE_STATUS,A
;SWAPA R4
;MOV STORE_R4,A
BANK0
JBC RF,ADIF
JMP AD_INT
CLR RF
JMP INT_END
ORG 0X050
INT_END:
;SWAPA STORE_R4
;MOV R4,A
SWAPA STORE_STATUS
MOV STATUS,A
SWAPA STORE_ACC
RETI
EXT_INT:
BC RF,EXIf
JMP INT_END
AD_INT:
BC RF,ADIF
JBC FLAG,BANK_CH
JMP _BANK2_DELL
MOV A,BANK_REG1
JBS STATUS,Z
JMP _BANK1_DELL
MOV A,@0X10
MOV BANK_REG1,A
MOV A,@0X20
MOV FSR,A
_BANK1_DELL:
BANK1
RRC ADDATA1H
RRC ADDATA1L
RRC ADDATA1H
RRC ADDATA1L
MOV A,ADDATA1H
AND A,@0X03
MOV IND,A
INC FSR
MOV A,ADDATA1L
MOV IND,A
INC FSR
BANK0
DJZ BANK_REG1
JMP _OPEN_AD_NK
BS FLAG,BANK_CH
JMP _OPEN_AD_NK
_BANK2_DELL:
MOV A,BANK_REG1
JBS STATUS,Z
JMP _BANK2_DELL1
MOV A,@0X10
MOV BANK_REG1,A
MOV A,@0X20
MOV FSR,A
_BANK2_DELL1:
BANK2
RRC ADDATA1H
RRC ADDATA1L
RRC ADDATA1H
RRC ADDATA1L
MOV A,ADDATA1H
AND A,@0X03
MOV IND,A
INC FSR
MOV A,ADDATA1L
MOV IND,A
INC FSR
BANK0
DJZ BANK_REG1
JMP _OPEN_AD_NK
BC FLAG,BANK_CH
BS FLAG,AD_OK ;已采樣32次儲存
JMP _OPEN_AD_NK
_OPEN_AD_NK:
MOV A,@10000000B
MOV R9,A
BS R9,ADPD
NOP
BS R9,adrun
JMP INT_END
PWM1_INT:
BC RF,PWM1IF
JMP INT_END
PWM2_INT:
BC RF,PWM2IF
JMP INT_END
PWM3_INT:
BC RF,PWM3IF
JMP INT_END
CMP_INT:
BC RF,CMPIF
JMP INT_END
_DELAYUS:
MOV DYCN,A
NOP
NOP
DJZ DYCN
JMP $-3
RET
_DELAYMS:
MOV DYCN,A
_REDO:
WDTC
MOV A,@250 ;0.5uS X 8 X 250 = 1MS
MOV CT0,A
NOP
NOP
NOP
NOP
NOP
DJZ CT0
JMP $-6
DJZ DYCN
JMP _REDO
RET
CAL_BANK_TAB:
ADD PC,A
RETL @0X0
RETL @11101001B
RETL @11001001B
RETL @10101001B
RETL @10001001B
RETL @01101001B
RETL @01001001B
RETL @00101001B
RETL @00001001B
_SPI_WRITE:
MOV A,@0X8
MOV COUNT,A
BC PORT5,SPI_CS
BC PORT5,SPI_CLK
BS PORT5,SPI_RXD
_SPI_LP1:
BS PORT5,SPI_CLK
RLC SPI_ADDRE
JBS STATUS,C
JMP $+3
BS PORT5,SPI_RXD
JMP $+2
BC PORT5,SPI_RXD
NOP
BC PORT5,SPI_CLK
DJZ COUNT
JMP _SPI_LP1
MOV A,@0X10
MOV COUNT,A
_SPI_LP2:
BS PORT5,SPI_CLK
RLC SPI_BUFL
RLC SPI_BUFH
JBS STATUS,C
JMP $+3
BS PORT5,SPI_RXD
JMP $+2
BC PORT5,SPI_RXD
NOP
BC PORT5,SPI_CLK
DJZ COUNT
JMP _SPI_LP2
BC PORT5,SPI_RXD
BS PORT5,SPI_CS
RET
_SPI_READ:
MOV A,@0X8
MOV COUNT,A
BC PORT5,SPI_CS
_SPI_LK1:
BS PORT5,SPI_CLK
RLC SPI_ADDRE
JBS STATUS,C
JMP $+3
BS PORT5,SPI_RXD
JMP $+2
BC PORT5,SPI_RXD
NOP
BC PORT5,SPI_CLK
DJZ COUNT
JMP _SPI_LK1
MOV A,@0X10
MOV COUNT,A
_SPI_LK2:
BS PORT5,SPI_CLK
NOP
NOP
JBS PORT5,SPI_TXD
JMP $+3
BS STATUS,C
JMP $+2
BC STATUS,C
RLC SPI_BUFL
RLC SPI_BUFH
NOP
BC PORT5,SPI_CLK
DJZ COUNT
JMP _SPI_LK2
BS PORT5,SPI_CS
NOP
RET
;****************************************
_RESET_RF:
BS PORT5,SPI_CS
BC PORT6,MS1
BC PORT6,CD_TXEN
MOV A,@10001100B ;Address 03 Mode control register
MOV SPI_ADDRE,A
MOV A,@0x03
MOV SPI_BUFH,A
MOV A,@0xD2 ;RESET CHIP
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@0X20
CALL _DELAYMS
MOV A,@10001100B ;Address 03 Mode control register
MOV SPI_ADDRE,A
MOV A,@0x03
MOV SPI_BUFH,A
MOV A,@0xD3
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@10000000B ;Address 00
MOV SPI_ADDRE,A
MOV A,@0x09 ;2400M
MOV SPI_BUFH,A
MOV A,@0x60
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@10000100B ;Address 01
MOV SPI_ADDRE,A
MOV A,@0x0B ;
MOV SPI_BUFH,A
MOV A,@0x1B
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@10001000B ;Address 02
MOV SPI_ADDRE,A
MOV A,@0x22
MOV SPI_BUFH,A
MOV A,@0x31
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@10001100B ;Address 03 Mode control register
MOV SPI_ADDRE,A
MOV A,@0x03
MOV SPI_BUFH,A
MOV A,@0xD3
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@10010000B ;Address 04
MOV SPI_ADDRE,A
MOV A,@0xFF
MOV SPI_BUFH,A
MOV A,@0xD0
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@10010100B ;Address 05
MOV SPI_ADDRE,A
MOV A,@0xE2
MOV SPI_BUFH,A
MOV A,@0x3F
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@10011000B ;Address 06
MOV SPI_ADDRE,A
MOV A,@0x06
MOV SPI_BUFH,A
MOV A,@0xF6
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@10011100B ;Address 07
MOV SPI_ADDRE,A
MOV A,@0x00
MOV SPI_BUFH,A
MOV A,@0x30
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@10100000B ;Address 08 FIFO control register
MOV SPI_ADDRE,A ;64 Bytes
MOV A,@0x0F
MOV SPI_BUFH,A
MOV A,@0xC0
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@10100100B ;Address 09
MOV SPI_ADDRE,A
MOV A,@0X54 ;1
MOV SPI_BUFH,A
MOV A,@0X54
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@10100100B
MOV SPI_ADDRE,A
MOV A,@0X75 ;2
MOV SPI_BUFH,A
MOV A,@0X75
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@10100100B
MOV SPI_ADDRE,A
MOV A,@0XC5 ;3
MOV SPI_BUFH,A
MOV A,@0XC5
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@10100100B
MOV SPI_ADDRE,A
MOV A,@0X8C ;4
MOV SPI_BUFH,A
MOV A,@0X8C
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@10100100B
MOV SPI_ADDRE,A
MOV A,@0XC7 ;5
MOV SPI_BUFH,A
MOV A,@0XC7
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@10100100B
MOV SPI_ADDRE,A
MOV A,@0X33 ;6
MOV SPI_BUFH,A
MOV A,@0X33
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@10100100B
MOV SPI_ADDRE,A
MOV A,@0X45 ;7
MOV SPI_BUFH,A
MOV A,@0X45
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@10100100B
MOV SPI_ADDRE,A
MOV A,@0XE7 ;8
MOV SPI_BUFH,A
MOV A,@0XE7
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@10100100B
MOV SPI_ADDRE,A
MOV A,@0X2A ;9
MOV SPI_BUFH,A
MOV A,@0X2A
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@10110000B ;Address 0C Calibration control register1
MOV SPI_ADDRE,A
MOV A,@0X01
MOV SPI_BUFH,A
MOV A,@0XF4
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@10110100B ;Address 0D Calibration control register2
MOV SPI_ADDRE,A
MOV A,@0X00
MOV SPI_BUFH,A
MOV A,@0X01
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@10111000B ;Address 0E
MOV SPI_ADDRE,A
MOV A,@0X0D
MOV SPI_BUFH,A
MOV A,@0X83
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@10001100B ;Address 03 Mode control register
MOV SPI_ADDRE,A
MOV A,@0x01 ;EXIF = 0
MOV SPI_BUFH,A
MOV A,@0xD3
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@10110100B ;Address 0D Calibration control register2
MOV SPI_ADDRE,A
MOV A,@0X00
MOV SPI_BUFH,A
MOV A,@0X03
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@20 ;DELAY 20MS
CALL _DELAYMS
MOV A,@10001100B ;Address 03 Mode control register
MOV SPI_ADDRE,A
MOV A,@0x03 ;EXIF = 1
MOV SPI_BUFH,A
MOV A,@0xD3
MOV SPI_BUFL,A
CALL _SPI_WRITE
_CAL_LOOP:
MOV A,@00110100B
MOV SPI_ADDRE,A
CALL _SPI_READ
WDTC
JBC SPI_BUFL,1
JMP _CAL_LOOP
MOV A,@10011100B ;Address 07
MOV SPI_ADDRE,A
MOV A,@0x00
MOV SPI_BUFH,A
MOV A,@0x37
MOV SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@00111100B
MOV SPI_ADDRE,A
CALL _SPI_READ
MOV A,SPI_BUFH
MOV IF_FILTER_RH,A
MOV A,SPI_BUFL
MOV IF_FILTER_RL,A
MOV A,@01000000B
MOV SPI_ADDRE,A
CALL _SPI_READ
MOV A,SPI_BUFH
MOV DATA_FILTER_RH,A
MOV A,SPI_BUFL
MOV DATA_FILTER_RL,A
MOV A,@01000100B
MOV SPI_ADDRE,A
CALL _SPI_READ
MOV A,SPI_BUFH
MOV DEMOD_RH,A
MOV A,SPI_BUFL
MOV DEMOD_RL,A
MOV A,@01001000B
MOV SPI_ADDRE,A
CALL _SPI_READ
MOV A,SPI_BUFH
MOV RH_REG_RH,A
MOV A,SPI_BUFL
MOV RH_REG_RL,A
MOV A,@01001100B
MOV SPI_ADDRE,A
CALL _SPI_READ
MOV A,SPI_BUFH
MOV RL_REG_RH,A
MOV A,SPI_BUFL
MOV RL_REG_RL,A
;-----------------------------------------
MOV A,@0X8
MOV TEMP,A
_CAL_BANK_LOOP:
MOV A,@10000000B
MOV SPI_ADDRE,A
MOV A,TEMP
CALL CAL_BANK_TAB
MOV SPI_BUFH,A
MOV A,@0X60
MOV SPI_BUFL,A
MOV A,@12
ADD SPI_BUFL,A
CALL _SPI_WRITE
MOV A,@0X3
CALL _DELAYMS
MOV A,@00000100B
MOV SPI_ADDRE,A
CALL _SPI_READ
RRC SPI_BUFH
RRC SPI_BUFH
RRC SPI_BUFH
RRC SPI_BUFH
RRC SPI_BUFH
RRC SPI_BUFH
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -