Для хранения программ обычно служит один из видов постоянной памяти: ROM (масочно-программируемое ПЗУ), PROM (однократно-программируемое ПЗУ), EPROM (электрически программируемое ПЗУ с ультрафиолетовым стиранием), EEPROM (ПЗУ с электрической записью и стиранием, к этому виду относятся также современные микросхемы Flash-памяти) или.
Все эти виды памяти являются энергонезависимыми - это означает, что содержимое памяти сохраняется после выключения питания микроконтроллера. Такая память необходима, так как микроконтроллер не содержит каких-либо устройств массовой памяти (магнитных дисков), с которых загружается программа в компьютерах. Программа постоянно хранится в микроконтроллере.
В процессе выполнения программа считывается из этой памяти, а блок управления (дешифратор команд) обеспечивает ее декодирование и выполнение необходимых операций. Содержимое памяти программ не может меняться (перепрограммироваться) во время выполнения программы. Поэтому функциональное назначение микроконтроллера не может измениться, пока содержимое его памяти программ не будет стерто (если это возможно) и перепрограммировано (заполнено новыми командами).
Память ROM(ПЗУ) используется тогда, когда программный код заносится в микроконтроллер на этапе его производства. Предварительно программа отлаживается и тестируется, после чего передается фирме-производителю, где программа преобразуется в рисунок маски на стеклянном фотошаблоне. Полученный фотошаблон с маской используется в процессе создания соединений между элементами, из которых состоит память программ. Поэтому такую память часто называют масочно-программируемой ROM. ROM является самым дешевым типом постоянной памяти для массового производства. Однако она имеет ряд существенных недостатков, которые привели к тому, что в последние годы этот тип памяти почти не используется. Основными недостатками являются значительные затраты средств и времени на создание нового комплекта фотошаблонов и их внедрение в производство.
Память PROMможет быть запрограммирована только один раз. Эта память обычно содержит плавкие перемычки, которые пережигаются во время программирования. В настоящее время такая память используется очень редко.
Электрически программируемая память EPROM состоит из ячеек, которые программируются электрическими сигналами и стираются с помощью ультрафиолетового света. Ячейка памяти EPROM представляет собой MOS-транзистор с плавающим затвором.
Программирование осуществляется путем подачи на управляющий затвор высокого напряжения.
Чтобы стереть содержимое ячейки, она освещается ультрафиолетовым светом, который дает заряду на плавающем затворе достаточную энергию, чтобы он мог покинуть затвор.
Память EEPROM(Еlectrically Еrasable Programmable Memory - электрически стираемая программируемая память) можно считать новым поколением EPROM памяти. В такой памяти ячейка стирается не ультрафиолетовым светом, а путем электрического соединения плавающего затвора с «землей». Использование EEPROM позволяет стирать и программировать микроконтроллер, не снимая его с платы. Таким способом можно периодически обновлять его программное обеспечение.
Память EEPROM более дорогая, чем EPROM (в два раза дороже EPROM с однократным программированием). EEPROM работает немного медленнее, чем EPROM.
Основное преимущество использования памяти EEPROM заключается в возможности ее многократного перепрограммирования без удаления из платы.
Функционально Flash-память мало отличается от EEPROM. Основное различие состоит в способе стирания записанной информации. В памяти EEPROM стирание производится отдельно для каждой ячейки, а во Flash-памяти стирание осуществляется целыми блоками.