ej_intuart.c

Ir a la documentación de este archivo.
00001 
00013 #include <pic/p16f877a.h>
00014 
00015 #define FOSC_HZ 20000000
00016 
00017 #include <uart.h>
00018 #include <delayms.h>
00019 #include <interrupt.h>
00020 
00021 
00022 BYTE bandera=0;
00023 char c;
00024 
00025 void funcion_con_mucho_codigo(void)
00026 {
00027         uart_putc(c);
00028         bandera=0;
00029 }
00030 
00031 ISR_MAIN(funcion_interrupcion_global)
00032 { 
00033         if(int_uart_flag()==1)
00034         {       //el flag no se limpia hasta leer con uart_getc
00035                 c=uart_getc();
00036                 bandera=1;
00037                 //debe limpiarse el flag o nunca saldras de 
00038                 //la funcion interrupcion, pues esta se invocar&aacute;
00039                 //hasta el fin de los tiempos.          
00040         }
00041 }
00042 
00043 int main (void)
00044 {
00045         char INTRO[]="INT RX UART:\n";
00046         delayms(500);
00047 
00048         uart_open(SET_9600_8N1);
00049         uart_puts(INTRO);
00050 
00051         enable_int_uart();
00052         enable_int_global();
00053 
00054         while(TRUE)
00055         {
00056                 if(bandera==1) funcion_con_mucho_codigo();
00057         }
00058 
00059         uart_close();
00060         disable_int_uart();
00061         return 0;
00062 }

Generado el Thu Jan 8 00:55:37 2009 para pic-gcc-library por  doxygen 1.5.1