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

📄 r4.asm

📁 cc1100 数据传输汇编程序代码
💻 ASM
字号:
            LIST  P=PIC16F877
            INCLUDE  "P16F877.INC"
            AAA       EQU    33H
            S_DATA    EQU    21H
            R_DATA    EQU    22H
            RSSI      EQU    23H
            BYTE_NUM  EQU    24H            
            RSSI0     EQU    25H
            RETX_NUM2 EQU    26H
            CYCLE     EQU    27H
            CYCLE1    EQU    28H
            CYCLE2    EQU    29H
            RSSI1     EQU    2AH
              BBB     EQU    44H


            ORG     00H
            GOTO    MAIN



            ORG     05H
SEND        
            BCF    STATUS,RP1
            BCF    STATUS,RP0
            MOVF   S_DATA,W
            MOVWF  SSPBUF
     WAIT   BTFSS  PIR1,SSPIF
            GOTO   WAIT
            BCF    PIR1,SSPIF
            RETLW  0

READ       
            BCF    STATUS,RP1
            BSF    STATUS,RP0
    LOOP0   BTFSS  SSPSTAT,BF
            GOTO   LOOP0
            BCF    STATUS,RP0
            MOVF   SSPBUF,W
            MOVWF   R_DATA
            RETLW   0






RD_RSSI     
            BCF    PORTC,2     ;CSN变低
            MOVLW  H'F4'       ;RSSI地址
            MOVWF  S_DATA
            CALL   SEND
            MOVLW  H'FF'
            MOVWF  S_DATA
            CALL   SEND
            CALL   READ
            BSF    PORTC,2     
            BTFSC  R_DATA,7    ;判断是否大于128
            GOTO   DAYU
  XIAOYU    BCF    STATUS,0
            RRF    R_DATA,0    ;除以2
            SUBLW  H'4B'
            MOVWF  RSSI
            RETLW   0

   DAYU     RRF    R_DATA,0
            SUBLW  H'CB'
            MOVWF  RSSI
            RETLW   0


            
 SRSSI1     BTFSC  RSSI0,7    ;判断是否大于128
            GOTO   DAYU0
  XIAOYU0   BCF    STATUS,0
            RRF    RSSI0,0    ;除以2
            SUBLW  H'4B'
            MOVWF  RSSI1
            RETLW   0

   DAYU0    RRF    RSSI0,0
            SUBLW  H'CB'
            MOVWF  RSSI1
            RETLW   0

            





DLY30us
            MOVLW  H'31'
            MOVWF  CYCLE
  LOOP1     DECFSZ CYCLE
            GOTO   LOOP1
            RETLW  0

DLY10us
            MOVLW  H'0F'
            MOVWF  CYCLE
  LOOP2     DECFSZ CYCLE
            GOTO   LOOP2
            RETLW  0

DLY20us     MOVLW  H'20'
            MOVWF  CYCLE
  LOOP20    DECFSZ CYCLE
            GOTO   LOOP20
            RETLW  0

DLY40us     MOVLW  H'42'
            MOVWF  CYCLE
  LOOP40    DECFSZ CYCLE
            GOTO   LOOP40
            RETLW  0

DLY22us     MOVLW  H'24'
            MOVWF  CYCLE
  LOOP21    DECFSZ CYCLE
            GOTO   LOOP21
            RETLW  0

DLY809us   
            MOVLW  H'59'           
            MOVWF  CYCLE
  LOOP3     MOVLW  H'0E'           
            MOVWF  CYCLE1
  LOOP4     DECFSZ CYCLE1,1
            GOTO   LOOP4
            DECFSZ CYCLE,1
            GOTO   LOOP3  
            RETLW  0


DLY2s     
            MOVLW  H'70'           ;
            MOVWF  CYCLE1          ;2+(2+(2+(1+2)*255+1+2)*116+1+2)*112+2
  LOOP5     MOVLW  H'74'
            MOVWF  CYCLE2
  LOOP6     MOVLW  H'FF'           
            MOVWF  CYCLE
  LOOP7     DECFSZ CYCLE,1
            GOTO   LOOP7
            DECFSZ CYCLE2,1
            GOTO   LOOP6 
            DECFSZ CYCLE1,1
            GOTO   LOOP5 
            RETLW  0








