Hola, tal vez sea por culpa mía y que no estoy haciendo algo bien. Yo he hecho un contador de dos dígitos y con la paciencia de BrunoF que me ha estado dando consejos y viendo mis errores. Como nada más que tengo un display, para hacer las pruebas tengo que quitar el cable que le da masa al cátodo común, e ir intercambiandolo con el pin cero y el pin uno de la puerta A, para ir viendo el display que más me interesa, pero se ve imagen rara. Entonces, anulo vía código que no se muestre una de las salidas de la puerta B y aplico directamente el cátodo común a masa y se ve la imagen perfecta y el conteo es perfecto. Entonces ahí está mi duda, no sé si mi problema es por los transistores, yo le aplico la masa al pin del display de cátodo común mediante dos transistores y lo unos lógicos directamente de los pines de la puerta B. Como todavía no soy capaz de utilizar, o mejor dicho, todavía no me he entretenido en aprender como usarlo y por cual decidirme, los explico textualmente. A las base le aplico la salida del pin cero y uno de la puerta B mediante una resistencia en serie pin-base de 1K, el emisor lo aplico directamente a masa y la salida del colector la aplico al pin del display de cátodo común, entre el colector y Vcc +5 voltios le pongo una resistencia de 10 k, de esa manera cuando el transistor está en corte se le aplica al pin cátodo común los 5 voltios a través de la resistencia de 10 k y cuando conduce se le aplica masa directamente, pero claro está conmutando el transistor a una gran velocidad, lo que no sé si esta configuración es la más adecuada. Os dejo el trozo de código que hace la función. No sé el resultado que dará usando los dos displays juntos.
Gracias y saludos.
COMIENZO
movf UNIDAD,W ;Pasamos el valor de registro UNIDAD al registro de trabajo.
call DISPLAY ;Llamamos a la subrutina para configurar el número en el display.
bsf PUERTAA,0 ;Aquí nos aseguramos que alimentamos el display 1.
bcf PUERTAA,1 ;y nos aseguramos que el display 2 esté inactivo.
movwf PUERTAB ;Mostramos el número en dicho display.
movf DECENA,W ;;Pasamos el valor de registro CENTENA al registro de trabajo.
call DISPLAY
bcf PUERTAA,0 ;Nos aseguramos de que el display 1 esté inactivo.
bsf PUERTAA,1 ;Nos aseguramos que esté activo el display 2.
movwf PUERTAB
goto COMIENZO ;Volvemos al comienzo para seguir mostrando el display