AT89s52 Microcontroller

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 13

AT89s52 Microcontroller:

Features:

 Compatible with MCS®-51 Products


 8K Bytes of In-System Programmable (ISP)
Flash Memory –
Endurance: 1000 Write/Erase Cycles
 4.0V to 5.5V Operating Range
 Fully Static Operation: 0 Hz to 33 MHz
 Three-level Program Memory Lock
 256 x 8-bit Internal RAM
 32 Programmable I/O Lines
 Three 16-bit Timer/Counters
 Eight Interrupt Sources
 Full Duplex UART Serial Channel
 Low-power Idle and Power-down Modes
 Interrupt Recovery from Power-down Mode
 Watchdog Timer
 Dual Data Pointer
 Power-off Flag
 Fast Programming Time
 Flexible ISP Programming (Byte and Page
Mode)
 Green (Pb/Halide-free) Packaging Option

Description:

The AT89S52 is a low-power, high-performance


CMOS 8-bit microcontroller with 8K bytes of in-
system programmable Flash memory. The device is
manufactured using Atmel’s high-density nonvolatile
memory technology and is compatible with the
Indus-try-standard 80C51 instruction set and pin
out. The on-chip Flash allows the program memory
to be reprogrammed in-system or by a conventional
nonvolatile memory pro-grammer. By combining a
versatile 8-bit CPU with in-system programmable
Flash on a monolithic chip, the Atmel AT89S52 is a
powerful microcontroller which provides a highly-
flexible and cost-effective solution to many
embedded control applications. The AT89S52
provides the following standard features: 8K bytes of
Flash, 256 bytes of RAM, 32 I/O lines, Watchdog
timer, two data pointers, three 16-bit timer/counters,
a six-vector two-level interrupt architecture, a full
duplex serial port, on-chip oscillator, and clock
circuitry. In addition, the AT89S52 is designed with
static logic for operation down to zero frequency
and supports two software selectable power saving
modes. The Idle Mode stops the CPU while allowing
the RAM, timer/counters, serial port, and interrupt
system to continue functioning. The Power-down
mode saves the RAM con-tents but freezes the
oscillator, disabling all other chip functions until the
next interrupt or hardware reset.
Pin Description

VCC Supply voltage.

GND Ground.

Port 0

Port 0 is an 8-bit open drain bidirectional I/O


port. As an output port, each pin can sink eight TTL
inputs. When 1s are written to port 0 pins, the pins
can be used as high-impedance inputs. Port 0 can
also be configured to be the multiplexed low-order
address/data bus during accesses to external
program and data memory. In this mode, P0 has
internal pull-ups. Port 0 also receives the code bytes
during Flash programming and outputs the code
bytes during program verification. External pull-
ups are required during program verification.

Port 1

Port 1 is an 8-bit bidirectional I/O port with


internal pull-ups. The Port 1 output buffers can
sink/source four TTL inputs. When 1s are written to
Port 1 pins, they are pulled high by the inter-nal
pull-ups and can be used as inputs. As inputs, Port 1
pins that are externally being pulled low will source
current (IIL) because of the internal pull-ups. In
addition, P1.0 and P1.1 can be configured to be the
timer/counter 2 external count input (P1.0/T2) and
the timer/counter 2 trigger input (P1.1/T2EX),
respectively, as shown in the following table. Port 1
also receives the low-order address bytes during
Flash programming and verification.

Port 2

Port 2 is an 8-bit bidirectional I/O port with


internal pull-ups. The Port 2 output buffers can
sink/source four TTL inputs. When 1s are written to
Port 2 pins, they are pulled high by the internal pull-
ups and can be used as inputs. As inputs, Port 2 pins
that are externally being pulled low will source
current (IIL) because of the internal pull-ups. Port 2
emits the high-order address byte during fetches
from external program memory and during accesses
to external data memory that uses 16-bit addresses
(MOVX @ DPTR). In this application, Port 2 uses
strong internal pull-ups when emitting 1s. During
accesses to external data memory that uses 8-bit
addresses (MOVX @ RI), Port 2 emits the contents of
the P2 Special Function Register. Port 2 also
receives the high-order address bits and some
control signals during Flash programming and
verification. Port Pin Alternate Functions P1.0 T2
(external count input to Timer/Counter 2), clock-out
P1.1 T2EX (Timer/Counter 2 capture/reload trigger
and direction control) P1.5 MOSI (used for In-
System Programming) P1.6 MISO (used for In-
System Programming) P1.7 SCK (used for In-System
Programming)

Port 3

Port 3 is an 8-bit bidirectional I/O port with


internal pull-ups. The Port 3 output buffers can
sink/source four TTL inputs. When 1s are written to
Port 3 pins, they are pulled high by the internal pull-
ups and can be used as inputs. As inputs, Port 3 pins
that are externally being pulled low will source
current (IIL) because of the pull-ups. Port 3 receives
some control signals for Flash programming and
verification. Port 3 also serves the functions of
various special features of the AT89S52, as shown in
the following table.
RST

Reset input. A high on this pin for two machine


cycles while the oscillator is running resets the
device. This pin drives high for 98 oscillator periods
after the Watchdog times out. The DISRTO bit in
SFR AUXR (address 8EH) can be used to disable this
feature. In the default state of bit DISRTO, the
RESET HIGH out feature is enabled.

ALE/PROG

Address Latch Enable (ALE) is an output pulse


