Autor Tema: Ayuda con un 16f877 Comunicacion Pic a Pic Rs232  (Leído 4844 veces)

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

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Ayuda con un 16f877 Comunicacion Pic a Pic Rs232
« en: 30 de Agosto de 2009, 16:18:41 »
Estoy realizando la siguiente programacion

Código: [Seleccionar]
#include <16F877A.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=8000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)
#include <LCD.C>
//#define use_portb_lcd TRUE
void main()
{
   lcd_init();
    do {
   switch(input_b())
      {
         case 0x00:
         lcd_gotoxy(1,1);
         printf(lcd_putc,"En Espera");
         break;
         case 0x01:
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Orden 1                ");
         break;
         case 0x02:
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Orden 2                ");
         break;
         case 0x03:
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Orden 3                ");
         break;
         case 0x04:
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Ornde 4                 ");
         break;
         case 0x05:
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Orden 5                 ");
         break;        
         case 0x06:
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Orden 6                  ");
         break;
         case 0x07:
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Orden 7                  ");
         break;
         case 0x08:
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Orden 8                   ");
         break;
      }
  
   } while (TRUE);
}

El detalle es el siguiente, estoy usando 8 bits y tendria que hacer un menu con casi 128 instrucciones no hay forma de hacer esto mas sencillo ???
Lo unico que quiero hacer es que lo que lea el pic a lo mande al Pic b con rs232, para darme a entender un poco mejor aqui dejo el diagrama

y las LCD son solo para visualizar lo que pasa no se si alguien pueda ayudarme a hacer mas pequeño el menu.

Por que lo que hara solo sera como ejemplo
si Rb0,Rb1,Rb2 estan en 1
La lcd imprime Rb1 encendido Rb2 Encendido Rb3 Encendido en las dos Lcd
« Última modificación: 30 de Agosto de 2009, 18:21:40 por darck_khronos »

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Ayuda con un 16f877 Menu muy grande
« Respuesta #1 en: 30 de Agosto de 2009, 16:30:55 »
No creo que se pueda reducir mucho más ese código  :?
No contesto mensajes privados, las consultas en el foro

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: Ayuda con un 16f877 Menu muy grande
« Respuesta #2 en: 30 de Agosto de 2009, 16:39:10 »
Encontre la forma mas facil para la transmicion el detalle es que aun no se si podre reducir mas ese menu si no tendre que poner manualmente todas las palabras

aqui lo dejo

Pic Que transmite
Código: [Seleccionar]
#include <16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=8000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)
#include <LCD.C>

void main() {

   int valor;

   lcd_init();
   
while(1){
   for (valor=0;valor<=10;valor++) {
     PUTC(valor);
     printf(lcd_putc,"\fenviando=%1D",VALOR);
     delay_ms(500);
       }
    }
}
Pic que Recibe
Código: [Seleccionar]
#include <16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=8000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)
#include <LCD.C>
#BYTE TRISA=0X85
#BYTE PORTA=0X05

int valor;

#int_RDA
RDA_isr()
{
 valor=GETC();
}

void main() {

  bit_clear(TRISA,0);
  lcd_init();
   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);

for (;;) {
     lcd_gotoxy(1,1);
     printf(lcd_putc,"recibiendo=%1D",valor);
   }
}

Desconectado fabianjsm

  • PIC18
  • ****
  • Mensajes: 255
    • fabianjsm is on twitter
Re: Ayuda con un 16f877 Menu muy grande
« Respuesta #3 en: 30 de Agosto de 2009, 16:49:58 »
Este codigo es equivalente al que posteaste primero, pero mas corto y sin tantos gotoxy, en una de esas te sirve  :)

Código: C
  1. void main()
  2. {
  3.     int orden;
  4.     lcd_init();
  5.     while(TRUE) {
  6.         lcd_gotoxy(1,1);
  7.         orden = input_b();
  8.         if(!orden) {
  9.             printf(lcd_putc,"En Espera");
  10.             continue;
  11.         }
  12.         else
  13.             printf(lcd_putc,"Orden %d                ", orden);
  14.         switch(orden) {
  15.         case 0x01:
  16.             // lo que corresponde a 0x01
  17.             break;
  18.         case 0x02:
  19.             // lo que corresponde a 0x02
  20.             break;
  21.         }
  22.     }
  23. }
