;*********************************************************** ;MACROs for PIC ;*********************************************************** bank0 macro bcf status,rp0 endm bank1 macro bsf status,rp0 endm cmp macro a b movlw b subwf a,w endm db macro a retlw a endm xorlf macro a b movlw b xorwf a endm iorlf macro a b movlw b iorwf a endm andlf macro a b movlw b andwf a endm movlf macro a b movlw b movwf a endm movff macro a b movf b,w movwf a endm stc macro bsf 3,0 endm clc macro bcf 3,0 endm a equ 1000 ;------------- djnz macro a b decfsz a,1 goto b endm ret macro return endm iret macro retfie endm rol macro a rlf a,w rlf a endm ror macro a rrf a,w rrf a endm rlc macro a rlf a endm rrc macro a rrf a endm bct macro a b bcf a,b endm bs macro a b bsf a,b endm btc macro a b btfsc a,b endm bts macro a b btfss a,b endm jb macro a b c btfsc a,b goto c endm jnb macro a b c btfss a,b goto c endm jc macro c btfsc 3h,0h goto c endm jnc macro c btfss 3h,0h goto c endm jdc macro c btfsc 3h,1h goto c endm jndc macro c btfss 3h,1h goto c endm jz macro c btfsc 3h,2 goto c endm jnz macro c btfss 3h,2 goto c endm je macro c btfsc 3h,2 goto c endm jne macro c btfss 3h,2 goto c endm ;-------------- jmp macro a goto a endm ;------------- clr macro char if char==1000 clrw else clrf char endif endm ;---------------- add macro a,b if a==1000 addwf b,0 else addwf a,1 endif endm ;---------------- or macro a,b if a==1000 iorwf b,0 else iorwf a,1 endif endm ;---------------- sub macro a,b if a==1000 subwf b,0 else subwf a,1 endif endm ;---------------- xor macro a,b if a==1000 xorwf b,0 else xorwf a,1 endif endm ;---------------- and macro a,b if a==1000 andwf b,0 else andwf a,1 endif endm mnot macro a b comf b,0 endm bnot macro a b ifdef b ; a==1000 comf b,0 ; else ; comf a,1 endif endm ;---------------