| |
X10 TO RS232 INTERFACE EXAMPLE
 |
/////////////////////////////////////////////////////////////////////////
//// EX_X10.C ////
//// ////
//// This program interfaces a X10 TW523 unit to RS-232. This ////
//// program will accept and send three character codes of the ////
//// form xyy where x is A-P and yy is 00-1F. ////
//// Key codes 00-0F are translated to the key number. ////
//// ////
//// A * is sent to indicate transmition was aborted due to ////
//// a collision. A > is sent when reception begins to reduce ////
//// the chance of attempting to transmit during reception. ////
//// ////
//// Connect B0 to TW523 pin 1 ////
//// B1 3 ////
//// B2 4 ////
//// GND 2 ////
//// ////
//// For a 40 pin part such as the 16C74 add jumpers from ////
//// 8 to 11, 7 to 12, and change the #USE RS232 to: ////
//// #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) ////
//// ////
//// (C) Copyright 1996,1997 Custom Computer Services ////
//// ////
/////////////////////////////////////////////////////////////////////////
#include <16F84.H>
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_A3, rcv=PIN_A2)
#fuses XT,NOPROTECT,NOWDT
#include < x10.c >
#include < input.c >
main() {
char house_code;
byte key_code;
printf("Online\n\r");
while (TRUE) {
if(kbhit()) {
house_code = getc();
if((house_code>='A') && (house_code<='P')) {
putc(house_code);
key_code=gethex();
x10_write(house_code,key_code);
x10_write(house_code,key_code);
}
}
if(x10_data_ready()) {
putc('>');
x10_read(&house_code,&key_code);
printf("%c%2X",house_code,key_code);
}
}
}
|