Autor Tema: 18F4550 AYUDA!!  (Leído 6042 veces)

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

Desconectado carpoolo

  • PIC10
  • *
  • Mensajes: 19
Re:18F4550 AYUDA!!
« Respuesta #15 en: 09 de Febrero de 2019, 19:06:00 »
Cambie de PIC al 18F2550
Y Segui tu consejo, pero hay un pequeño problema, uso strcmp para comparar la cadena de caracteres que recibo con un "OK" fijo y parece que no funciona, lo digo en la realidad tengo rato intentandolo y nada te muestro las modificaciones que hice
Código: C
  1. #include <18F2550.h>
  2. #FUSES NOWDT, NOBROWNOUT, NOLVP, MCLR, NODEBUG, HS                   //Fusibles                                                                                          
  3. #use delay(crystal=20000000)              
  4. #use RS232(uart1,BAUD=19200,XMIT=pin_C6,RCV=pin_C7,PARITY=N,BITS =8)    
  5. #include <string.h>
  6. #include <stdlib.h>
  7. #USE FAST_IO (c)
  8.                                    
  9.   //Vairables//
  10. char Llegada[2];
  11. void comandosAT(Llegada);
  12. struct comandos{
  13.       char cmd1[26];
  14.       char cmd2[23];
  15.       char cmd3[26];
  16. }cmds;
  17. //char* dato[]={cmds.cmd1,cmds.cmd2,cmds.cmd3};
  18. //int i=0;
  19. char comp="OK";
  20.   //Interrupcion//                      
  21. #INT_RDA              
  22. void rxUART(void){
  23.   gets(Llegada);
  24.   comandosAT(Llegada);
  25. }
  26. void comandosAT(Llegada){
  27.    cmds.cmd1="Hola";
  28.    cmds.cmd2="Que";  
  29.    cmds.cmd3="Tal";
  30.    if(!strcmp(*comp,*Llegada)){
  31.    output_toggle(PIN_B4);
  32.    puts(cmds.cmd1);
  33.    delay_ms(50);
  34.    puts(cmds.cmd2);
  35.    delay_ms(50);
  36.    puts(cmds.cmd3);
  37.    break;
  38.    }
  39. }
  40. void main (void){
  41.    enable_interrupts(GLOBAL);              
  42.    enable_interrupts(INT_RDA);
  43.    puts("Hola mundo");
  44.    delay_ms(500);
  45.  while(true){
  46.  }                    
  47. }

La prueba la estoy haciendo, mandandole un OK por Rs232 y nada :(, de he hecho le coloco para que encienda un led cuando la comparacion sea "0", es decir, que si se ejecute la funcion strcmp
« Última modificación: 09 de Febrero de 2019, 19:21:56 por carpoolo »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:18F4550 AYUDA!!
« Respuesta #16 en: 10 de Febrero de 2019, 23:31:36 »
Te vuelvo a repetir, tenes muchos errores sobre el manejo y declaracion de string en C.. En C, los string es un array de caracteres, terminados por un caracter nulo.

Proba esto, seguramente tenga algun error, pero como para que lo veas

Código: C
  1. //Vairables//
  2. char Llegada[4],c;
  3. int8 i = 0;
  4. int1 flag;
  5.  
  6. const char txt[] = "Hola Que Tal";
  7. const char comp[] = "OK";
  8.  
  9. //Interrupcion//                      
  10. #INT_RDA              
  11. void rxUART(void){
  12.         c = getc();
  13.         if (c == comp[i]){
  14.                 i++;
  15.                 if(i >= sizeof comp) {
  16.                         flag = 1;
  17.                 }
  18.         }
  19.         else
  20.         {
  21.                 i = 0;
  22.         }
  23.  
  24. }
  25.  
  26. void main (void){
  27.    enable_interrupts(GLOBAL);              
  28.    enable_interrupts(INT_RDA);
  29.    puts("Hola mundo");
  30.    delay_ms(500);
  31.    while(true){
  32.           if( flag = 1) {
  33.                 puts(txt);
  34.           }
  35.    }                    
  36. }