Sergio Ureña dijo:
si pudiera aclarar un poco seria ideal, yo tambien aclaro que las rutinas, en el puerto A solo hay tres leds y su rutina basica es la de un semaforo, cuando el led verde se prende en el puerto A , ahi quisiera que el puerto B donde estan los 3 displays multiplexados comienzen a funcionar con un pulso de 10 Hz , y ese pulso pensaba sacarlo del puerto C y conectarlo directamente a RB0 para poder hacer la multiplexacion, espero que me haya dejado ubicar , te agradeceria mucho si puedes recomendar algo mas .
Es una aplicación perfectamente realizable con el pic que elegiste. Es más hasta te diría que es 'demasiado' para dicha aplicación.
No se si codificas en C o en ensamblador o en otro lenguaje, pero es muy probable que puedas hacer este software con un 16F871 el cual cuesta varias veces menos que el que acabas de seleccionar (eso es si quieres hacer algo para dejarlo para siempre, si es para experimentar el pic que elegiste te permitirá luego hacer cosas más complejas).
En cuanto a las sugerencias, no hay mucho para decir, solo que uses los timers, cualquiera está bien ya que tu aplicación al ser de variables lentas no requiere mucha destreza en el tema ni tienes que luchar con tiempos ajustados.
Si usas el timer 0 tu aplicación será más facil de migrar a otros pics más pequeños porque en los más pequeños no estan todos los timers que tiene el pic16.
Como dato importante fijate de configurar bien los puertos como salida.
No has sido claro en eso de que los 3 programas estan bien definidos... es código de alguien mas? Si es así, como hace los retardos? por simples esperas? SI es por simples esperas, estarás en problemas de enlazar uno detras de otro ya que deberás tener en cuenta que las esperas se sumarán.
Lo más cómodo es hacer cosas con un timer, que todas las rutinas hagan referencia a él y uses una variable como contador. Al llegar dicha variable a un valor deseado, cambias la salida.
Por ej. Si el timer se ejecuta cada 10 mseg, y tu debes parpadear a 10Hz , el contador irá hasta 5 y una vez que llega a 5, tu lo pones a 0 y cambias la salida (a encendido o apagado depende cual sea el caso). De esa forma tendras estos cambios cada 50mseg y habrás hecho 10 encendidas y apagadas completas en 1 seg.
Lo mismo es aplicable para el resto de las rutinas.
Saludos