Autor Tema: Ejemplitos en C para 16F648A  (Leído 736356 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: Ejemplitos en C para 16F648A
« Respuesta #255 en: 25 de Mayo de 2006, 11:33:32 »
FIN DE LA REMODELACION!!!!


Decir que por fin he actualizado el post!!!!jeje y ya todos los ejemplitos estan disponibles en este mismo post para su descarga!

En el indice ya no aparece al lado de la pagina donde se encuentra el programa la opcion 'descarga' ya que los programas no estan alojados en otro link, sino que todos los programas estan donde indica la pagina!


Suerte!!! :wink:
« Última modificación: 25 de Mayo de 2006, 11:57:36 por vszener »
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: Ejemplitos en C para 16F648A
« Respuesta #256 en: 25 de Mayo de 2006, 11:41:21 »
Bueno y que mejor que despues de la actualizacion un ejemplito mas!!!jeje, este ejemplito se basa en la conexion de 4 saa1064 los cuales trabajan mediante el bus i2c, por lo tanto, este ejemplo ilustra como trabajar con el bus i2c con varios dispositivos, aparte este programa es interesante ya que simplemente con dos pines del pic conseguimos gobernar 16 display's de 7 segmentos!!!....aqui el codigo:
Código: C
  1. ////////////////////////////////////////////////////////////////////////////////////
  2. //                                                      VsZeNeR'06             
  3. //                                                  22/Mayo/06
  4. //                                              vszener@gmail.com
  5. //
  6. //      Programa:       Manejo de 4 SAA1064 en modo DINAMICO -> 16 Display's 7seg
  7. //      Version:        1.0
  8. //
  9. //      Dispositivo: PIC 16F648A                        Compilador:      CCS vs3.249
  10. //      Entorno IDE: MPLAB IDE v7.31            Simulador:       Proteus 6.7sp3
  11. //
  12. //      Notas: Este programa muestra por 16 display's de 7seg mensajes de texto, para
  13. //                 ello usamos 4 dispositivos SAA1064 de bus I2C.
  14. //
  15. //                 Conexiones:          A0 -> SDA saa1064                    
  16. //                                                      A1 -> SCL saa1064      
  17. //////////////////////////////////////////////////////////////////////////////////
  18.  
  19. #include <16f648a.h>                                    //pic a utilizar                       
  20. #fuses XT,NOWDT,NOPROTECT,PUT,NOLVP             //ordenes para el programador
  21. #fuses INTRC                                                    //oscilador interno
  22. #use delay (clock=4000000)                              //Fosc=4Mhz
  23. #define SAA1064_DINAMICO                                //trabajar en modo dinamico el saa1064
  24. #define SAA1064_SCL PIN_A1                              //definicion de pines...
  25. #define SAA1064_SDA PIN_A0                              //...de manejo del saa1064
  26. #include <vs_saa1064M.c>                                //libreria saa1064M
  27.  
  28. ///PROGRAMA
  29. void main(void)
  30. {
  31.         setup_oscillator(OSC_4MHZ);                     //configuracion del oscilador interno a 4MHz
  32.        
  33.         saa1064_init(0x76);                                     //inicializo saa1064 conectado a Vcc
  34.         saa1064_conf(0b01110001);                       //21mA & NO parpadeo & Dinamico
  35.         saa1064_putc(0x76,0x3F,0x38,0x77);      //HOLA
  36.         delay_ms(1000);
  37.        
  38.         saa1064_stop();                                         //paro el saa1064 conectado a Vcc
  39.        
  40.         saa1064_init(0x72);                                     //inicializo saa1064 conectado a 3/8 Vcc
  41.         saa1064_conf(0b00100011);                       //6mA & parpadeo 1&3 & Dinamico
  42.         saa1064_putc(0x71,0x5C,0x50,0x5C);      //Foro
  43.         delay_ms(1000);
  44.        
  45.         saa1064_stop();                                         //paro el saa1064 conectado a 3/8 Vcc  
  46.        
  47.         saa1064_init(0x74);                                     //inicializo saa1064 conectado a 5/8 Vcc
  48.         saa1064_conf(0b01000101);                       //12mA & parpadeo 2&4 & Dinamico
  49.         saa1064_putc(0x78,0x5C,0x5E,0x5C);      //todo
  50.         delay_ms(1000);
  51.        
  52.         saa1064_stop();                                         //paro el saa1064 conectado a 5/8 Vcc
  53.        
  54.         saa1064_init(0x70);                                     //inicializo saa1064 conectado a GND
  55.         saa1064_conf(0b00110111);                       //9mA & parpadeo TODO & Dinamico
  56.         saa1064_putc(0x73,0x30,0x39,0x86);      //PIC!
  57.         delay_ms(1000);
  58.        
  59.         saa1064_stop();                                         //paro el saa1064 conectado a GND
  60. }
Para este ejemplo he modificado la libreria del dispositivo, asi mediante la direccion de cada dispositivo manejaremos el que queramos(hasta un maximo de 4 saa1064), la libreria modificada es la siguiente: vs_saa1064m.c



Suerte!!! :wink:
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: Ejemplitos en C para 16F648A
« Respuesta #257 en: 26 de Mayo de 2006, 06:59:26 »
Pues un ejemplito mas, aunque ya fue realizado uno similar, esta vez usamos la libreria correcta!!!el programa consta de un termometro digital usando el dispositivo ds1620, el cual se comunica con el pic mediante 3 pines(3-wire), aqui el programa:
Código: C
  1. ////////////////////////////////////////////////////////////////////////////////////
  2. //                                                      VsZeNeR'06             
  3. //                                                  23/Mayo/06
  4. //                                              vszener@gmail.com
  5. //
  6. //      Programa:       Termometro digital mediante el ds1620
  7. //      Version:        1.0
  8. //
  9. //      Dispositivo: PIC 16F648A                        Compilador:      CCS vs3.249
  10. //      Entorno IDE: MPLAB IDE v7.31            Simulador:       Proteus 6.7sp3
  11. //
  12. //      Notas: Este programa muestra por el hyperterminal la temperatura leida
  13. //                 del dispositivo ds1620.
  14. //
  15. //                 Conexiones:          A0 -> DQ ds1620              
  16. //                                                      A1 -> CLK/CONV# ds1620
  17. //                                                      A2 -> RST# ds1620      
  18. //////////////////////////////////////////////////////////////////////////////////
  19.  
  20. #include <16f648a.h>                                    //pic a utilizar                       
  21. #fuses XT,NOWDT,NOPROTECT,PUT,NOLVP             //ordenes para el programador
  22. #fuses INTRC                                                    //oscilador interno
  23. #use delay (clock=4000000)                              //Fosc=4Mhz
  24. #use rs232(baud=9600,xmit=PIN_B2,rcv=PIN_B1)    //manejo del RS232
  25. #define DS1620_DQ               PIN_A0                  //declaracion...
  26. #define DS1620_CLK              PIN_A1 
  27. #define DS1620_RST              PIN_A2                  //...de pines para el ds1620
  28. #include <vs_ds1620.c>                                  //libreria ds1620
  29.  
  30. ///LLAMADA FUNCION INTERRUPCION
  31. #INT_TIMER1
  32. void interrupcion()     //leemos la temp y la enviamos via serial rs232 al hyperterminal
  33. {
  34.         printf("\fVsZeNeR'06 ->  Termometro Digital\n\r\n\rTemperatura: %3.1f ºC",read_ds1620());
  35. }
  36.  
  37. ///PROGRAMA
  38. void main(void)
  39. {
  40.         setup_oscillator(OSC_4MHZ);                                     //configuracion del oscilador interno a 4MHz
  41.         enable_interrupts(INT_TIMER1);                          //interrupcion TIMER1 activada
  42.         SETUP_TIMER_1(T1_INTERNAL|T1_DIV_BY_8);         //configuracion interrupcion TMR1
  43.         set_timer1(10);                                                         //carga TMR1
  44.         enable_interrupts(GLOBAL);                                      //activadas interrupciones
  45.         setup_uart(TRUE);                                                       //activamos la uart
  46.        
  47.         for(;;){}               //bucle infinito -> espera interrupcion del TMR1
  48. }

Para la libreria del ds1620 visitad este link [LIBRERIA CCS] DS1620

Decir que el dispositivo ds1620 que trae PROTEUS no asume numero decimal, aunque la libreria si lo asume!!!


Suerte!!! :wink:
« Última modificación: 26 de Mayo de 2006, 07:02:22 por vszener »
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: Ejemplitos en C para 16F648A
« Respuesta #258 en: 26 de Mayo de 2006, 09:57:09 »
Buenas!!!! en el indice del post he puesto un enlace para la descarga directa de todos los ejemplitos y demas programas mios!!!
El enlace: VsZeNeR-Disco Duro Virtual


Lo disfruteis!!! :wink:
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado quirogaareal

  • PIC16
  • ***
  • Mensajes: 180
Re: Ejemplitos en C para 16F648A
« Respuesta #259 en: 28 de Mayo de 2006, 10:12:16 »
Hola:
Este programita está basado en las enseñanzas de él maestro VSzener.
Acá hay un programa con el cual nuestra intención es testear sensores, al principio lo habíamos realizado con El pic 16F84a, pero evidentemente como este micro controlador no tiene la suficiente cantidad de memoria nos pasamos al 16F28, sin embargo no sé por qué razón, supongo que por la cantidad de memoria no me permite colocar variables globales. También me gustaría saber la forma, en realidad se cómo mandar por el puerto serial pero quiso o lo mande o imprima los datos cuando estos cambien y no estarlos enviando constantemente.

En cuanto a las representación que usamos esto fue, debido a que usando la representación de un número flotante nos consumía una gran cantidad de memoria. Si les es de ayuda esto se interpreta en la siguiente manera.

printf(lcd_putc,"V4:%d.%d",dato /100,(dato-(dato/100)*100)); //muestra por

Supongamos

dato = 211 (en realidad serían 2,11 volts), la primera parte imprime sólo la parte entera, dato /100 = 211/100 = imprime la parte entera o sea  = 2.

Luego imprime la coma . El siguiente paso es la parte de decimal = dato-(dato/100)*100)  que al solo imprimir la parte entera imprimirá el 11.


