?? cc1100_pa_rx.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 + -