One bit at 9600 baud is 104 microseconds, not 84 - is that the mismatch?
20 microseconds seems a very long time to compensate for latency in "digitalRead".
After only about 5 bits, you'd be one bit period early sampling.
dataformat[0] = 00100100;
dataformat[1] = 11000111;
dataformat[2] = 11010000;
dataformat[3] = 11000111;
dataformat[4] = 11000111;
dataformat[5] = 11000001;
"dataformat" is defined as an array of 8 bit variables.