⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2.4g_rf.asm

📁 AMIC7121非常便宜且方便应用的2.4G模组
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;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 + -