The flash memory of the microcontroller is a contiguous space which contains both the program ROM space as well as the data EEPROM space and the configuration word. The program instructions get stored in the program space within the flash ROM. The data EEPROM section of flash ROM can be used for permanent storage of user settings while RAM is used for variables during program execution. With the proper code routines, the microcontroller can write to as well as read from the data EEPROM space in the flash memory but special code routines are required to do this.