Buenas a todos y todas.
Estoy simulando la interrupcion del puerto B para un 16F819 con oscilador interno. Como en el Proteus no esta implementado, lo estoy haciendo con el 16F88 que creo que tiene la misma CPU y perifericos que voy a utilizar.
He colocado dos led y dos pulsadores a los pines 6 y 7, de tal forma que se activa un diodo si cambia el estado del pin 7 del puerto B y el otro led parpadea en el programa principal.
Lo he programado con el PICC y con resistencias externas pull-up.
Cuando lo simulo, al accionar el pulsador, el led se enciende pero cuando retorna al principal, se apaga. ¿Es problema del simulador, es mi problema al programar?
Pongo el codigo para que echeis un vistazo y me digais algo:
#use fast_io(A)
#use fast_io(B)
#int_RB
RB_isr() {
delay_ms(25);
if (!input(PIN_B7))
output_bit(PIN_A2,1);
}
#byte OSCCON = 0x8F // Registro config oscilador
void main() {
OSCCON = 0x60; // Configuracion del oscilador
set_tris_a(0b11101011);
set_tris_b(0b11110011);
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_spi(FALSE);
setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
enable_interrupts(INT_RB);
enable_interrupts(global);
for(;

{
output_bit(PIN_A4,1);
delay_ms(1000);
output_bit(PIN_A4,0);
delay_ms(1000);
}
}
Gracias gente