C doesn't explicitly handle bit arrays, but you can still implement something that LOOKS like a bit array using char or int arrays. There are numerous examples out in internetland.
And what do you mean read on every falling edge? Do you mean your clock edge? If that's the case, you're out of luck because an 8051, if I remember correctly, executes one instruction for every FOUR clock edges? Or, do you have some slower sample clock you are using to latch the data? Could you give us more details about your design?