12.1.4 Writing to Program Flash Memory
The programming write block size is specified as the number of table latch bytes, also referred to as holding registers, in the memory organization table. Word or byte programming is not supported. Table writes are used internally to load the holding registers needed to program the Flash memory. There are only as many holding registers as there are bytes in a write block.
Since the table latch (TABLAT) is only a single byte, the TBLWT
         instruction needs to be executed multiple times for each programming operation. The write
         protection state is ignored for this operation. All of the table write operations will
         essentially be short writes because only the holding registers are written. NVMIF is not
         affected while writing to the holding registers.
After all the holding registers have been written, the programming operation of that block of memory is started by configuring the NVMCON1 register for a program memory write and performing the long write sequence.
If the PFM address in the TBLPTR is write-protected or if TBLPTR points to an invalid location, the WR bit is cleared without any effect and the WRERR is signaled.
The long write is necessary for programming the internal Flash. CPU
         operation is suspended during a long write cycle and resumes when the operation is
         complete. The long write operation completes in one instruction cycle. When complete, WR is
         cleared in hardware and NVMIF is set and an interrupt will occur if NVMIE is also set. The
         latched data is reset to all ‘1s’. WREN is not
         changed.
The internal programming timer controls the write time. The write/erase voltages are generated by an on-chip charge pump, rated to operate over the voltage range of the device.
0’ to a
            ‘1’. When modifying individual bytes, it is not necessary to load all
         holding registers before executing a long write operation.