Try mine (untested): Note: Can also be used with 5X devices and 1 cycle less. INCR: MOVLW 67 ADDWF CNT,F MOVLW -60 SKPDC MOVLW -66 SKPC ADDWF CNT,F RETURN ;To cascade test carry or zero flag for overflow DECR: MOVLW 0xFF ADDWF CNT,F MOVLW -6 SKPC MOVLW -66 SKPDC ADDWF CNT,F RETURN ;DC and C are set if there's underflow Reggie --------- > From: Dwayne Reid > snip > ;written by Dwayne Reid > ;2 digit BCD UP counters: units in lower nibble, tens in upper > ;can increment by 1...9 without error, intermediate results kept in w > incf CNTR1,W ;inc counter --> w > addlw 6 ;now 10? if so, wrap to 0, inc nxt digit > skpdc ;did wrap occur? > addlw -6 ;no, restore > addlw 60 ;did upper digit wrap? > skpc > addlw -60 ;no, restore > movwf CNTR1 ;new count NOTE: z=1 if wrapped to 00 > return > > ;written by Dwayne Reid > ;2 digit DOWN counter: units in lower nibble, tens in upper > ;can decrement by 1...9 without error, intermediate results kept in w > movfw CNTR2 > addlw -1 ;dec counter --> w, update flags > skpc ;tens underflow? > addlw -60 ;adjust > skpdc ;units undeflow? > addlw -6 ;adjust > movwf CNTR2 ;new count; z=1 if decremented to 00 > ;need to test for underflow (to 99) if cascading digit pairs > return