Introduction to Interrupts

Can implement a delay by waiting for the TOF flag to become set:

void delay(void)
{
    while ((TFLG2 & 0x80) == 0) ;
    TFLG2 = 0x80;
}

Problem:
Can't do anything else while waiting. Wastes resources of HC12.

Solution:
Use an interrupt to tell you when the timer overflow has occurred.

Interrupt:
Allow the HC12 to do other things while waiting for an event to happen. When the event happens, tell HC12 to take care of event, then go back to what it was doing.

What happens when HC12 gets an interrupt:
HC12 automatically jumps to part of the program which tells it what to do when it receives the interrupt (Interrupt Service Routine).

How does HC12 know where the ISR is located:
A set of memory locations called Interrupt Vectors tell the HC12 the address of the ISR for each type of interrupt.

How does HC12 know where to return to:
Return address pushed onto stack before HC12 jumps to ISR.

What happens if ISR changes registers:
All registers are pushed onto stack before jumping to ISR, and pulled off the stack before returning to program.



Bill Rison
2000-02-21