hola gracias por pasarte y ayudarme, tengo un proyecto de mi escuela donde con un pic16F887 tengo que hacer un contador con 3 displays del 0 al 1000 bueno esa es la parte fácil ya que ya tengo estructurado esa parte del contador con un pulso empieza a contar pero ahora me comenta mi profe que tengo que agregarle una función que si esta sin utilizar el contador apague los displays de 7 segmentos y cuando capte que pulsa nueva mente enciendan es como ponerle un modo reposo o stan by y esa parte no se si se pueda hacer o como hacerla, lo intente con el timer0 pero no me sale espero alguien que sepa mas del tema me pueda ayudar con esto estaría super agradecido

mi código es el siguiente en ensamblador:
tengo una parte que no utilizo por que es la que estoy intentando hacer el modo reposo pero ya me atore espero me puedan ayudar gracias, el contador ya funciona correcto solo faltaria la parte del modo reposo no se si se pueda con el timer 0.
#INCLUDE <P16F887.INC> ;se agrega el pic
__CONFIG _CONFIG1,0x20F4 ;configuracion de bits
__CONFIG _CONFIG2,0x3FFF
CBLOCK 0x20 ;selecciona lista de variables en memoria
Count1
Count2
Count3
v1
v2
v3
v4
TCount
ENDC
;goto inici0
;ORG 0x04
;incf TCount,F
;movlw .30
;subwf TCount,W
;btfss STATUS,2
;goto OUT
;movlw 0xFF
;movwf PORTD
;movwf PORTC
;movwf PORTB
;clrf TMR0
;OUT
;bcf INTCON,2
;RETFIE
inici0
BANKSEL TRISA ;selecciona banco de memoria
movlw b'00011111' ;carga el acomulador
movwf TRISA ;mueve una copia del acomulador w al registro f
clrf TRISB ;el contenido del registro se va a ceros
clrf TRISC
clrf TRISD
;movlw b'11010110'
;movwf OPTION_REG
BANKSEL ANSELH
clrf ANSEL
clrf ANSELH
BANKSEL OSCCON
movlw 0x61
movwf OSCCON
movlw b'10100000'
movwf INTCON
BANKSEL PORTD
;clrf TMR0
;clrf TMR2
Final_Begin
clrf Count1
clrf Count2
clrf Count3
movf Count1,W
call Tabla
movwf PORTD
movwf PORTC
movwf PORTB
inicio
btfss PORTA,4 ;Prueba el bit b del registro f, Salta la siguiente instrucción si bit b es 1.
goto inicio ;salta a la etiqueta
call ret_1s ;salta a una subrutina indicada
CheckUnits
movlw .9
subwf Count1,W ;Ejecuta la resta f – W
btfss STATUS,2
goto CUnits
goto CDec
CheckDec
movlw .9
subwf Count2,W
btfss STATUS,2
goto CDec
goto CCent
CheckCent
movlw .9
subwf Count3,W
btfss STATUS,2
goto CCent
goto CheckUnits
CUnits
incf Count1,1 ;Incrementa el registro f
movf Count1,0
call Tabla
movwf PORTD
clrf TMR0
goto inicio
CDec
clrf Count1
movf Count1,W
call Tabla
movwf PORTD
incf Count2,1
movlw .10
subwf Count2,W ;Ejecuta la resta f – W
btfss STATUS,2
goto DoDec
goto CCent
DoDec
movf Count2,0
call Tabla
movwf PORTC
clrf TMR0
goto inicio
DoCent
movf Count3,0
call Tabla
movwf PORTB
clrf TMR0
goto inicio
CCent
clrf Count2
clrf Count1
movf Count2,W
call Tabla
movwf PORTD
movwf PORTC
incf Count3,1
movlw .10
subwf Count3,W
btfss STATUS,2
goto DoCent
goto Final_Begin
Tabla
addwf PCL,1 ;Suma el contenido de W con el contenido del registro f
DT 0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10
ret_1s
movlw .125
movwf v1
movlw .250
movwf v2
movlw .3
movwf v3
c1 decfsz v1,F
goto c1
decfsz v2,F
goto c1
decfsz v3,F ;espera para el sguiente salto
goto c1
return
END