Interrupciones en comunicación serial!!!

Saludos espero su aportación, gracias, mi problema radica en que quiero comunicar el microcontrolador pic18f2520 con mi pc. Esto consiste en enviar desde mi pc la lenta "A", al recibir esto el micro ejecuta una secuencia contenida dentro de una sentencia if la cual se inicia si el Usart_Read es igual a "A", y tengo otra sentencia if, que al recibir una "B" se detienen todo, pero el problema esta en que no se detiene hasta que termina la secuencia del primer if, esto quiere decir que necesito aplicar las interrupciones vía comunicación serial, alguien tiene conocimientos sobre esto, estoy trabajando el la plataforma de MikroC. hasta pronto y gracias.
 
Un ejemplo pero de CCS y con el 16F886.

Código:
/*                                    EJEMPLO 8-1
                            Autor: Mikel Etxebarria
                        Orozko-Bizkaia, Noviembre 2010

El módulo USART. 
Transmisión asíncrona

El módulo USART de los dispositivos PIC16F87X incorpora el hardware necesario para implemen-
tar comunicación serie asíncrona full-duplex o sincrona half-duplex. En este último caso el
USART se puede comportar como Master o Slave.

El ejemplo transmite una trama cada segundo con el carácter ASCII de la letra A. */
    
#include <16f886.h>

/* Ajusta los valores de las palabras de configuración durante el ensamblado.Los bits no empleados
adquieren el valor por defecto.Estos y otros valores se pueden modificar según las necesidades */

#fuses     NOLVP,PUT,NOWDT,EC_IO,NOFCMEN,NOBROWNOUT    //Palabra 1 de configuración
#fuses    NOWRT,BORV40                                //Palabra 2 de configuración

/* Con estas directivas las funciones "input" y "output_bit" no reprograman
el pin de la puerta cada vez que son utilizadas. Si no se indica el
modo fast_io se asume por defecto standard_io el cual reprograma el pin
siempre antes de ser utilizadas estas funciones. */

#use fast_io (C)
#use delay(clock=4000000)

//Habilita las funciones RS232, velocidad a 9600 baudios

#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
    
main()
{      
    SETUP_ADC_PORTS(NO_ANALOGS);    //Puerta A y B Digitales
    set_tris_c(0b10111111);            //RC7/Rx entrada, RC6/Tx salida
    
    while(1)
    {    
        putc('A');                    //Transmite el caracter
        delay_ms(1000);                //Temporiza 1 segundo
    }
}
 
Atrás
Arriba