Blame | Last modification | View Log | Download
// Odesle nulu nebo jednicku podle nejnizsiho bitu predanych dat
// Nula je posloupnost LH a jednicka je HL
void odeslat_bit(int bit)
{
output_bit(VYSILAC,bit);
delay_us(IMPULS);
output_bit(VYSILAC,!bit);
delay_us(IMPULS);
}
// odesle datovy ramec
void odeslat_paket(int8 kanal,int8 data)
{
int i;
int8 suma;
data &= 0x1F; // pro jistotu orizneme data, kdyby nekdo chtel prenaset vic poloh
data |= kanal << 5; // slozi osu a hodnotu do packetu
swap(data); // vypocet kontrolniho souctu
suma = data & 0xF;
swap(data);
suma += (data & 0xF);
suma++;
odeslat_bit(0); // start bit
for (i=8; i>0; i--) // data
{
odeslat_bit(bit_test(data,7));
data <<= 1;
}
for (i=4; i>0; i--) // checksum
{
odeslat_bit(bit_test(suma,4));
suma <<= 1;
}
output_high(VYSILAC);
}