Gracias por reponder nuevamente vszener, pero todavia no me funciona, lo que me indicas tambien lo probe y nada. Adjunto el programa completo por si hay algo mal que se me haya escapado. He eliminado la funcion de parpadeo dentro del main. En fin
#include <16F877.h> // Tipo de microcontrolador utilizado
#fuses XT,NOWDT,NOPUT,NOLVP,NOBROWNOUT,NOWRT // Cofiguración de fusibles
#use delay(clock=4000000) // Frecuencia Fosc=4Mhz
#byte porta = 0x05 // Direccion del puerto A
#byte portb = 0x06 // Direccion del puerto B
#byte portc = 0x07 // Direccion del puerto C
#byte portd = 0x08 // Direccion del puerto D
#byte porte = 0x09 // Direccion del puerto E
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#use fast_io(e)
VOID Parpadeo(void); // Rutina de parpadeo de puerta E
VOID Parpadeo(void)
{
output_high (PIN_E0); // Pin E0 = 1
delay_ms (1000); // delay 1 segundo.
output_low (PIN_E0); // Pin E0 = 0
delay_ms (1000); // delay 1 segundo.
output_high (PIN_E1); // Pin E1 = 1
delay_ms (1000); // delay 1 segundo.
output_low (PIN_E1); // Pin E1 = 0
delay_ms (1000); // delay 1 segundo.
output_high (PIN_E2); // Pin E2 = 1
delay_ms (1000); // delay 1 segundo.
output_low (PIN_E2); // Pin E2 = 0
}
VOID main()
{
byte estado;
disable_INTERRUPTS (GLOBAL); // Desactivamos todas las interrupciones
setup_adc_ports (NO_ANALOGS); // Puerto A configurado como digital
set_tris_a (0xFF); // Puerto_A como entrada
set_tris_b (0xFF); // Puerto_B como entrada
set_tris_d (0x00); // Puerto_D como salida
set_tris_e (0x00); // Puerto_E como salida
output_d (0x00); // Se borra el puerto d
output_e (0x00); // Se borra el puerto e
WHILE (input_b ())
estado = input_b();
SWITCH (input_b())
{
CASE 0:
IF (bit_test (estado, 1))
portd = 0xFF;
BREAK;
CASE 1:
IF (bit_test (estado, 2))
portd = 0xAA;
BREAK;
}
}
Adjunto una imagen de la simulacion en proteus, paso a paso. Cuando llega a la sentencia: estado=input_b(), se queda parado hasta el fin de los siglos y nada. Entiendo que una vez leido el puerto B como esta a 1 el pin b1, dberia entrar en el primer case pero
seguiré estrujandome los sexos.
Un saludo fermin