PIC18 Interrupt Programming
PIC18 Interrupt Programming
Objectives
Contra and compare interrupts versus pooling
Explain the purpose of the ISR List all the major interrupts of the PIC18 Explain the purpose of the IVT Enable and disable PIC18 interrupts Program the PIC18 interrupt using assembly language
Interrupt
Whenever any device needs the microcontrollers
service the device notifies it by sending an interrupt signal. Upon receiving an interrupt signal, the microcontroller stops whatever it is doing and serve the device. The program associated with the interrupt is called ISR (interrupt service routine) or interrupt handler. Each device can get the attention of the microcontroller based on the priority assign to it. Can ignore a device request for service
Polling
The microcontroller continuously monitors the status
of a given device; when the status condition met, it performs the service. After that, it moves on to monitor the next device until each one is service. Cannot assign priority because it checks all devices in a round-robin fashion. Cannot ignore a devices for service
Sources of Interrupt
Each Timers
3 interrupts for external hardware. Pin RB0 (INT0),
RB1 (INT1) and RB2 (INT2) 2 interrupts for serial communication (Receive and Transmit) The PORTB-Change interrupt (RB4-RB7) The ADC The CCP
BSF INTCON,GIE
BCF INTCON,GIE
Timer Interrupts
Interrupt
Timer0 Timer1
Flag Bit
TMR0IF TMR1IF
Register
INTCON PIR1
Timer2
Timer3
TMR2IF
TMR3IF
PIR1
PIR3
TMR3IE
TMR3IE
PIE1
PIE2
Timer0 Interrupt
OVER
Revisit
Please see Program 11-2 (pg 432) and Program 11-3 (pg 433)
Flag Bit
INT1IF
Register
INTCON INTCON3 INTCON3
Hardware Interrupt
Negative-edge-trigerred
OVER
PORTB-Change Interrupt
INTCON Register
PORTB-Change
Use s all four (RB4-RB7) and considered to be a single interrupt even though it can use up to four pins Single flag only (RBIF)
Please see Program 11-8 (pg 451) and Program 11-9 (pg 452)
Interrupt Priority
Interrupt Power-on-Reset High Priority Interrupt Low Priority Interrupt ROM Location (hex) 0000 0008 (Default upon power-on reset) 0018
Please see Program 11-10 (pg 459) and Program 11-11 (pg 460)
*****Assignment
1) Compare and differentiate the features of the Timer 0, Timer1, and Timer2. 2) Write a program using Timer0 to generate a 1 kHz square wave frequency on PORTB RA5. Assuming XTAL=10kHz 3) Write a program using Timer0 to generate a 1 kHz and a 2 kHz square wave frequency on PORTB RB0 and PORTB RB4 respectively. PORTB RB7 will be used as a switch to select the frequencies. If RB7 = 0, a 1 kHz square wave will be generated and if RB7 = 1, a 2 kHz square wave will be generated.