@fabianjsm is on twitter

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: Ayuda con un 16f877 Menu muy grande
« Respuesta #4 en: 30 de Agosto de 2009, 17:06:25 »
Este codigo es equivalente al que posteaste primero, pero mas corto y sin tantos gotoxy, en una de esas te sirve  :)

Código: C
  1. void main()
  2. {
  3.     int orden;
  4.     lcd_init();
  5.     while(TRUE) {
  6.         lcd_gotoxy(1,1);
  7.         orden = input_b();
  8.         if(!orden) {
  9.             printf(lcd_putc,"En Espera");
  10.             continue;
  11.         }
  12.         else
  13.             printf(lcd_putc,"Orden %d                ", orden);
  14.         switch(orden) {
  15.         case 0x01:
  16.             // lo que corresponde a 0x01
  17.             break;
  18.         case 0x02:
  19.             // lo que corresponde a 0x02
  20.             break;
  21.         }
  22.     }
  23. }
Con este ya me facilitaste mas lo de la imprecion nadamas lo malo es que aun asi tendria que poner los 127 casos T-T
lo unico que quiero es que el interuptor que se precione lo mencione la primer lcd y en la segunda = pero que en este caso solo prenda un led
y si digamos se puso el numero tres que diga
Tx Orden 3
1= on 2=on
en el segundo pic
Rx Orden 3
1= on 2= on

O digamos 15
Tx Orden 15
1= on, 2= on, 4= on, 8 =on
Pic que Recibe
Rx Orden 15
1= on, 2= on, 4= on, 8 =on

Desconectado fabianjsm

  • PIC18
  • ****
  • Mensajes: 255
    • fabianjsm is on twitter
Re: Ayuda con un 16f877 Menu muy grande
« Respuesta #5 en: 30 de Agosto de 2009, 17:26:02 »
Aver si te entendemos.
Dado el caso 10 por ejemplo, que en binario es 1010, necesitas que se imprima "2=on 8=on"?
@fabianjsm is on twitter

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: Ayuda con un 16f877 Menu muy grande
« Respuesta #6 en: 30 de Agosto de 2009, 17:30:08 »
Aver si te entendemos.
Dado el caso 10 por ejemplo, que en binario es 1010, necesitas que se imprima "2=on 8=on"?

Si eso mismo por eso = maneje solo 8 bits pensando que seria facil pero acomo voy con el menu como que no jeje
y aun estoy trabajando para que el segundo pic interprete lo que le manda el primero

Desconectado fabianjsm

  • PIC18
  • ****
  • Mensajes: 255
    • fabianjsm is on twitter
Re: Ayuda con un 16f877 Menu muy grande
« Respuesta #7 en: 30 de Agosto de 2009, 17:36:11 »
Una funcion así no te serviria:

Código: C
  1. void on_off(unsigned char val)
  2. {
  3.         int i;
  4.         for(i=1; i<256; i<<=1)
  5.                 if(val & i)
  6.                         printf(lcd_putc, "%d=on ", i);
  7. }

Si haces on_off(10) por ejemplo, te imprime "2=on 8=on", on_off(5) te imprime "1=on 4=on"
@fabianjsm is on twitter

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: Ayuda con un 16f877 Menu muy grande
« Respuesta #8 en: 30 de Agosto de 2009, 17:38:04 »
Una funcion así no te serviria:

Código: C
  1. void on_off(unsigned char val)
  2. {
  3.         int i;
  4.         for(i=1; i<256; i<<=1)
  5.                 if(val & i)
  6.                         printf(lcd_putc, "%d=on ", i);
  7. }

Si haces on_off(10) por ejemplo, te imprime "2=on 8=on", on_off(5) te imprime "1=on 4=on"
Necesitaria Adaptarla al codigo para ver que efecto da

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: Ayuda con un 16f877 Menu muy grande
« Respuesta #9 en: 30 de Agosto de 2009, 18:14:02 »
Bueno otra que se me ocurre es tener este codigo de envio

