In the Dec_Secs path, you decrement the seconds but never decrement minutes. You also decrement minutes if both seconds and minutes are not zero. Neither of these looks correct.
This is a count down timer (traditional Timer). Let say Timer value is 02:56 (2 minutes & 56 Seconds). Seconds decrement first.When seconds go beyond value zero then decrement 1 minute. Likewise it will decrement down to 00:00.
I see what you're doing now. Looks like it should work as expected.
However, it's a little difficult to follow jumping back and forward.
Have you considered something like,
Code:
movf Seconds,w ;get seconds
iorwf Minutes,w ;ior minutes
btfsc STATUS,Z ;if it's zero
goto AllDone ;time is up
decf Seconds,f ;decrement seconds
btfss Seconds,7 ;has it gone negative
goto Wait_Sec_Flag ;no so continue
movlw .59 ;yes
movwf Seconds ;so set to 59
decf Minutes,f ;and decrement mins
goto Wait_Sec_Flag ;continue
AllDone
;time has ellapsed