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

📄 2.4g_rf.asm

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




       

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -