ROM
در ابتدای کار از ROM که حافظه ی فقط خواندنی بود (Read Only Memory ) به عنوان Program Memory داخل میکرو کنترلر ها استفاده می شد. خصوصیت این حافظه به این صورت هست که فقط یک بار قابلیت پروگرامر شدن داره که در زمان تولید محصول پروگرام می شوند.
PROM
نسل دوم حافظه ها PROM یا Programmable Rom بود. این حافظه ها هم مانند ROM فقط یک بار پروگرام می شد ولی تفاوت آن با ROM در این بود که PROM توسط کاربر و با استفاده از پروگرامر پروگرام می شد و به محض این که یک بار پروگرام شد، دیگر برنامه آن قابل تغییر نبود.
EPROM
در نسل بعدی حافظه ها EPROM وارد بازرا شد ( Erasable Programmable ROM ) که می شد توسط تابش اشعه UV محتویات برنامه آن را پاک و دوباره پروگرام کرد. برای این کار یک پنجره ی کوچک روی میکروکنترلر قرار می دادند.
EEPROM
بعد از این نسل چهارم حافظه ها با نام EEPROM که از Electrically Erasable Programmable ROM گرفته شده است، به بازار آمد.در این حافظه ها برخلاف EPROM می توان خیلی راحت و با استفاده از ولتاژ الکتریکی محتوای حافظه را پاک کرد. در این حافظه ها به طور مستقیم می شد در هر لحظه یک بایت یا یک کلمه از حافظه را خواند، نوشت و یا پاک کرد.
FLASH
بعد از EEPROM حافظه های FLASH به بازار آمدند. این طور می توان گفت که حافظه های Flash زیر مجموعه ای از EEPROM ها و یا یک نوع از EEPROM است.
در حافظه های Flash برخلاف EEPROM می توان در یک لحظه تمامی بایت های یک بلوک دیتا را حذف کرد.
حافظه های Flash در دو دسته بندی وجود دارند که عبارت اند از حافظه ی NAND و حافظه ی NOR
در NAND FLASH عملیات خواندن و نوشتن و پاک کردن در سطح بلوک صورت می گیرد در صورتی که در NOR FLASH می توان یک کلمه یا بایت را خواند یا نوشت اما عملیات پاک کردن همچنا ن بر روی کل بلوک صورت می گیرد. بنابراین با توجه به این تعریف ها به این نتیجه می رسیم که از NOR FLASH برای حافظه ی برنامه میکروکنترلرها استفاده می شود.
دلایل استفاده از NOR FLASH
تراکم بالا:در این نوع حافظه در یک فضای یکسان نسبت به بقیه حافظه ها می توان حجم بالاتری از حافظه به وجود آورد و یا به عبارت دیگر در حجم مساوی از حافظه، این حافظه نیاز به سخت افزار و فضای کمتری نسبت به بقیه دارد.
سرعت بالا:
این حافظه دارای سرعت بالایی برای خواندن اطلاعات دارد، بنابراین می تواند باعث افزایش سرعت اجرای برنامه شود.
معایب حافظه FLASH
تنها عیب این حافظه طول عمر نوشتن و پاک کردن آن است، یعنی تعداد دفعاتی که می توان بر روی این حافظه ها نوشت و یا پاک کرد محدود است و معمولا در رنج 10000 مرتبه است. البته امروزه با پیشرفت تکنولوژی این عدد افزایش پیدا کرده و تا 100 هزار بار رسیده است. اگر به طول عمر نوشتن EEPROM نگاه کنیم متوجه می شویم این عدد بین 100 کیلو تا 1 میلیون مرتبه است. بنابراین طول عمر EEPROM در نوشتن و پاک کردن خیلی بیشتر از حافظه های FLASH است.