main(){
while(1){ //start of never-ending loop
while ((UCSRA & (1 << UDRE)) == 0) {}; // every time the program returns to this line, it determines if transmission is
//already done. the 1 second required may already have elapsed and you no longer have to do any more waiting.
UDR = ByteToSend; // Send out the byte value in the variable "ByteToSend"
//rest of the loop. notice that there is no 'waiting' done after the transmit instruction
the program continues [I]while[/I] the byte is being transmitted, so while
the 1 second required is ellapsing, other instructions can be carried performed. if this part takes longer than 1 second, than you can
be sure that by the time you return to the beginning of the loop, the usart module will be ready for transmission again and you no longer have to wait
..........................................................................................................
..........................................................................................................
..........................................................................................................
//
} //return to beginning of the loop.
}