Código: [Seleccionar]

#include <16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)
#include <LCD.C>

void main()
{
    int orden;
    lcd_init();
    while(TRUE) {
        lcd_gotoxy(1,1);
        orden = input_b();
        if(!orden) {
            printf(lcd_putc,"TX En Espera          ");
            lcd_gotoxy(1,2);
            printf(lcd_putc,"                   ");
            putc(0x00);
        }
        else
            printf(lcd_putc,"Tx Orden %d                ", orden);
        switch(orden) {
        case 0x01:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Prende Led 1");
             putc(0x01);
            break;
        case 0x02:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Prende Led 2");
             putc(0x02);
            break;
        case 0x03:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Prende Led 3");
             putc(0x03);
            break;
        case 0x04:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Prende Led 4");
             putc(0x04);
            break;           
        case 0x05:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Prende Led 5");
             putc(0x05);
            break;           
        case 0x06:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Prende Led 6");
             putc(0x06);
            break;           
        case 0x07:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Prende Led 7");
             putc(0x07);
            break;
        case 0x08:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Prende Led 8");
             putc(0x08);
            break;           
        }
    }
 }

Como podria meter el Case dentro de un if o una cadena para que asi con cada incremento de los dipswtich solo coloque el caso que necesita
por que la otra seria que mediante un for hiciese todas las impreciones ya directamete asi como me muestras en tu codigo anterior mas que aun no me doy bien la idea de como lograrlo y par parte aun mas dificil es la de que el segundo pic pueda interpretar lo que manda el primero

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: Ayuda con un 16f877 Comunicacion Pic a Pic Rs232
« Respuesta #10 en: 30 de Agosto de 2009, 19:01:30 »
Por decirlo asi ya tengo la parte de envio mas que ahora viene lo mejor la parte de transmisión

aqui dejo ya el codigo

Código: [Seleccionar]
#include <16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)
#include <LCD.C>
void main()
   {
    char lectura;
      lcd_init();
      do
         {
         lectura=getchar();
         if(lectura=='S'){
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Rx esperando");             
                         }
         lcd_gotoxy(1,1);
         printf(lcd_putc,"hola         "); 
         
}while(true);
}

El detalle es que no me respeta el if si digamos mando una A si me respeta la imprecion de hola pero si mando la S me pone
Rx esperando Hola
como puedo modificar eso y que de la misma manera de una vez me mande a prender con la S todo el puerto B

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: Ayuda con un 16f877 Comunicacion Pic a Pic Rs232
« Respuesta #11 en: 31 de Agosto de 2009, 00:30:04 »
bueno ya encontre la solucion jeje mas que no se si alguien pueda ayudarme a simplificar mas el programa aqui les dejo lo que tengo
Pic master
Código: [Seleccionar]
#include <16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)
#include <LCD.C>

