Hola a todos de nuevo, ante todo feliz año nuevo. Ahora expongo cual es mi duda, en estos momentos estoy utilizando un 16f874, por su gran número de entradas, utilizandolo de la siguiente manera:
El Puerto B entrada binaria para la unidad, aunque se que es suficiente con 4 dígitos, utilizaré 7,ya que esta señal vendrá de un 7 segmentos en un futuro.
El puerto C, idem de lo anterior para decenas. En ambos casos me sobra una entrada.
El puerto D, será utilizado en un futuro, por ello ahora no lo utilizo.
Ahora bien, entre el puerto A yE conectaré dos dispolay BCD, como se muestra en el esquema.Si solo utilizara las unidades, con el código que expongo a continuación no hay problema, pero ¿cómo puedo visualizar las decenas con la conexión de la figura?
Espero haber explicado bien la situación. Será bien agradecida cualquier sugerencia.
De nuevo gracias por vuestra colaboración.
CÓDIGO
#include <16f874.h> //pic a utilizar
#fuses XT,NOWDT //ordenes para el programador
#use delay (clock=4000000) //Fosc=4Mhz
///PROGRAMA
int unidad;
int decena;
int salida_unidad;
int salida_decena;
void main(void)
{
set_tris_a(0xff); //puerto A como salida
set_tris_b(0x00); //puerto B como entrada
do{
unidad=input_b();
decena=input_c();
switch (unidad){
case 0b00000000:
salida_unidad=0x0;
break;
case 0b00000001:
salida_unidad=0x1;
break;
case 0b00000010:
salida_unidad=0x2;
break;
case 0b00000011:
salida_unidad=0x3;
break;
case 0b00000100:
salida_unidad=0x4;
break;
case 0b00000101:
salida_unidad=0x5;
break;
case 0b00000110:
salida_unidad=0x6;
break;
case 0b00000111:
salida_unidad=0x07;
break;
case 0b00001000:
salida_unidad=0x8;
break;
case 0b00001001:
salida_unidad=0x9;
break;
}
switch (decena){
case 0b00000000:
salida_decena=0x0;
break;
case 0b00000001:
salida_decena=0x1;
break;
case 0b00000010:
salida_decena=0x2;
break;
case 0b00000011:
salida_decena=0x3;
break;
case 0b00000100:
salida_decena=0x4;
break;
case 0b00000101:
salida_decena=0x5;
break;
case 0b00000110:
salida_decena=0x6;
break;
case 0b00000111:
salida_decena=0x07;
break;
case 0b00001000:
salida_decena=0x8;
break;
case 0b00001001:
salida_decena=0x9;
break;
}
disable_interrupts(GLOBAL); //todas interrupciones desactivadas
output_a(salida_unidad);
/// AQUÍ NO SE QUE PONER PARA VISUALIZAR LAS DECENAS EN EL DISPLAY
}while(TRUE);
}