7 para el LCD.
3 para entradas para modificación de la posición
2 para activar al motor (en ambos sentidos)
1 para el timer1 en contador
2 para límites de carrera de seguridad.
1 para detectar cuando hay corte de luz.
Por que 7 para el LCD ?
Ah no ser que estes controlando la luz de backlight y ahi si son 7 , sino tendrias RS / E y 4 de datos.
Lo de los limites de seguridad tengo 2 opiniones
1 - podrias ponerlo en uno solo, ambos pararian completamente todo, excepto que quieras saber a donde llego, pero eso lo vas a saber ya que segun donde tenes activado la direccion del motor vas a saber cual se activo.
2 - Esos no deberian depender del microcontrolador para parar el motor, Si para avisar al micro que ocurrio eso, pero no para que el micro pare el motor, lo cual deberia ser un paso del micro al actuador que activa el motor y luego si un aviso al micro
Ej: comun al pin del micro, NC al actuador y NO a otro pin del micro para detectar, aunque esta forma existe el problema de que si no esta activa la salida no sabes que esta tocando el limite de seguridad, sino deberia ser algo que tenga un doble contacto ( 1 NO y 1 NC independientes )
Esto por que si falla el microcontrolador deberia ser independiente. Al menos es lo que pienso yo, es como si se tratara de un switch zeta de parada de emergencia y un PLC.
Igual ambos se pueden podrian poner en 1 pin.
Ya no se podria achicar mas, si es importante deberia tener un enclavamiento que evite que se activen los 2 giros del motor al mismo tiempo, todo por seguridad, y puede que este pensando en motores un poco mas grandes.
Y de ultima si no queres complicarla demasiado como decis, arreglarlo por soft con el TMR0.