|
|
__far const u8_t
rmCORRECT[16] = { BIN8(00000000), // нет ошибки
BIN8(00000000), // ошибка в проверочных разрядах
BIN8(00000000), // ошибка в проверочных разрядах
BIN8(00000000), // неисправимая ошибка
BIN8(00000000), // ошибка в проверочных разрядах
BIN8(00000001), // ошибка в бите 0
BIN8(00000010), // ошибка в бите 1
BIN8(00010000), // ошибка в бите 4
BIN8(00000000), // ошибка в проверочных разрядах
BIN8(00000100), // ошибка в бите 2
BIN8(00001000), // ошибка в бите 3
BIN8(00100000), // ошибка в бите 5
BIN8(00000000), // неисправимая ошибка
BIN8(01000000), // ошибка в бите 6
BIN8(10000000), // ошибка в бите 7
BIN8(00000000) // неисправимая ошибка
};
__far const u8_t
rmCOLUMS[13] = {0,COL08,COL07,COL06,COL05,COL04,COL03,COL02,COL01,COL09,COL10,COL11,COL12};
начальное состояние при приеме каждого кодового слова
bit_cnt = 12;
rmFEC = 0;
rmByte = 0;
далее принимаем 12 битовое кодовое слово
while(bit_cnt) {
rmByte <<= 1;
if (приняли '1') {
rmByte |= 1;
rmFEC ^= rmCOLUMS[bit_cnt];
}
bit_cnt--;
}byte = (u8_t)(rmByte ^ rmCORRECT[rmFEC]); // correct byte
E-mail: info@telesys.ru