////////////////////////////////////////////////////////////////////////////////////
//
// 28/Mayo/06
//
// Programa: Manejo del dispositivo PCF8591 en modo A/D
// Version: 0.0
//
// Dispositivo: PIC 16F84A Compilador: CCS vs3.245
// Entorno IDE: MPLAB IDE v7.31 Simulador: Proteus 6.7sp3
//
// Notas: Este programa muestra como usar el conversor pfc8591 como adc.
// La Vref es de 2,56v por lo tanto la resolucion del conversor es 10mV.
// Básicamente lo que aquí hacemos es inicializar el conversor con la palabra
// de configuración y luego sólo resta leer (obviamente estamos modificando la
// tención analógica de entrada) sólo nos resta corregir un ligero error que es
// el que apenas pasa el valor de 128 en que se muestra valor negativo.
// Se muestra por pantalla de lcd(LM016L)
//
//
// Conexiones: RA1 -> SDA pcf8591
// RA0 -> SCL pcf8591
//
// lcd(LM016L)
// B0 -> E
// B1 -> RS
// B2 -> RW
// B4 -> D4
// B5 -> D5
// B6 -> D6
// B7 -> D7
// VSS y VEE -> gnd
// VDD ->VCC
//
// pcf8591
// A0,A1,A2.EXT , AGND ->gnd
// AN0,AN1,AN2,AN3 divisor resistivo con potenciometro (2.5v Variables)
// VREF=2.56 (en est6e caso)(pin14) divisor resistivo con potenciometro
//
//
//////////////////////////////////////////////////////////////////////////////////