CFG_W       ;写配置寄存器
            BCF    PORTC,2     ;CSN变低

            NOP
            MOVLW  H'02'       ;IOCFG0
            MOVWF  S_DATA
            CALL   SEND  
            MOVLW  H'06'       ;
            MOVWF  S_DATA
            CALL   SEND
            BSF    PORTC,2





        
            NOP
            BCF    PORTC,2
            MOVLW  H'06'       ;PKTLEN
            MOVWF  S_DATA
            CALL   SEND  
            MOVLW  H'20'       ;32字节
            MOVWF  S_DATA
            CALL   SEND
            BSF    PORTC,2

            NOP
            BCF    PORTC,2
            MOVLW  H'07'       ;PKTCTRL1
            MOVWF  S_DATA
            CALL   SEND  
            MOVLW  H'04'       
            MOVWF  S_DATA
            CALL   SEND
            BSF    PORTC,2

          
            NOP
            BCF    PORTC,2
            MOVLW  H'08'       ;PKTCTRL0
            MOVWF  S_DATA
            CALL   SEND  
            MOVLW  H'44'       ;定长
            MOVWF  S_DATA
            CALL   SEND
            BSF    PORTC,2

          
            NOP
            BCF    PORTC,2
            MOVLW  H'0B'       ;FSCTRL1
            MOVWF  S_DATA
            CALL   SEND  
            MOVLW  H'08'       ;
            MOVWF  S_DATA
            CALL   SEND
            BSF    PORTC,2

        
            NOP
            BCF    PORTC,2
            MOVLW  H'0D'       ;FREQ2
            MOVWF  S_DATA      
            CALL   SEND 
            MOVLW  H'10'
            MOVWF  S_DATA
            CALL   SEND
            BSF    PORTC,2

            NOP
            BCF    PORTC,2
            MOVLW  H'0E'       ;FREQ1
            MOVWF  S_DATA
            CALL   SEND 
            MOVLW  H'A7'
            MOVWF  S_DATA
            CALL   SEND
            BSF    PORTC,2

           NOP
           BCF    PORTC,2
           MOVLW  H'0F'        ;FREQ0
           MOVWF  S_DATA
           CALL   SEND
           MOVLW  H'62'
           MOVWF  S_DATA
           CALL   SEND
           BSF    PORTC,2        

            NOP
            BCF    PORTC,2
            MOVLW  H'10'     ;MDMCFG4
            MOVWF  S_DATA      
            CALL   SEND 
            MOVLW  H'F5'
            MOVWF  S_DATA
            CALL   SEND
            BSF    PORTC,2

            NOP
            BCF    PORTC,2
            MOVLW  H'11'       ;MDMCFG3
            MOVWF  S_DATA
            CALL   SEND 
            MOVLW  H'83'
            MOVWF  S_DATA
            CALL   SEND
            BSF    PORTC,2

           NOP
           BCF    PORTC,2
           MOVLW  H'12'        ;MDMCFG2
           MOVWF  S_DATA
           CALL   SEND
           MOVLW  H'03'
           MOVWF  S_DATA
           CALL   SEND
           BSF    PORTC,2      

	       
            NOP
            BCF    PORTC,2
            MOVLW  H'13'      ;MDMCFG1
            MOVWF  S_DATA      
            CALL   SEND 
            MOVLW  H'22'
            MOVWF  S_DATA
            CALL   SEND
            BSF    PORTC,2

            NOP
            BCF    PORTC,2
            MOVLW  H'15'       ;DEVIATN
            MOVWF  S_DATA
            CALL   SEND 
            MOVLW  H'15'
            MOVWF  S_DATA
            CALL   SEND
            BSF    PORTC,2



           NOP
           BCF    PORTC,2
           MOVLW  H'18'        ;MCSM0
           MOVWF  S_DATA
           CALL   SEND
           MOVLW  H'18'
           MOVWF  S_DATA
           CALL   SEND
           BSF    PORTC,2  
      
            NOP
            BCF    PORTC,2
            MOVLW  H'19'      ;FOCCFG
            MOVWF  S_DATA      
            CALL   SEND 
            MOVLW  H'16'
            MOVWF  S_DATA
            CALL   SEND
            BSF    PORTC,2

            NOP
            BCF    PORTC,2
            MOVLW  H'1A'       ;BSCFG
            MOVWF  S_DATA
            CALL   SEND 
            MOVLW  H'6C'
            MOVWF  S_DATA
            CALL   SEND
            BSF    PORTC,2

           NOP
           BCF    PORTC,2
           MOVLW  H'1B'        ;AGCCTRL2
           MOVWF  S_DATA
           CALL   SEND
           MOVLW  H'03'
           MOVWF  S_DATA
           CALL   SEND
           BSF    PORTC,2        
  

            NOP
            BCF    PORTC,2
            MOVLW  H'1D'      ;AGCCTRL0
            MOVWF  S_DATA      
            CALL   SEND 
            MOVLW  H'91'
            MOVWF  S_DATA
            CALL   SEND
            BSF    PORTC,2

            NOP
            BCF    PORTC,2
            MOVLW  H'21'       ;FREND1
            MOVWF  S_DATA
            CALL   SEND 
            MOVLW  H'56'
            MOVWF  S_DATA
            CALL   SEND
            BSF    PORTC,2



           NOP
           BCF    PORTC,2
           MOVLW  H'23'       ;FSCAL3
           MOVWF  S_DATA
           CALL   SEND
           MOVLW  H'A9'
           MOVWF  S_DATA
           CALL   SEND
           BSF    PORTC,2  
      
            NOP
            BCF    PORTC,2
            MOVLW  H'24'      ;FSCAL2
            MOVWF  S_DATA      
            CALL   SEND 
            MOVLW  H'2A'
            MOVWF  S_DATA
            CALL   SEND
            BSF    PORTC,2

            NOP
            BCF    PORTC,2
            MOVLW  H'25'       ;FSCAL1
            MOVWF  S_DATA
            CALL   SEND 
            MOVLW  H'00'
            MOVWF  S_DATA
            CALL   SEND
            BSF    PORTC,2

           NOP
           BCF    PORTC,2
           MOVLW  H'26'        ;FSCAL0
           MOVWF  S_DATA
           CALL   SEND
           MOVLW  H'11'
           MOVWF  S_DATA
           CALL   SEND
           BSF    PORTC,2  
           RETLW  0








             


 MAIN
           CALL   DLY2s 
           BCF    STATUS,RP1
           BSF    STATUS,RP0
           BTFSS  PCON,1
           BSF    PCON,1      ;清除上电复位标志

            
           MOVLW  H'13'
           MOVWF  TRISC       ;定义PORTC的方向
           
           MOVLW  H'00'
           MOVWF  TRISA       ;定义PORTA的方向

           MOVLW  H'00'
           MOVWF  TRISB       ;定义PORTB的方向

           MOVLW  H'00'
           MOVWF  TRISD       ;定义PORTD的方向

           MOVLW  H'00'
           MOVWF  TRISE       ;定义PORTE的方向           

           BCF    STATUS,RP0 

           MOVLW  H'04'
           MOVWF  PORTC       ;端口输出0

           MOVLW  H'00'
           MOVWF  PORTA       ;端口输出0

           MOVLW  H'00'
           MOVWF  PORTB       ;端口输出0

           MOVLW  H'00'
           MOVWF  PORTD       ;端口输出0

           MOVLW  H'00'
           MOVWF  PORTE       ;端口输出0
           

           ;屏蔽中断
           MOVLW  H'00'
           MOVWF  INTCON

           ;初始化SPI
           BCF    STATUS,RP1
           BSF    STATUS,RP0
           MOVLW  H'40'
           MOVWF  SSPSTAT
           BCF    STATUS,RP0
           MOVLW  H'20'
           MOVWF  SSPCON     






