0,0 → 1,43 |
// 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,3)); |
suma <<= 1; |
} |
output_high(VYSILAC); |
|
} |
|