/******************************************************/
/********** Programa Medidor de Presion  con 16f628 ***/
/******************************************************/


#include <16f628.h> //pic a utilizar
#fuses XT,NOWDT,NOPROTECT,noPUT,nolvp//ordenes para el programador
#use delay (clock=4000000) //Fosc=4Mhz
#define use_portb_lcd TRUE
#include <lcd.c> //libreria para lcd
#define PCF8591_SCL PIN_A0 //definicion de pines...
#define PCF8591_SDA PIN_A1 //...de manejo del pcf8591
#include <vs_pcf8591.c> //libreria pcf8591
#use rs232(baud=9600, xmit=PIN_A2, rcv=PIN_A3) //manejo del RS232
///LLAMADA FUNCION INTERRUPCION

#INT_TIMER0

void interrupcion( )
{
int8 dato; //almacena lectura del pcf8591

dato=read_adc_value( ); //lee del pcf8591
lcd_gotoxy(9,2);
printf(lcd_putc,"V4:%d.%d",dato/100,(dato-(dato/100)*100)); //muestra por lcd, la ultima parte obedece solo
                                                            //a una forma de representar con enteros
printf("V4=%3u \t ",dato);//con esta parte se imprime en El puerto serial (RS232)

dato=read_adc_value( ); //lee del pcf8591
lcd_gotoxy(1,1);
printf(lcd_putc,"V1:%d.%d",dato/100,(dato-(dato/100)*100)); //muestra por lcd
                                                            //a una forma de representar con enteros
printf("V1=%3u \t ",dato);//con esta parte se imprime en El puerto serial (RS232)

dato=read_adc_value( ); //lee del pcf8591
lcd_gotoxy(9,1);
printf(lcd_putc,"V2:%d.%d",dato/100,(dato-(dato/100)*100)); //muestra por lcd
printf("V2=%3u \t ",dato);//con esta parte se imprime en El puerto serial (RS232)

dato=read_adc_value( ); //lee del pcf8591
lcd_gotoxy(1,2);
printf(lcd_putc,"V3:%d.%d",dato/100,(dato-(dato/100)*100)); //muestra por lcd
printf("V3=%3u \t ",dato);//con esta parte se imprime en El puerto serial (RS232)

set_timer0(0 ); //carga TMR0
}

