The system arbiter grants memory access to the peripheral selections (DMAx, Scanner) as long as the PRLOCKED bit is set. Priority selections are locked by setting the PRLOCKED bit. Setting and clearing this bit requires a special sequence as an extra precaution against inadvertent changes. The following code examples demonstrate the Priority Lock and Priority Unlock sequences.
INTCON0bits.GIE = 0; // Disable Interrupts;
PRLOCK = 0x55;
PRLOCK = 0xAA;
PRLOCKbits.PRLOCKED = 1; // Grant memory access to peripherals;
INTCON0bits.GIE = 1; // Enable Interrupts;
INTCON0bits.GIE = 0; // Disable Interrupts;
PRLOCK = 0x55;
PRLOCK = 0xAA;
PRLOCKbits.PRLOCKED = 0; // Allow changing priority settings;
INTCON0bits.GIE = 1; // Enable Interrupts;