English
Language : 

PIC24FJ64GA705 Datasheet, PDF (78/412 Pages) –
PIC24FJ256GA705 FAMILY
EXAMPLE 6-3:
PROGRAMMING A DOUBLE WORD OF FLASH PROGRAM MEMORY
(‘C’ LANGUAGE CODE)
// C example using MPLAB XC16
unsigned long progAddr = 0xXXXXXX;
unsigned int progData1L = 0xXXXX;
unsigned char progData1H = 0xXX;
unsigned int progData2L = 0xXXXX;
unsigned char progData2H = 0xXX;
// Address of word to program
// Data to program lower word of word 1
// Data to program upper byte of word 1
// Data to program lower word of word 2
// Data to program upper byte of word 2
//Set up NVMCON for word programming
NVMCON = 0x4001;
TBLPAG = 0xFA;
// Initialize NVMCON
// Point TBLPAG to the write latches
//Set up pointer to the first memory location to be written
NVMADRU = progAddr>>16;
// Initialize PM Page Boundary SFR
NVMADR = progAddr & 0xFFFF;
// Initialize lower word of address
//Perform TBLWT instructions to write latches
__builtin_tblwtl(0, progData1L);
// Write word 1 to address low word
__builtin_tblwth(0, progData2H);
// Write word 1 to upper byte
__builtin_tblwtl(1, progData2L);
// Write word 2 to address low word
__builtin_tblwth(1, progData2H);
// Write word 2 to upper byte
asm(“DISI #5”);
// Block interrupts with priority <7 for next 5
// instructions
__builtin_write_NVM();
// XC16 function to perform unlock sequence and set WR
DS30010118B-page 78
 2016 Microchip Technology Inc.