Myke Predko says:
Yesterday, I needed snippets of code which which will increment/decrement the "w" register without affecting any of the other registers in a 12C508.For Increment, I came up with:
xorlw 0x0FF ; Get 1s Complement of Number addwf Reg, w ; w = Reg + (w^0x0FF) subwf Reg, w ; w = Reg + ((Reg + (w^0x0FF))^0x0FF) + 1 ; w = w + 1and for Decrement:
subwf Reg, w ; w = Reg + (2^0x0FF) + 1 xorlw 0x0FF ; Get 1s Complement of Result addwf Reg, w ; w = w - 1"Reg" can be any Register in the PICMicro which cannot change during the course of the three instructions (in the low-end PICMicros, this is any port other than the timer and I/O ports).