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

📄 cc1100_pa_rx.mac

📁 RF Wireless is st_tr1100_pa. It uses CC1100 control everything its.
💻 MAC
字号:

	NOLIST
; PICBASIC PRO(TM) Compiler 2.50a, (c) 1998, 2007 microEngineering Labs, Inc. All Rights Reserved.  

LABEL?L macro Label
        RST?RP
    ifdef PM_USED
        LALL
Label
        XALL
    else
Label
    endif
    endm

AIN?BBB macro Bin, Bout, Bndx
	MOVE?BA	Bndx
        addlw   low (Bout)
        movwf   FSR0L
	movlw	(Bout) >> 8
	clrf	FSR0H
	addwfc	FSR0H, F
        MOVE?BB Bin, INDF0
    endm

AOUT?BBB macro Bin, Bndx, Bout
        MOVE?BA Bndx
        addlw   low (Bin)
        movwf   FSR0L
	movlw	(Bin) >> 8
	clrf	FSR0H
	addwfc	FSR0H, F
        MOVE?BB INDF0, Bout
    endm

SUB?BCW macro Bin, Cin, Wout
    if ((Cin) == 1)
        CHK?RP  Bin
        decf    Bin, W
    else
        movlw   low (Cin)
        CHK?RP  Bin
        subwf   Bin, W
    endif
        MOVE?AW Wout
        movlw   (Cin) >> 8
        subwfb	(Wout) + 1, F
    endm

AND?BCB macro Bin, Cin, Bout
    if (Bout == Bin)
        movlw   Cin
        CHK?RP  Bin
        andwf   Bin, F
    else
        movlw   Cin
        CHK?RP  Bin
        andwf   Bin, W
        MOVE?AB Bout
    endif
    endm

CMPEQ?BCL macro Bin, Cin, Label
    if (((Cin) > -100h) & ((Cin) < 100h))
        CLRWDT?
        MOVE?BA Bin
        sublw   Cin
        BIT?GOTO 1, STATUS, Z, Label
    endif
    endm

CMPGT?BBL macro Bin1, Bin2, Label
        CLRWDT?
        MOVE?BA Bin1
        CHK?RP  Bin2
        subwf   Bin2, W
        BIT?GOTO 0, STATUS, C, Label
    endm

CMPGT?BCL macro Bin, Cin, Label
    if ((Cin) < 0)
        L?GOTO  Label
    else
      if ((Cin) < 0ffh)
        CLRWDT?
        MOVE?CA (Cin) + 1
        CHK?RP  Bin
        subwf   Bin, W
        BIT?GOTO 1, STATUS, C, Label
      endif
    endif
    endm

CMPGT?BWL macro Bin, Win, Label
        MOVE?BW Bin, R0
        MOVE?WWA Win, R1
        L?CALL  CMPGT
        BIT?GOTO 0, STATUS, Z, Label
    endm
CMPGT_USED = 1

CMPLE?BCL macro Bin, Cin, Label
    if ((Cin) >= 0ffh)
        L?GOTO  Label
    else
      if ((Cin) >= 0)
        CLRWDT?
        MOVE?CA (Cin) + 1
        CHK?RP  Bin
        subwf   Bin, W
        BIT?GOTO 0, STATUS, C, Label
      endif
    endif
    endm

CMPNE?BCL macro Bin, Cin, Label
    if (((Cin) > -100h) & ((Cin) < 100h))
        CLRWDT?
        MOVE?BA Bin
        sublw   Cin
        BIT?GOTO 0, STATUS, Z, Label
    else
        L?GOTO  Label
    endif
    endm

CMPNE?TCL macro Regin, Bitin, Cin, Label
    if ((Cin) == 0)
        CLRWDT?
        BIT?GOTO 1, Regin, Bitin, Label
    else
      if ((Cin) == 1)
        CLRWDT?
        BIT?GOTO 0, Regin, Bitin, Label
      else
        L?GOTO  Label
      endif
    endif
    endm

SHIFTL?BCB macro Bin, Cin, Bout
    if ((Cin) == 1)
        bcf     STATUS, C
      if ((Bout) == (Bin))
        CHK?RP  Bout
        rlcf    Bout, F
      else
        CHK?RP  Bin
        rlcf    Bin, W
        MOVE?AB Bout
      endif
    else
        MOVE?BB Bin, R0
        movlw   Cin
        L?CALL  SHIFTL
        MOVE?AB Bout
    endif
    endm
SHIFTL_USED = 1

SHIFTR?BCB macro Bin, Cin, Bout
    if ((Cin) == 1)
        bcf     STATUS, C
      if ((Bout) == (Bin))
        CHK?RP  Bout
        rrcf    Bout, F
      else
        CHK?RP  Bin
        rrcf    Bin, W
        MOVE?AB Bout
      endif
    else
        MOVE?BW Bin, R0
        movlw   Cin
        L?CALL  SHIFTR
        MOVE?AB Bout
    endif
    endm
