buenas estoy haciendo un programa en ccs compiler de una alarma que cuando unos sensores detecten algo se activen unas cargas. ya tengo cuatro sensores conectados en RB4,RB5,RB6,RB7 estos seran sensados por la interrupcion de estos bits, y activen las cargas ya mencionadas. pero tambien quiero colocar un boton para apagar las cargas en cuanto uno regrese a la habitacion donde este instalada la alarma, el problema es que la interrupcion RB_ISR no me deja hacer esto si bien sensa mis entradas y activa las cargas y sale de esa interrupcion y continua con el programa, la interrupcion RB0 no me funciona, hice una subrutina aparte para poder apagar las cargas sin usar el RB0 pero aun asi tengo problemas con el RB_ISR. No se que pueda hacer, les dejo mi programa para que lo revisen.
#include "F:\PCW_CCS_LENGUAJE C_PIC\ALARMA.h"
//////////////////////////////
//INTERRUPCION POR RB
/////////////////////////////
#int_RB
void RB_isr(void)
{
delay_ms(20);
output_B(input_B());
output_high(SIRENA);
output_high(CIRCULINA);
output_high(LUCES);
}
////////////////////////////////
//INTERRUPCION POR RB0
///////////////////////////////
//#int_EXT
void EXT_isr(void)
{
delay_ms(20);
output_low(SIRENA);
output_low(CIRCULINA);
output_low(LUCES);
}
//////////////////////////////
//PROGRAMA PRINCIPAL
/////////////////////////////
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_CLOCK_DIV_2);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
enable_interrupts(INT_RB);
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
// TODO: USER CODE!!
while(TRUE){
output_toggle(LED); // USO ESTE LED PARA VERIFICAR SI EL PROGRAMA SALE DE LA SUBRUTINA O SE QUEDA ENGANCHADA
delay_ms(200);
/////////////////////////////////////////////////////////////////
//RUTINA PARA APAGAR CARGAS EN VEZ DE USAR RB0
/////////////////////////////////////////////////////////////////
//if(input(PIN_B0)==0)
//{
//delay_ms(20);
//output_low(SIRENA);
//output_low(CIRCULINA);
//output_low(LUCES);
//}
////////////////////////////////////////////
///////////////////////////////////////////
}
}