In addition to the usual arithmetic and logic elements of a general microprocessor, the microcontroller also has additional elements such as RAM for data storage, read-only memory for program storage, flash memory for permanent data storage, and other devices (peripherals).