RESET	   BSF    PORTC,3      ;SCK为高,初始化1100
           BCF    PORTC,5      ;SI为低
           BCF    PORTC,2
           CALL   DLY10us
           BSF    PORTC,2
           CALL   DLY40us
           BCF    PORTC,2
  LOOP111  BTFSC  PORTC,4    
           GOTO   LOOP111
           
           MOVLW  H'30'       ;发SRES,初始
           MOVWF  S_DATA
           CALL   SEND
           BSF    PORTC,2

           CALL   DLY40us
  LOOP112  BTFSC  PORTC,4    
           GOTO   LOOP112
           CALL   CFG_W



            

            




           BCF    STATUS,IRP
           MOVLW  H'30'
           MOVWF  FSR
           MOVLW  H'20'       ;保存数据包长度
           MOVWF  BYTE_NUM




SFRX     MOVLW   H'3A'         ;清空RX_FIFO
         MOVWF   S_DATA
         BCF    PORTC,2     ;CSN变低
         CALL    SEND
         BSF    PORTC,2    

           NOP
           CALL    DLY40us
           NOP

   
        


RX          BCF    PORTC,2    ;使RX
            NOP
            MOVLW  H'34'      ;发SRX
            MOVWF  S_DATA
            CALL   SEND
            BSF    PORTC,2             

            CALL   DLY809us




   IRQ_J   BTFSS  PORTC,0        ;判断IRQ,是否收到同步字
           CALL   RD_RSSI
           BTFSS  PORTC,0
           GOTO   IRQ_J
   SHOUW   BTFSC  PORTC,0        ;判断IRQ,是否接收结束,等接收完毕再读数
           GOTO   SHOUW 
 
           BCF    PORTC,2
           MOVLW  H'FF'
           MOVWF  S_DATA
           CALL   SEND
PAY_LP     MOVLW  H'FF'
           MOVWF  S_DATA
           CALL   SEND
           CALL   READ       
           MOVF   R_DATA,0
           MOVWF  INDF
           INCF   FSR,1
           DECFSZ BYTE_NUM,1
           GOTO   PAY_LP
           BSF    PORTC,2 
           


            NOP
             BCF    PORTC,2          
           MOVLW  H'BF'
           MOVWF  S_DATA
           CALL   SEND
            MOVLW  H'FF'      
            MOVWF  S_DATA
            CALL   SEND
           CALL   READ
           BSF    PORTC,2
           MOVF   R_DATA,0
           MOVWF  RSSI0
           CALL   SRSSI1

           BCF    STATUS,RP1
           BCF    STATUS,RP0	
			MOVLW  H'55'
			SUBWF  AAA,1
			BTFSS   STATUS,2
			GOTO    SFRX
			MOVLW  H'55'
			SUBWF  BBB,1
			BTFSS   STATUS,2
			GOTO    SFRX
            BSF    PORTB,6



			

LOOP000    NOP
           NOP
           GOTO   LOOP000 
           NOP 
           END

     

⌨️ 快捷键说明

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