Te sugiero que habilites la interrupción externa del 16F84 y conectes dicha pata a tu circuito detector de sucesos. Luego puedes incrementar un registro cualquiera de memoria en la rutina de servicio de la interrupción. Ese registro luego lo leerás fuera de la rutina de interrupción y mantendrás actualizado el LCD. Seria algo así : org 0 goto prog_ppal org 4 btfss INTCON,1 ; int. externa? retfie goto servicio prog_ppal: . . . Servicio: Incf CONTADOR, 1 . . ; lo que debas hacer ademas de . ; contar.. retfie end
¿Hola cómo estas? Quiero agradecerte mucho tu respuesta, he estado mirando algunos registros que pedrian servirme pero algunos de ellos solo pueden contar hasta 255 y mi aplicación requiere un conteo hasta 9999, quisiera saber si puedo hacer esto en un solo registro, otra solución puede ser tener registros que centen hasta diez y la den un pulso al siguiente registro, si esta solución es viable usaría 4 registros y visualizaría el estado de estos en el LCD, pero tengo muchas dudas sobre como hacerlo, tal vez puedas recomenfarme el mejor modo de hacerlo. Gracias por tu ayuda.
En efecto, si quieres visualizar datos en formato decimal sobre un LCD, lo más recomendable es usar un registro para cada orden de magnitud (dígito). Hacerlo es bastante simple. Una forma seria incrementar tu registro, luego cargar en W el numero 10, hacerle el complemento a 2 (negarlo y sumarle 1), sumar a W el registro que acabas de incrementar (con eso haces la resta en vez de la suma) y ver si la operación te da cero. Si es así, pones a cero el registro que incrementaste e incrementas el registro del orden de magnitud siguiente, para el cual repites otra vez este procedimiento. Sigues así hasta que hallas hecho esto para todos los dígitos. Perdoname que no te tire el ejemplo del código pero hoy ando con muy poco tiempo =(. Cualquier cosa escribime de nuevo en otra oportunidad.