for latching the low byte of the address during
accesses to external memory. This pin is also the
program pulse input (PROG) during Flash
programming. In normal operation, ALE is emitted
at a constant rate of 1/6 the oscillator frequency and
may be used for external timing or clocking
purposes. Note, however, that one ALE pulse is
skipped during each access to external data
memory. If desired, ALE operation can be disabled
by setting bit 0 of SFR location 8EH. With the bit
set, ALE is active only during a MOVX or MOVC
instruction. Otherwise, the pin is weakly pulled high.
Setting the ALE-disable bit has no effect if the
microcontroller is in external execution mode.

PSEN

Program Store Enable (PSEN) is the read strobe


to external program memory. When the AT89S52 is
executing code from external program memory,
PSEN is activated twice each machine cycle, except
that two PSEN activations are skipped during each
access to external data memory.

EA/VPP

External Access Enable. EA must be strapped to


GND in order to enable the device to fetch code
from external program memory locations starting at
0000H up to FFFFH. Note, however, that if lock bit 1
is programmed, EA will be internally latched on
reset. EA should be strapped to VCC for internal
program executions. This pin also receives the 12-
volt programming enable voltage (VPP) during Flash
programming.

XTAL1

Input to the inverting oscillator amplifier and


input to the internal clock operating circuit.
XTAL2

Output from the inverting oscillator amplifier.

Memory Organization

MCS-51 devices have a separate address space


for Program and Data Memory. Up to 64K bytes
each of external Program and Data Memory can be
addressed.

Program Memory

If the EA pin is connected to GND, all program


fetches are directed to external memory. On the
AT89S52, if EA is connected to VCC, program
fetches to addresses 0000H through 1FFFH are
directed to internal memory and fetches to
addresses 2000H through FFFFH are to external
memory.

Data Memory

The AT89S52 implements 256 bytes of on-chip


RAM. The upper 128 bytes occupy a parallel address
space to the Special Function Registers. This means
that the upper 128 bytes have the same addresses
as the SFR space but are physically separate from
SFR space. When an instruction accesses an internal
location above address 7FH, the address mode used
in the instruction specifies whether the CPU
accesses the upper 128 bytes of RAM or the SFR
space. Instructions which use direct addressing
access the SFR space. For example, the following
direct addressing instruction accesses the SFR at
location 0A0H (which is P2). MOV 0A0H, #data
Instructions that use indirect addressing access the
upper 128 bytes of RAM. For example, the following
indirect addressing instruction, where R0 contains
0A0H, accesses the data byte at address 0A0H,
rather than P2 (whose address is 0A0H). MOV @R0,
#data Note that stack operations are examples of
indirect addressing, so the upper 128 bytes of data
RAM are available as stack space.

Watchdog Timer (One-time Enabled with Reset-


out)

The WDT is intended as a recovery method in


situations where the CPU may be subjected to
software upsets. The WDT consists of a 14-bit
counter and the Watchdog Timer Reset (WDTRST)
SFR. The WDT is defaulted to disable from exiting
reset. To enable the WDT, a user must write 01EH
and 0E1H in sequence to the WDTRST register (SFR
location 0A6H). When the WDT is enabled, it will
increment every machine cycle while the oscillator
is running. The WDT timeout period is dependent on
the external clock frequency. There is no way to
disable the WDT except through reset (either
hardware reset or WDT overflow reset). When WDT
over-flows, it will drive an output RESET HIGH pulse
at the RST pin.

Using the WDT


To enable the WDT, a user must write 01EH and
0E1H in sequence to the WDTRST register (SFR
location 0A6H). When the WDT is enabled, the user
needs to service it by writing 01EH and 0E1H to
WDTRST to avoid a WDT overflow. The 14-bit
counter overflows when it reaches 16383 (3FFFH),
and this will reset the device. When the WDT is
enabled, it will increment every machine cycle while
the oscillator is running. This means the user must
reset the WDT at least every 16383 machine cycles.
To reset the WDT the user must write 01EH and
0E1H to WDTRST. WDTRST is a write-only register.
The WDT counter cannot be read or written. When
WDT overflows, it will generate an output RESET
pulse at the RST pin. The RESET pulse duration is
98xTOSC, where TOSC = 1/FOSC. To make the best
use of the WDT, it should be serviced in those
sections of code that will periodically be executed
within the time required to prevent a WDT reset.

WDT during Power-down and Idle

In Power-down mode the oscillator stops, which


means the WDT also stops. While in Power-down
mode, the user does not need to service the WDT.
There are two methods of exiting Power-down mode:
by a hardware reset or via a level-activated external
interrupt which is enabled prior to entering Power-
down mode. When Power-down is exited with
hardware reset, servicing the WDT should occur as
it normally does whenever the AT89S52 is reset.
Exiting Power-down with an interrupt is significantly
different. The interrupt is held low long enough for
the oscillator to stabilize. When the interrupt is
brought high, the interrupt is serviced. To prevent
the WDT from resetting the device while the
interrupt pin is held low, the WDT is not started until
the interrupt is pulled high. It is suggested that the
WDT be reset during the interrupt service for the
interrupt used to exit Power-down mode. To ensure
that the WDT does not overflow within a few states
of exiting Power-down, it is best to reset the WDT
just before entering Power-down mode. Before going
into the IDLE mode, the WDIDLE bit in SFR AUXR is
used to determine whether the WDT continues to
count if enabled. The WDT keeps counting during
IDLE (WDIDLE bit = 0) as the default state. To
prevent the WDT from resetting the AT89S52 while
in IDLE mode, the user should always set up a timer
that will periodically exit IDLE, service the WDT, and
reenter IDLE mode. With WDIDLE bit enabled, the
WDT will stop to count in IDLE mode and resumes
the count upon exit from IDLE.

You might also like