.
(...) podria explicarnos la logica del programa de detener uno y poner el otro reloj a funcionar (...)
Al iniciar la programación tuve que optar por 2 maneras de controlar los tiempos: una era tener registros en la ram que almacenaran los tiempos actuales de cada jugador en todo momento, y la otra era leer del módulo LCD los tiempos a medida que los necesitaba. Elegí esta última porque presentaba una ventaja: todo lo que tenía que hacer para cambiar de reloj era leer y escribir en posiciones distintas de la pantalla del LCD. Entonces lo que tengo guardadas son las direcciones desde donde tengo que leer/escribir:
LCDH1 ; VARIABLES PUNTERO A TIEMPO EN EL LCD.
LCDM10 ; GUARDAN LA INSTRUCCION PARA ACCEDER A LA DIRECCION DEL DDRAM DEL LCD CORRESPONDIENTE AL
LCDM1 ; JUGADOR AL CUAL SE LE ESTA MODIFICANDO EL TIEMPO).
LCDS10 ; POR EJ, SI SE LE ESTA RESTANDO TIEMPO AL DERECHO, EL REGISTRO LCDS1 GUARDARA 0x8F.
LCDS1
Cuando se pulsa para terminar el turno, lo único que hay que hacer es modificar estos registros y poner en ellos las direcciones correspondientes al reloj de la derecha o al de la izquierda. El programa hace siempre lo mismo, simplemente va a las direcciones indicadas por estos registros sin preguntarse nunca de cuál reloj está leyendo.
De esta forma, el uC nunca sabe cuánto tiempo tiene cada reloj, pero realmente no es necesario que lo sepa
Es más, aunque no esté implementado en esta versión, es posible retomar el programa sin problemas en caso de un reset, dado que los valores de tiempo están seguros en la memoria del LCD.
Sobre la posibilidad de un proyecto para una interfaz para PC con forma de tablero real.. Debo admitir que ya lo vengo pensando hace tiempo. La idea es tener un pequeño brazo robótico que mueva por el oponente, para poder jugar por internet de manera un poco más real. Ayer estuve viendo unos videos y se me ocurrió que podría empezarse con un tablero sin brazo, conectado a la PC (por USB, o lo que sea.. incluso podría ser bluetooth) que tenga casilleros más o menos transparentes y que, por medio de luces debajo de ellos, indiquen los movimientos contrarios. Lo más desafiante sería la implementación del soft para PC
Aunque por ahora no tengo planeado empezar con esto.. porque tengo varias cosas que terminar primero jajaja. Pero seguro lo haré pronto..
¡Saludos!