April 2020
Intermediate to advanced
412 pages
9h 58m
English
We define an ISR for interrupt line 4, which is triggered for serial port events:
void serial_isr() __interrupt(4)
The interrupt routine is invoked as soon as a full byte is received and stored in the Serial buffer register (SBUF). Our implementation of ISR just copies the received byte to the input/output port, that is, P0 :
P0 = SBUF;
Then, it resets the RI flag to enable the interrupt for the upcoming byte.
To make the interrupts work as expected, we configure both the serial port and the timer. First, the serial port is configured, as follows:
SCON = 0x50;
According to the preceding table, this means only the SM1 and REN bits of the Serial Control Register (SCON) are set to 1, resulting in the selection of communication ...