With an embedded microprocessor, there is no good reason to 'end the program'. So, the running guts of the main would live inside an infinite loop.
main( )
{
initialize...
for( ; ; )
{
Just keep going over the same stuff...
}
}
It comes from its name: it doesn't terminate, the user have to interrupt the program-run (in the worst case: power off the computer).
The infinite loop is also used to program loops with...