A bus in this context is a data route which can carry data in both directions.
A data should be either WRITTEN to a memory or should be READ from a memory (both direction)and so the data bus is bidirectional.
A data bus is bidirectional because the processor needs it to both read and write. Also, in the case of the 4004, the data bus was tri-multiplexed with the 12 bit address bus and the 8 bit opcode bus.
The control bus is a unidirectional bus because it can receive the data from any kind of inputs and send back the output. This whole process is done by the data buses.
So that the processor can both read and write data.
since data can be read /write from/to the microprocessor, hence data bus is bidirectional. if data is required read from microprocessor then it will be pointing to a memory location by the address bus, by indicating which location data its required to read. similarly to write a data to a location, again the microprocessor will be to that particular location by holding that address in address bus. hence it will be unidirectional.
The full form of BUS is 'Bidirectional Universal Switch'
The data bus is used to read or write (hence bi-directional) to the data location selected by the address written on the address bus. You only need to write (one-way) to the address bus to select the data location. It does not make sense to read from the address bus.
Transformers are inherently bidirectional.
Relays are bidirectional devices.
The address bus is unidirectional becos address information is always given by microprocessor to i/o devices. The data bus is bidirectional bcos it takes the data from other devices & also give the data to other i/o devices
Data flow is always bidirectional my friend, don't confuse.
Port 0 is called true bidirectional port.............. swapneel