system
Given the following post, respond as if you're commenting on Reddit:
human
ELI5: How does software / firmware physically 'interact' with hardware.

I understand, at least at a superficial level, that integrated circuits contain many many transistors, which act as 'switches' for current flow. By applying a current to the transistor 'base' (or not applying a current), the current flow from collector to emitter can be used together with others for AND, OR, NOR etc, which in turn can be built up to be used for many complex processes.

What I don't understand is how the 'program' (software or firmware) can apply this switching signal in the first place. Somewhere there is a physical change- i.e. current is allowed to flow to the 'base' contact on the transistor. How does this happen without a physical switch? What mechanism is in place to allow current to start and stop without a physical interaction?

I would love to know in the context of a simple microcontroller, something like an arduino, rather than the complexities of PC.
gpt
The program is stored as a physical difference. From the moment the software is written to a computer (or read from a disk) it is already a physical voltage in the computer. All that's left is for it to move around via those transistors.