///PROGRAMA
void main(void)
{

lcd_init( ); //inicializamos lcd

lcd_putc("  Medidor de \n  Presion...");
delay_ms(2000);
lcd_putc("\f");


enable_interrupts(INT_TIMER0); //interrupcion TIMER0 activada
setup_counters(RTCC_INTERNAL,RTCC_DIV_256); //configuracion interrupcion TMR0


set_timer0(0 ); //carga TMR0 -> temporizacion maxima aprox 65.5ms
enable_interrupts(GLOBAL); //activadas interrupciones


pcf8591_adc_init(0b00000100); //inicializamos pcf8591

while(TRUE);//bucle infinito

}




Recuerda : Si una mujer te ama de verdad no te pedira ni Matrimonio, Ni concubinato , Ni hijos, No te mentira , ni buscara que cambies de opinion con respecto a las tres primeras opciones.

Saludos

desde Cordoba Argentina

Desconectado quirogaareal

  • PIC16
  • ***
  • Mensajes: 180
Re: Ejemplitos en C para 16F648A
« Respuesta #260 en: 28 de Mayo de 2006, 10:13:46 »
Ciertas dudas que nos quedan aún.



1) El único inconveniente que nos queda enviar los datos por RS232 es que no se o no encuentro en la manera de hacerlo que no sea en una forma constante, si el tratado con ciclos if pero en este caso de acuerdo a mi poca experiencia necesitaría una variable global cosa que me desborda la memoria.

Todo esto está diseñado con un PCF8591, cuyo librería fue diseñada por el mencionado maestro.

2) cómo se hace para grabar en un 24lc256 una tabla de datos a la cual acceder desde el pic.

3) se podría imprimir para ocupar menor cantidad de memoria, o llamar a una impresión de un cartel que esté adentro del 24lc256, como haría eso (cómo hago para grabar ese cartel en una memoria).

