1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
;
; picmac.i
;
skipc macro ; skip if carry
btfss STATUS,C
endm
skipnc macro ; skip if not carry
btfsc STATUS,C
endm
skipz macro ; skip if zero
btfss STATUS,Z
endm
skipnz macro ; skip if not zero
btfsc STATUS,Z
endm
skpos macro ; skip if reg >= 0 (reg)
btfsc \1,7
endm
skneg macro ; skip if reg < 0 (reg)
btfss \1,7
endm
setc macro ; set carry
bsf STATUS,C
endm
clrc macro ; clear carry
bcf STATUS,C
endm
bc macro ;branch if carry
skipnc
goto \1
endm
bnc macro ;branch if no carry
skipc
goto \1
endm
bz macro ;branch if zero
skipnz
goto \1
endm
bnz macro ;branch if not zero
skipz
goto \1
endm
bpos macro ;branch if reg >= 0 (reg,dest_addr)
btfss \1,7
goto \2
endm
bneg macro ;branch if reg < 0 (reg,dest_addr)
btfsc \1,7
goto \2
endm
brset macro ;branch if bit set (reg,bit,dest_addr)
btfsc \1,\2
goto \3
endm
brclr macro ;branch if bit clear (reg,bit,dest_addr)
btfss \1,\2
goto \3
endm
;
; save W/STATUS (interrupt entry)
;
save_w_stat macro
movwf temp_w
swapf STATUS,W
movwf temp_s
endm
restore_w_stat macro
swapf temp_s,W
movwf STATUS
swapf temp_w,F
swapf temp_w,W
endm
|