Bu devreyi çalıştırmıştım ama kodları bulamadım. Fikir vermesi açısından aşağıdaki benzer kodu vereyim. Bu kodlarla da çalışır sanıyorum. Program 1 kanal için, kanal sayısını benzer şekilde arttırabilirsiniz. Kristaller yerine 628'in dahili osilatörünü kullanabilirsiniz. Ve alıcıda led yerine transistör-röle kullanabilirsiniz.
*******VERİCİ*******************
#include <16f628A.h>
#fuses XT,NOWDT,NOPROTECT
#use fast_io(a)
#use fast_io(b)
#use delay (clock=4000000)
#use rs232 (baud=2400,xmit=pin_B2, parity=n, stop=1)
void main ( )
{
setup_timer_1(T1_DISABLED);
setup_ccp1(CCP_PWM);
setup_timer_2(T2_DIV_BY_1,25,1);
set_pwm1_duty(10);
set_tris_a(0xFF);
set_tris_b(0x00);
output_a(0x00);
while(1) {
if(input(pin_a0)) { //1. buton
while(input(pin_a0));
output_high(pin_b6);
printf("yazi\r");
delay_ms(300);
output_low(pin_b6); }
// Diğer butonları yazmıyorum
}}
*******ALICI*********************
#include <16f628A.h>
#include <stdlib.h>
#fuses XT,NOWDT,NOPROTECT
#use delay (clock=4000000)
#use fast_io(a)
#use fast_io(b)
#use rs232 (baud=2400, rcv=pin_B1,stop=1, parity=n)
char data[10];
void main ( )
{
setup_timer_1(T1_DISABLED);
setup_ccp1(CCP_OFF);
setup_timer_2(T2_DISABLED,0,1);
set_tris_a(0x00);
set_tris_b(0xFF);
output_a(0x00);
while(1) {
if(input(pin_b1)==0) { // Veri geldiyse
gets(data);
if(data[0]=='y' && data[1]=='a') //yazi...
output_toggle(pin_a2); }
}}