¿Cómo puedo identificar los cambios de voltaje con RS232 y cambiar estado?

Necesito hacer un código para un sistema domótico de una maqueta, conformado por 2 puertas, 2 ventanas, 2 focos y 2 interruptores para los focos.
No tengo mucha idea de como implementar el código para manejar las tramas del rs232.

Me gustaría saber como puedo declarar o analizar tramas que con un comando pueda consultar el estado de las puertas, focos y ventanas (0 si esta abierta/foco apagado, 1 si esta cerrada/foco encendido)
Manejar una especie de alarma que avise los cambios (encender y apagar la alarma) y encender y apagar los focos con un switch (cortar con mandar corriente)
Código:
#include <16F877a.h>
#fuses XT, NOWDT, PUT, NODEBUG, NOBROWNOUT, NOPROTECT, NOLVP, NOWRT
#use delay (clock=4000000)
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

short p1,p2,v1,v2,f1,f2;
char trama[4];

#int_rba                                     //// interrupcion por escritura en buffer del puerto
void rba_isr()
 {
  gets(trama);
  }

void main()
{
   while (true)
   {
   }
}

Saludos.
 
Última edición por un moderador:
Hola Amigo, a ver vamos por partes y claras. Tu necesitas hacer una central que gobierna una red de terminales, basado en el soporte RS232?, Bien, si es así, te comento lo que realicé una vez. Sobre una red RS232, formado por un terminal base, el cual gestiona el tráfico de datos, y además conectados a la misma red (X) terminales esclavos. Entonces todo comenzaba enviando una etiqueta de identificación única (destinado a un terminal esclavo) y luego se ponía a la espera de recibir confirmación, si ésto ocurría lo tomaba como terminal OK, de lo contrario no, obviamente. Luego se enviaba otra etiqueta unica y se repetía el proceso. De ésta manera, sobre el mismo par de cables se puede enviar y recibir, evitando la colisión de datos, ya que todos los terminales al cual se les pide confirmación secuencialmente, están a la espera.
 
Última edición:
pues no se el lenguaje c y ni me gusta, pero puedes configurar RB7 a RB4 con interrupcion por cambio de estado asi cuando haya una variacion en esas patas se genera una Interrupcion,
Atiendes la interrupcion y dependiendo la pata activadas procedes a enviar un byte al puerto serie
digamos que RB7 se activo entonces procedes a enviar por ejemplo el byte 0AH , no se como se haga en c
pero cada vez que recibas una trama la comparas con un dato y si es igual ejecutas rutinaA si no es igual compras con otro dato y si es igual ejecutas rutinaB y si no es igual ejecutas rutinaC
y pues las rutinas A,B,C lo que harian es enviar un bytediferente por rs232
 
Atrás
Arriba