4) conocen algún otro conversador serial (I2C), de 12 bits, de 16 bits con una gran cantidad de entradas analógicas?.

5) hay  alguna una forma de hacer un buen menú sin consumir demasiada memoria?
Recuerda : Si una mujer te ama de verdad no te pedira ni Matrimonio, Ni concubinato , Ni hijos, No te mentira , ni buscara que cambies de opinion con respecto a las tres primeras opciones.

Saludos

desde Cordoba Argentina

Desconectado quirogaareal

  • PIC16
  • ***
  • Mensajes: 180
Re: Ejemplitos en C para 16F648A
« Respuesta #261 en: 28 de Mayo de 2006, 10:14:58 »
Datos que quizás le sean de ayuda para quien está comenzando y tienen ciertos inconvenientes.


Un dato para quienes lo necesiten, hemos estado intentando grabar el micro controlador 16F628 con una grabadora TE20-SE pero esta presentada el inconveniente de que no nos reconocía el micro controlador mencionado a sí que consultamos en su página web www.jdm.homepage.dk/newpic.htm  la cual nos sugirió que mandáramos RB4 a masa (ésta en el circuito está conectada a 5V), entonces cortamos las pistas de la grabadora mandamos el mencionado pin a masa e hicimos un puente de los otros pines que usaban la alimentación positiva y por arte de magia por así decirlo dicha y mencionada grabadora comenzó a grabar y a reconocer este buen micro controlador.

Para quien no tenga el circuito, ahí les adjunto las caras de las pistas, para otros detalles dirigirse a  la página ya mencionada

Espero con esto retribuir, parte de todo lo que este foro me da y un agradecimiento especial al maestro Vszener por sus excelentes ejemplos
Recuerda : Si una mujer te ama de verdad no te pedira ni Matrimonio, Ni concubinato , Ni hijos, No te mentira , ni buscara que cambies de opinion con respecto a las tres primeras opciones.

Saludos

desde Cordoba Argentina

Desconectado buho21

  • PIC10
  • *
  • Mensajes: 1
Re: Ejemplitos en C para 16F648A
« Respuesta #262 en: 31 de Mayo de 2006, 15:47:03 »
 Muy buenas! Saludos a todos!! Quisiera saber si estos códigos de programa para 16F648A sirven igual para el 16F873, pues es que no lo se y como se me ve estoy algo pegado en estos temas. He visto programitas que me podían servir, utilizando el 16F873 asociándolo con:
algo de motores y sensores
algo de memorias I2C
algo de conversion analogica/digital
algo de RS232

Si igual me podéis pasar algo sobre esto os lo agradecería mucho, gracias
verdiblanco19@hotmail.com
« Última modificación: 01 de Junio de 2006, 15:35:23 por buho21 »

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: Ejemplitos en C para 16F648A
« Respuesta #263 en: 02 de Junio de 2006, 11:27:40 »
Buenas!!!! amigo quirogaareal gracias por tener de referencias estos programas!!!, por partes:

1) No entiendo muy bien tu duda sobre como enviar los datos al hyperterminal via rs232, hay varios programas en este post donde la representacion de los datos es mediante el hyperterminal de windows via rs232, mirate el programa numero 58, donde los datos(obtenidos por el sensor de temperatura ds1620) se envian serialmente rs232.....sin necesidad de variable global....

2) Igual que puedes enviar los datos a una lcd o via serial o como quieras, tambien puedes guardarlo en memoria externa, una forma segura de guardar datos en memorias externas es el programa numero 52, donde se usa la memoria 24LC256

3) Puedes crear datos ya obtenidos desde una memoria externa como la que ya citas, para grabar la memoria puedes hacerlo mediante un grabador como el WinPic800 o el Ic-Prog.

4) Date un paseo por los fabricantes que seguro encuentras Dallas Semiconductor, de Texas Instruments...

5) Con respecto al menu, me he dado cuenta que la representacion de datos siempre es la misma excepto los valores V1,V2.... simplemente no ponga una representacion para cada medida leida, lee los datos y llama a una funcion para la representacion, asi ahorraras tres printf.


