Common features included in modern 8051 based microcontrollers include built-in reset timers with brown-out detection, on-chip oscillators, self-programmable [[Flash ROM]] program memory, bootloader code in ROM, EEPROM non-volatile data storage, [[I²C]], [[Serial Peripheral Interface|SPI]], and [[USB]] host interfaces, [[Pulse-width modulation|PWM]] generators, analog comparators, [[Analog to digital converter|A/D]] and [[Digital to analog converter|D/A]] converters, [[Real-time clock|RTC]]s, extra counters and timers, in-circuit debugging facilities, more interrupt sources, and extra power saving modes.