SHIFTR_USED = 1

GOSUB?L macro Label
    local dlabel
    ifdef DEBUG_STACK
        CHK?RP  DEBUG_STACK
      ifdef DEBUG_STACK_ADDR
        bcf     STATUS, C
        rlcf    DEBUG_STACK, W
        addlw   DEBUG_STACK_ADDR
        movwf   FSR0L
        clrf    FSR0H
        movlw   low (dlabel)
        movwf   POSTINC0
        movlw   high (dlabel)
        movwf   INDF0
      endif
        incf    DEBUG_STACK, F
    endif
        L?CALL  Label
dlabel
    endm

GOTO?L macro Label
        L?GOTO  Label
    endm

LOOKUP?BCLB macro Bin, Cin, Label, Bout
    local valtbl
	MOVE?BA	Bin
	movwf	TBLPTRL
	sublw	(Cin) - 1
	BIT?GOTO 0, STATUS, C, Label
	clrf	TBLPTRH
	clrf	TBLPTRU
	bcf	STATUS, C
	rlcf	TBLPTRL, F
	rlcf	TBLPTRH, F
	movlw	low (valtbl)
	addwf	TBLPTRL, F
	movlw	high (valtbl)
	addwfc	TBLPTRH, F
	movlw	upper (valtbl)
	addwfc	TBLPTRU, F
        tblrd   *
        MOVE?BB TABLAT, Bout
        L?GOTO  Label
valtbl
    endm

LURET?C macro Cin
        retlw   Cin
    endm

NEXT?BCL macro Bin, Cin, Label
    if ((Cin) == 1)
        CHK?RP  Bin
        incf    Bin, F
    else
        movlw	Cin
        CHK?RP  Bin
        addwf   Bin, F
    endif
    if ((Cin) <= 255)
        BIT?GOTO 0, STATUS, C, Label
    endif
    endm

PAUSE?C macro Cin
    if (((Cin) >> 8) == 0)
        MOVE?CA Cin
        L?CALL  PAUSE
    else
        MOVE?CB (Cin) >> 8, R1 + 1
        MOVE?CA low (Cin)
        L?CALL  PAUSEL
    endif
    endm
PAUSE_USED = 1

PAUSEUS?C macro Cin
    if (((Cin) >> 8) == 0)
        movlw   Cin
        L?CALL  PAUSEUS
    else
        MOVE?CB (Cin) >> 8, R0 + 1
        MOVE?CA low (Cin)
        L?CALL  PAUSEUSL
    endif
    endm
PAUSEUS_USED = 1

RETURN? macro
    ifdef DEBUG_STACK
        CHK?RP  DEBUG_STACK
        decf    DEBUG_STACK, F
    endif
        RST?RP
        return
    endm

SERMODE?C macro Cin
        MOVE?CB Cin, GOP
    endm

SERPIN?T macro Regin, Bitin
        BIT?R1  Regin, Bitin
    endm

SEROUT?C macro Cin
        movlw   Cin
        L?CALL  SEROUT
    endm
SEROUT_USED = 1

SEROUT2DPIN?T macro Regin, Bitin
        BIT?R1  Regin, Bitin
    endm

SEROUT2MODE?C macro Cin
        MOVE?CW Cin, R5
    endm

SEROUT2COUNT?C macro Cin
        MOVE?CB Cin, R4 + 1
    endm

SEROUT2NUM?B macro Bin
        MOVE?BW Bin, R2
    endm

SEROUT2NUM?W macro Win
        MOVE?WW Win, R2
    endm

SEROUT2PACE?C macro Cin
        MOVE?CW Cin, R7
    endm

SEROUT2?B macro Bin
        MOVE?BA Bin
        L?CALL  SEROUT2
    endm
SEROUT2_USED = 1

SEROUT2?C macro Cin
        movlw   Cin
        L?CALL  SEROUT2
    endm
SEROUT2_USED = 1

SEROUT2DEC? macro
        MOVE?CW SEROUT2J, R8
        L?CALL  SEROUT2DEC
    endm
SEROUT2J_USED = 1
SEROUT2DEC_USED = 1

SEROUT2HEX? macro
        MOVE?CW SEROUT2J, R8
        L?CALL  SEROUT2HEX
    endm
SEROUT2J_USED = 1
SEROUT2HEX_USED = 1

SHIFTCLOCK?T macro Regin, Bitin
        BIT?R2  Regin, Bitin
    endm

SHIFTDATA?T macro Regin, Bitin
        BIT?R1  Regin, Bitin
    endm

SHIFTIN?BC macro Bout, Cin
    if ((Cin) == 8)
        L?CALL  SHIFTIN8
    else
        movlw   Cin
        L?CALL  SHIFTIN
    endif
        MOVE?AB Bout
    endm
SHIFTIN_USED = 1

SHIFTMODE?C macro Cin
        MOVE?CB Cin, GOP
    endm


	LIST

⌨️ 快捷键说明

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