Suerte!!! :wink:
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: Ejemplitos en C para 16F648A
« Respuesta #264 en: 02 de Junio de 2006, 11:30:00 »
Se me olvidaba! gracias por poner la adaptacion del grabador t20, aunque seria mas conveniente que lo publicases en el subforo de programadores ya que alli se habla expresamente del tema y seguro que para los usuarios del foro le es mas util!

De nuevo darte las GRACIAS por usar los ejemplitos estos y por aportar tus programas!!!!


GRACIAS!!! :wink:
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: Ejemplitos en C para 16F648A
« Respuesta #265 en: 02 de Junio de 2006, 11:32:04 »
Amigo buho21, decir que los programas valen para el pic que mencionas simplemente eso si, deberas ajustarlos!, si te miras el indice, comprobaras que hay bastantes programas/ejemplo para lo que tu deseas....


Suerte!!! :wink:
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado Veguepic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2119
Re: Ejemplitos en C para 16F648A
« Respuesta #266 en: 02 de Junio de 2006, 19:22:54 »
Hola Vszener:

Viendo tus ejemplitos en C, y teniendo algo de tiempo quisiera pasar tus ejemplitos a asembler, de paso practico y aprendo. Me facilitaria mucho el usar tus simulaciones en Proteus.

Adicionalmente me interesa comparar cuanta es la diferencia de espacio que ocupa un programa en C y uno en asembler.

Saludos
“Si la gente es buena sólo porque temen al castigo y porque esperan una recompensa, entonces verdaderamente somos un grupo lastimoso." Albert Einstein.

Saludos desde Lima , Peru    -    Hugo

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: Ejemplitos en C para 16F648A
« Respuesta #267 en: 02 de Junio de 2006, 19:44:38 »
Pues por mi encantado! y de paso lo publicas, asi el foro tendra ejemplos en todos los lenguajes de programacion(asm, basic, c)....y GRACIAS por fijarte en los programitas!!!!


Suerte!!! :wink:
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado Veguepic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2119
Re: Ejemplitos en C para 16F648A
« Respuesta #268 en: 02 de Junio de 2006, 20:12:06 »
Muchas gracias y ya empiezo hoy mismo a publicarlos.

Saludos
“Si la gente es buena sólo porque temen al castigo y porque esperan una recompensa, entonces verdaderamente somos un grupo lastimoso." Albert Einstein.

Saludos desde Lima , Peru    -    Hugo

Desconectado Simulpic

  • PIC10
  • *
  • Mensajes: 1
Re: Ejemplitos en C para 16F648A
« Respuesta #269 en: 22 de Junio de 2006, 05:44:35 »
Soy novato en esto y estoy siguiendo vuestros valiosos ejemplos porque se aprende mucho.

Tengo una duda con esto de las interrupciones. Estoy usando las interrupciones RB4..7 y simulandolo con MPSIM, lo que no entiendo es porqué
si elimino la linea "output_low(PIN_B0); " el programa siempre me entra a la interrupción. Esta instrucción pone a nivel bajo el flag?

Gracias

#include <16f648a.h>               //pic a utilizar         
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP      //ordenes para el programador
#use delay (clock=4000000)            //Fosc=4Mhz
#use fast_io(b)


///DECLARACION DE VARIABLES GLOBALES
int a;         //

///LLAMADA FUNCION INTERRUPCION
#INT_RB //NOCLEAR

void IntPortB4_7( )
{   
  a++;

 output_low(PIN_B0);   //indicador interrupcion off NO ENTIENDO BIEN PORQUE HAY QUE PONER ESTA LINEA
}

///PROGRAMA
void main(void)
{

   set_tris_b (0b11111110);      //portb definido en binario, todos entrada menos pin B0 es salida
   enable_interrupts(int_rb);      //activar interrupcion rb4:7 cualquiera de ellos
   enable_interrupts(GLOBAL);      //activar interrupciones
   for( ;; ){}
   
}