// Send 10-bit number in Manchester code. void manchester_send(uint16_t t) { int mask = 0x200; manchester_send_bit(1); manchester_send_bit(1); manchester_send_bit(1); manchester_send_bit(0); int ones = 0; for (int i = 0; i < 10; ++i) { int bit = !! (t & mask); manchester_send_bit(bit); mask >>= 1; if (bit == 1) { ones ++; } else { ones = 0; } if (ones == 2) { manchester_send_bit(0); ones = 0; } } if (ones > 0) { manchester_send_bit(0); } }
// send 12-bit number in Manchester code. void manchester_send(uint16_t t) { int mask = 0x800; // int ones = 0; manchester_send_bit(0); /* bit de preambule */ WAIT1_Waitus(HALF_BIT); //delayMicroseconds(HALF_BIT); for (int i = 0; i < 12; ++i) { int bit = !! (t & mask); manchester_send_bit(bit); mask >>= 1; // if (bit == 1) { // ones ++; // } else { // ones = 0; // } // if (ones == 2) { // manchester_send_bit(0); // ones = 0; // } } // if (ones > 0) { // manchester_send_bit(0); // } }