Arduino and Intel 8255A-5 interfacing
The 8255 is designed to interface to a microprocessor that has an external memory and I/O bus, and it works very well in that environment.

However, the Arduino does not have an external bus, so you are forced to emulate that bus by bit-banging individual I/O pins, which is slow and painful. Your code needs to generate pulses on the RD, WR, and CS pins, and it isn't currently doing that. You need to take a closer look at the timing diagrams in the 8255 datasheet.

There are better ways to do I/O expansion on Arduino using SPI or I2C. For example, take a look at the Microchip MCP23S17 and MCP23017 chips.