Chapter 11
This code sets up an ISR to respond to received serial-port data:
// Interrupt vector for high-priority interrupts.#pragma code high_vector = 0x8void interrupt_at_high_vector (void)
{
// Define the function to execute on an interrupt._asm goto high_isr _endasm
}// The ISR function.#pragma interrupt high_isrvoid high_isr(void)
{
if ((PIR1bits.RCIF == 1) && (PIE1bits.RCIE == 1)
{
// The serial port has received a byte.
// Place code to read and respond to received data here.// Reset the ISR flag.PIR1bits.RCIF = 0;
}
// Check the interrupt flags for any other enabled interrupts.
}.
Microcontrollers typically require firmware support for hardware flow control.
When the firmware has data to send, a hardware interrupt or firmware polling
can detect when the flow-control input is in the required state. When receiving
data, firmware can set the flow-control output as needed to prevent overruns.
To use hardware flow control on a hardware serial port, select any two otherwise
unused port bits and configure one bit as an input and the other as an output.