Char value is 32 bits long?!@?!?

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.