// call this after you've detected the clock low char read_byte_ps2() { char result=0; while(!input(PS2_CLOCK_PIN)); while(input(PS2_CLOCK_PIN)); result |= input(PS2_DATA_PIN); while(!input(PS2_CLOCK_PIN)); while(input(PS2_CLOCK_PIN)); result |= input(PS2_DATA_PIN) << 1; while(!input(PS2_CLOCK_PIN)); while(input(PS2_CLOCK_PIN)); result |= input(PS2_DATA_PIN) << 2; while(!input(PS2_CLOCK_PIN)); while(input(PS2_CLOCK_PIN)); result |= input(PS2_DATA_PIN) << 3; while(!input(PS2_CLOCK_PIN)); while(input(PS2_CLOCK_PIN)); result |= input(PS2_DATA_PIN) << 4; while(!input(PS2_CLOCK_PIN)); while(input(PS2_CLOCK_PIN)); result |= input(PS2_DATA_PIN) << 5; while(!input(PS2_CLOCK_PIN)); while(input(PS2_CLOCK_PIN)); result |= input(PS2_DATA_PIN) << 6; while(!input(PS2_CLOCK_PIN)); while(input(PS2_CLOCK_PIN)); result |= input(PS2_DATA_PIN) << 7; while(!input(PS2_CLOCK_PIN)); while(input(PS2_CLOCK_PIN)); // parity bit while(!input(PS2_CLOCK_PIN)); while(input(PS2_CLOCK_PIN)); // stop bit while(!input(PS2_CLOCK_PIN)); return(result); }