The good (ish) news is that there is very little difference between "embedded" programs and "conventional" ones. The actual code which does the work has to be written in exactly the same way, it is just that the inputs may be from electrical signals, for example the presence or absence of a voltage, and the outputs may take the same form.

Because of the limited size of devices we embed code into, we do not usually write very large embedded programs (although things like mobile phones hold many thousand lines of code - often written in C)