Код: Выделить всё
Передатчик
#include <16f628a.h>
#use delay(clock=4000000)
#fuses XT,NOWDT
#byte PORTA = 0x05
#byte TRISA = 0x85
#byte PORTB = 0x06
#byte TRISB = 0x86
void transmit(void);
void main(void)
{
PORTB=0;
TRISB=0;
transmit();
}
void transmit(void)
{
PORTB=0b00000001; //Пр
delay_ms(10); //ем
PORTB=0b00000000; //бу
delay_ms(10); //л
PORTB=0b00000001; //а
delay_ms(10);
PORTB=0b00000000; //Д
delay_ms(10);
PORTB=0b00000000; //a
delay_ms(10);
PORTB=0b00000000; //нн
delay_ms(10); //ы
PORTB=0b00000001; //е
}
Код: Выделить всё
Приёмник
#include <16f628a.h>
#use delay(clock=4000000)
#fuses XT,NOWDT
#byte PORTB = 0x06
#byte TRISB = 0x86
void receive();
char start=0, data=0;
void main(void)
{
PORTB=0;
TRISB=0b000000001;
while (1)
{
if (PORTB==0b00000001)
{
start=start | 0b00000100;
delay_ms(15);
if (PORTB==0b00000000)
start=start | 0b00000000;
else
{
if(PORTB==0b00000001)
start=start | 0b00000010;
}
delay_ms(10);
if (PORTB==0b00000000)
start=start | 0b00000000;
else
{
if (PORTB==0b00000001)
start=start | 0b00000001;
}
if (start==0b00000101)
receive();
}
}
}
void receive(void)
{
delay_ms(10);
if (PORTB==0b00000000)
data=data | 0b00000000;
else
{
if (PORTB==0b00000001)
data=data | 0b00001000;
}
delay_ms(10);
if (PORTB==0b00000000)
data=data | 0b00000000;
else
{
if (PORTB==0b00000001)
data=data | 0b00000100;
}
delay_ms(10);
if (PORTB==0b00000000)
data=data | 0b00000000;
else
{
if (PORTB==0b00000001)
data=data | 0b00000010;
}
delay_ms(10);
if (PORTB==0b00000000)
data=data | 0b00000000;
else
{
if (PORTB==0b00000001)
data=data | 0b00000001;
}
if (data==0b00000001)
PORTB=0b10000000;
}