Exemple #1
0
// 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);
//    }
}