Datasheet

Ā© 2009 Microchip Technology Inc. Preliminary DS39937B-page 47
PIC24F04KA201 FAMILY
EXAMPLE 5-2: ERASING A PROGRAM MEMORY ROW – ā€˜C’ LANGUAGE CODE
// C example using MPLAB C30
int __attribute__ ((space(auto_psv))) progAddr = &progAddr; // Variable located in Pgm Memory
unsigned int offset;
//Set up pointer to the first memory location to be written
TBLPAG = __builtin_tblpage(&progAddr); // Initialize PM Page Boundary SFR
offset = &progAddr & 0xFFFF; // Initialize lower word of address
__builtin_tblwtl(offset, 0x0000); // Set base address of erase block
// with dummy latch write
NVMCON = 0x4058; // Initialize NVMCON
asm("DISI #5"); // Block all interrupts for next 5 instructions
__builtin_write_NVM(); // C30 function to perform unlock
// sequence and set WR