void main()
{
    int orden;
    lcd_init();
    while(TRUE) {
        lcd_gotoxy(1,1);
        orden = input_b();
        if(!orden) {
            printf(lcd_putc,"TX En Espera          ");
            lcd_gotoxy(1,2);
            printf(lcd_putc,"                   ");
            putc('A');
        }
        else
            printf(lcd_putc,"Tx Alarma %d                ", orden);
        switch(orden) {
        case 0x01:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('B');
            break;
        case 0x02:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('C');
             break;
        case 0x03:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('D');
             break;
        case 0x04:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('E');
             break;
        case 0x05:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('F');
             break;
        case 0x06:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('G');
             break;
        case 0x07:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('H');
             break;
        case 0x08:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('I');
             break;
        case 0x09:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('J');
             break;
        case 0x0A:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('K');
             break; 
        case 0x0B:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('L');
             break;             
        case 0x0C:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('M');
             break;             
        case 0x0D:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('N');
             break; 
        case 0x0E:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('O');
             break;
        case 0x0F:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('P');
             break;
        case 0x10:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('Q');
             break;
        case 0x11:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('R');
             break;             
        case 0x12:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('S');
             break;
        case 0x13:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('T');
             break;             
        case 0x14:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('U');
             break;
        case 0x15:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('V');
             break;             
        case 0x16:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('W');
             break;             
        case 0x17:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('X');
             break;
        case 0x18:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('Y');
             break;
        case 0x19:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('Z');
             break;
        case 0x1A:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('a');
             break;             
        case 0x1B:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('b');
             break;             
        case 0x1C:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('c');
             break;             
        case 0x1D:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('d');
             break;             
        case 0x1E:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('e');
             break;                         
        case 0x1F:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('f');
             break;                         
        case 0x20:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('g');
             break;                         
        case 0x21:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('h');
             break;
        case 0x22:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('i');
             break;
        case 0x23:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('j');
             break;             
        case 0x24:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('k');
             break;             
        case 0x25:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('l');
             break;
        case 0x26:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('m');
             break;             
        case 0x27:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('n');
             break;
        case 0x28:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('o');
             break;
        case 0x29:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('p');
             break;             
        case 0x2A:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('q');
             break;
        case 0x2B:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('r');
             break;             
        case 0x2C:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('s');
             break;             
        case 0x2D:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('t');
             break;
        case 0x2E:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('u');
             break;             
        case 0x2F:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('v');
             break;             
        case 0x30:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('w');
             break;             
        case 0x31:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('x');
             break;             
        case 0x32:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('y');
             break;
        case 0x33:
             lcd_gotoxy(1,2);
             printf(lcd_putc,"Puerta abierta");
             putc('z');
             break;




        }
    }
 }


Pic Slave

Código: [Seleccionar]
#include <16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)
#use standard_io(B)
#include <LCD.C>
void main()
   {
    char lectura;
      lcd_init();
      do
         {
         lectura=getchar();
         if(lectura=='A'){
         OUTPUT_B(0x00);
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Rx esperando        ");   
         lcd_gotoxy(1,2);
         printf(lcd_putc,"                    "); 
                         }
         if(lectura=='B'){
         OUTPUT_B(0x0A);
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Rx Recibiendo");             
         lcd_gotoxy(1,2);
         printf(lcd_putc,"Alama 1 Abierta");
                                  }
         
}while(true);
}


Desconectado fabianjsm

  • PIC18
  • ****
  • Mensajes: 255
    • fabianjsm is on twitter
Re: Ayuda con un 16f877 Comunicacion Pic a Pic Rs232
« Respuesta #12 en: 31 de Agosto de 2009, 01:50:54 »
Tu switch de 256 lineas es equivalente a estas 6:

Código: C
  1. // si orden=1, entonces purta = 'B'
  2.         // si orden=0x1A, entonces purta = 'a'
  3.         lcd_gotoxy(1,2);
  4.         printf(lcd_putc,"Puerta abierta ");
  5.         if(orden < 0x1A)
  6.             putc('A' + orden);
  7.         else
  8.             putc('a' + orden - 0x1A);
@fabianjsm is on twitter

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: Ayuda con un 16f877 Comunicacion Pic a Pic Rs232
« Respuesta #13 en: 31 de Agosto de 2009, 20:48:15 »
Tu switch de 256 lineas es equivalente a estas 6:

Código: C
  1. // si orden=1, entonces purta = 'B'
  2.         // si orden=0x1A, entonces purta = 'a'
  3.         lcd_gotoxy(1,2);
  4.         printf(lcd_putc,"Puerta abierta ");
  5.         if(orden < 0x1A)
  6.             putc('A' + orden);
  7.         else
  8.             putc('a' + orden - 0x1A);

y si necesitara de 1024 bits ahora el detalle es como podria reparar el de Recepcion ya que esta en las mismas condiciones

y gracias por el apoyo si me ahn servido de mucho estos codigos

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: Ayuda con un 16f877 Comunicacion Pic a Pic Rs232
« Respuesta #14 en: 02 de Septiembre de 2009, 19:57:07 »
Tu switch de 256 lineas es equivalente a estas 6:

Código: C
  1. // si orden=1, entonces purta = 'B'
  2.         // si orden=0x1A, entonces purta = 'a'
  3.         lcd_gotoxy(1,2);
  4.         printf(lcd_putc,"Puerta abierta ");
  5.         if(orden < 0x1A)
  6.             putc('A' + orden);
  7.         else
  8.             putc('a' + orden - 0x1A);


ya adapte el codigo mas que tengo problemas con el de Recepcion que puede estar mal aqui lo dejo

Código: [Seleccionar]
#include <16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)
#use standard_io(B)
#include <LCD.C>
void main()
   {
    char lectura;
      lcd_init();
      do
         {
         lectura=getchar();
         if(lectura==0x00){
         OUTPUT_B(0x00);
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Rx esperando        ");   
         lcd_gotoxy(1,2);
         printf(lcd_putc,"                    "); 
                         }
         if(lectura=='A'){
         OUTPUT_B(0x01);
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Rx Recibiendo");             
         lcd_gotoxy(1,2);
         printf(lcd_putc,"Alarma 1 Abierta");
                                  }
         if(lectura=='C'){
         OUTPUT_B(0x02);
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Rx Recibiendo");             
         lcd_gotoxy(1,2);
         printf(lcd_putc,"Alarma 2 Abierta");
                                  }         
         if(lectura=='D'){
         OUTPUT_B(0x03);
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Rx Recibiendo");             
         lcd_gotoxy(1,2);
         printf(lcd_putc,"Alarma 3 Abierta");
                                  }         
         if(lectura=='E'){
         OUTPUT_B(0x04);
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Rx Recibiendo");             
         lcd_gotoxy(1,2);
         printf(lcd_putc,"Alarma 4 Abierta");
                                  }                                 
         if(lectura=='F'){
         OUTPUT_B(0x05);
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Rx Recibiendo");             
         lcd_gotoxy(1,2);
         printf(lcd_putc,"Alarma 5 Abierta");
                                  }         
         if(lectura=='G'){
         OUTPUT_B(0x06);
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Rx Recibiendo");             
         lcd_gotoxy(1,2);
         printf(lcd_putc,"Alarma 6 Abierta");
                         }
         if(lectura=='H'){
         OUTPUT_B(0x07);
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Rx Recibiendo");             
         lcd_gotoxy(1,2);
         printf(lcd_putc,"Alarma 7 Abierta");
                                  }         
         if(lectura=='I'){
         OUTPUT_B(0x08);
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Rx Recibiendo");             
         lcd_gotoxy(1,2);
         printf(lcd_putc,"Alarma 8 Abierta");
                                  }                                 
         if(lectura=='J'){
         OUTPUT_B(0x09);
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Rx Recibiendo");             
         lcd_gotoxy(1,2);
         printf(lcd_putc,"Alarma 9 Abierta");
                                  } 
         if(lectura=='K'){
         OUTPUT_B(0x0A);
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Rx Recibiendo");             
         lcd_gotoxy(1,2);
         printf(lcd_putc,"Alarma 10 Abierta");
                                  }         
         if(lectura=='L'){
         OUTPUT_B(0x0B);
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Rx Recibiendo");             
         lcd_gotoxy(1,2);
         printf(lcd_putc,"Alarma 11 Abierta");
                                  }                                 
         if(lectura=='M'){
         OUTPUT_B(0x0C);
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Rx Recibiendo");             
         lcd_gotoxy(1,2);
         printf(lcd_putc,"Alarma 12 Abierta");
                                  }                                 
         if(lectura=='N'){
         OUTPUT_B(0x0D);
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Rx Recibiendo");             
         lcd_gotoxy(1,2);
         printf(lcd_putc,"Alarma 13 Abierta");
                                  }           
         if(lectura=='O'){
         OUTPUT_B(0x0E);
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Rx Recibiendo");             
         lcd_gotoxy(1,2);
         printf(lcd_putc,"Alarma 14 Abierta");
                                  }
         if(lectura=='P'){
         OUTPUT_B(0x0F);
         lcd_gotoxy(1,1);
         printf(lcd_putc,"Rx Recibiendo");             
         lcd_gotoxy(1,2);
         printf(lcd_putc,"Alarma 15 Abierta");
                                  }                                 
}while(true);
}




 

anything