# Atmel AT89 series

The Atmel AT89 series is an Intel 8051-compatible family of 8 bit microcontrollers (μCs) manufactured by the Atmel Corporation.
Based on the Intel 8051 core, the AT89 series remains very popular as general purpose microcontrollers, due to their industry standard instruction set, their low unit cost, and the availability of these chips in DIL (DIP) packages. This allows a great amount of legacy code to be reused without modification in new applications. While less powerful than the newer AT90 series of AVR RISC microcontrollers, new product development has continued with the AT89 series for the aforementioned advantages.
More recently, the AT89 series has been augmented with 8051-cored special function microcontrollers, specifically in the areas of USB, I²C (two wire interface), SPI and CAN bus controllers, MP3 decoders and hardware PWM.
Atmel has also created an LP (low power) series of these chips with a "Single Cycle Core", making the execution speed of these chips considerably faster.

## AT89 Series Microcontrollers

| Device name | Flash memory size | Data memory size |
| AT80C51RD2 | 64KB Flash | 1024 bytes RAM |
| AT83C5134 | -none- | 1024 bytes RAM |
| AT83C5135 | -none- | 1024 bytes RAM |
| AT83C5136 | -none- | 1024 bytes RAM |
| AT83EB5114 | -none- | 256 bytes RAM |
| AT89C1051 | 1KB Flash | 64 bytes RAM |
| AT89C2051 | 2KB Flash | 128 bytes RAM |
| AT89C4051 | 4KB Flash | 128 bytes RAM |
| AT89C51/S51 | 4KB Flash | 128 bytes RAM |
| AT89C5115 | 16KB Flash | 256 bytes RAM |
| AT89C5130A-M | 16KB Flash | 1024 bytes RAM |
| AT89C5131A-L | 32KB Flash | 1024 bytes RAM |
| AT89C5131A-M | 32KB Flash | 1024 bytes RAM |
| AT89C51AC2 | 32KB Flash | 1024 bytes RAM |
| AT89C51AC3 | 64KB Flash | 2048 bytes RAM |
| AT89C51ED2 | 64KB Flash | 1792 bytes RAM |
| AT89C51IC2 | 32KB Flash | 256 bytes RAM |
| AT89C51ID2 | 64KB Flash | 1792 bytes RAM |
| AT89C51RC | 32KB Flash | 512 bytes RAM |
| AT89C51RD2 | 64KB Flash | 1792 bytes RAM |
| AT89C52/S52 | 8KB Flash | 256 bytes RAM |
| AT89C55/55WD | 20KB Flash | 256 bytes RAM |
| AT89EB5114 | 4KB Flash | 256 bytes RAM |
| AT89LP213 | 2KB Flash | 128 bytes RAM |
| AT89LP214 | 2KB Flash | 128 bytes RAM |
| AT89LP216 | 2KB Flash | 128 bytes RAM |
| AT89LP2052 | 2KB Flash | 256 bytes RAM |
| AT89LP3240 | 64KB Flash | 4352 bytes RAM |
| AT89LP4052 | 4KB Flash | 256 bytes RAM |
| AT89LP6440 | 64KB Flash | 4352 bytes RAM |
| AT89LS51 | 4KB Flash | 128 bytes RAM |
| AT89LS52 | 8KB Flash | 256 bytes RAM |
| AT89S2051 | 2KB Flash | 256 bytes RAM |
| AT89S4051 | 4KB Flash | 256 bytes RAM |
| AT89S51 | 4KB Flash | 128 bytes RAM |
| AT89S53 | 12KB Flash | 256 bytes RAM |
| AT89S8252 | 8KB Flash | 256 bytes RAM |
| AT89S8253 | 8KB Flash | 256 bytes RAM |

## Port Structures and Operation

All four ports in the AT89C51 and AT89C52 are bidirectional. Each consists of a latch (Special Function Registers P0 through P3), an output driver, and an input buffer. The output drivers of Ports 0 and 2, and the input buffers of Port 0, are used in accesses to external memory. In this application, Port 0 outputs the low byte of the external memory address, time-multiplexed with the byte being written or read. Port 2 outputs the high byte of the external memory address when the address is 16 bits wide. Otherwise the Port 2 pins continue to emit the P2 SFR content. All the Port 3 pins, and two Port 1 pins (in the AT89C52)are multifunctional. The alternate functions can only be activated if the corresponding bit latch in the port SFR contains a 1. Otherwise the port pin is stuck at 0.