The interrupt controller has an IVTLOCKED bit, which can be set to avoid inadvertent changes to the contents of IVTBASE. Setting and clearing this bit requires a special sequence as an extra precaution against inadvertent changes.
To allow writes to IVTBASE, the interrupts must be disabled (GIEH = 0
)
and the IVTLOCKED bit must be cleared. The user must follow the sequence shown below to
clear the IVTLOCKED bit.
; Disable Interrupts:
BCF INTCON0, GIE;
; Bank to IVTLOCK register
BANKSEL IVTLOCK;
MOVLW 55h;
; Required sequence, next 4 instructions
MOVWF IVTLOCK;
MOVLW AAh;
MOVWF IVTLOCK;
; Clear IVTLOCKED bit to enable writes
BCF IVTLOCK, IVTLOCKED;
; Enable Interrupts
BSF INTCON0, GIE;
The user must follow the following sequence to set the IVTLOCKED bit.
; Disable Interrupts:
BCF INTCON0, GIE;
; Bank to IVTLOCK register
BANKSEL IVTLOCK;
MOVLW 55h;
; Required sequence, next 4 instructions
MOVWF IVTLOCK;
MOVLW AAh;
MOVWF IVTLOCK;
; Set IVTLOCKED bit to enable writes
BSF IVTLOCK, IVTLOCKED;
; Enable Interrupts
BSF INTCON0, GIE;
When the IVT1WAY Configuration bit is set, the IVTLOCKED bit can be cleared and set only once after a device Reset. The unlock operation will have no effect after the lock sequence is used to set the IVTLOCKED bit. Unlocking is inhibited until a system Reset occurs.