On an Arduino board, serial communication usually takes place via UART, which uses digital pins 0 and 1. UART is the physical peripheral device of the ATmega328P microcontroller with its own UDRE interrupts, so you do not use any regular or interrupt change of contacts otherwise. This interrupt is triggered whenever a full byte is received. There is also a separate TX interrupt, which signals the transfer of a byte.
source share