;* PIC24F macro definitions 2007,12/17 ;* by S.Nishioka .macro ret return .endm ; ;*コンペア jump 命令 working w0 w1 .macro cjer_ fr,lit16,addr ;goto addr if fr = #lit mov #\lit16,w0 cp \fr bra z,\addr .endm .macro cjner_ fr,lit16,addr ;goto addr if fr <> #lit mov #\lit16,w0 cp \fr bra nz,\addr .endm .macro cjaer_ fr,lit16,addr ;goto addr if fr >= #lit mov #\lit16,w0 mov \fr,w1 cp w1,w0 bra GEU,\addr .endm .macro cjar_ fr,lit16,addr ;goto addr if fr > #lit mov #\lit16,w0 mov \fr,w1 cp w1,w0 bra GTU,\addr .endm .macro cjber_ fr,lit16,addr ;goto addr if fr <= #lit mov #\lit16,w0 mov \fr,w1 cp w1,w0 bra LEU,\addr .endm .macro cjbr_ fr,lit16,addr ;goto addr if fr < #lit mov #\lit16,w0 mov \fr,w1 cp w1,w0 bra LTU,\addr .endm ;*move命令 working w0 .macro movrr fs,fd ;move fs to fd mov \fs,w0 mov w0,\fd .endm .macro mov_r lit16,fr ;move #lit16 to fr mov #\lit16,w0 mov w0,\fr .endm ;*Bit move命令 .macro bmov fs,lit4s,fd,lit4d ;bit move fs,#lit4 to fd,#lit4 btss \fs,#\lit4s bclr \fd,#\lit4d btsc \fs,#\lit4s bset \fd,#\lit4d .endm .macro bnmov fs,lit4s,fd,lit4d ;bit not move fs,#lit4 to fd,#lit4 btss \fs,#\lit4s bset \fd,#\lit4d btsc \fs,#\lit4s bclr \fd,#\lit4d .endm ;*jump 命令 .macro jb fs,lit4,addr ;jump if bit btsc \fs,#\lit4 bra \addr .endm .macro jnb fs,lit4,addr ;jump if not bit btss \fs,#\lit4 bra \addr .endm .macro jz fs,addr ;jump if fs = 0 cp0 \fs bra Z,\addr .endm .macro jnz fs,addr ;jump if fs <> 0 cp0 \fs bra NZ,\addr .endm .macro jmp addr bra \addr .endm ;*スキップ命令 .macro sb fs,lit4 ;skip if bit btss \fs,#\lit4 .endm .macro snb fs,lit4 ;skip if not bit btsc \fs,#\lit4 .endm .macro sz ;skip if zero btss SR,#Z .endm .macro snz ;skip if not zero btsc SR,#Z .endm