Aunque me parecio imposible, en el codigo no has cometido los terrores de ortografia que escribes en los mensajes....
Para que siempre verifiques si cambias de cuenta ascendente a descendente deberas poner el primer Button despues de la etiqueta Ini, pues sino despues de iniciado el programa nunca vuelve a comprobarlo.
Ademas, deberas ponerle al conteo descendente el cierre del Loop a Ini y no a Ini1, pues tampoco sabras como volver a cambiar a ascendente.
En el caso de los ceros no los ves no quiere decir que no se produzcan, nuevamente es un problema de prioridad de instrucciones, pues si incrementas el conteo inmediatamente despues de poner a cero, muestra uno sin mostrar el cero (pusiste a cero, incrementaste uno y luego mandaste al display, siempre va a mostrar 1).
Aqui solo puedo recomendar incrementar despues de mostrar en display.
El 7 inicial es aleatorio, a mi entender.
Yo siempre introduzco luego de setear los puertos y antes de la rutina principal un CLEAR, que se encarga de poner en cero los valores aleatorios que pudieran aparecer.
Incluso los de los puertos, que tu no seteas correctamente, eso se hace con TRISA y TRISB.
Suerte