8051 - Nsut - Csda
8051 - Nsut - Csda
Lecture Notes on
Microprocessor and Microcontroller
(UNIT-IV)
Branch: CSDA Sem-3RD
Features of 8051
Feature Quantity
ROM 4K bytes
RAM 128bytes
Timer 2
I/O pins 32
Serial Port 1
Interrupt sources 6
i.e. addresses A8-A15 will appear on this port. Even though memory with capacity of 64Kb is
not used, which means that not all eight port bits are used for its addressing, the rest of them
are not available as inputs/outputs.
Pin 29: PSEN’- Program Store Enable. If external ROM is used for storing program, then a
logic zero(0) appears on it every time the microcontroller reads a byte from memory.
Pin 30: ALE – Address latch enable
1 – Address on AD 0 to AD 7
0 – Data on AD 0 to AD 7
Pin 31: EA’ – it indicates the presence of external memory
Pin 32-39: Port 0 Similar to P2.
Pin 40: VCC → +5V power supply.
2. Architecture of 8051
Fig 4.1 shows a simplified architecture for the internal Hardware. Fig 4.2 shows an overview of
the internal hardware architecture of the 8051/8031 microcontrollers.
The CPU has the controlled and sequencing logic circuits with signals as in a microprocessor.The
MCU has, besides the CPU, ROM, Interrupt control circuit, internal timing devices (timersT0, T1),
serial interface (SI), RAM and special function registers (SFRs). It has four ports P0, P1, P2 and P3
as shown in Fig. 4.1. The overview block diagram of 8051 is depicted in Fig.4.2.
Description of Sub units in the hardware architecture and meaning of the symbols
3. Memory Organization
The 8051 micro controller has a total of 128 bytes of RAM. The 128 bytes of RAM inside the
8051 are assigned addresses 00H to 7FH and divided into three different groups as follows.
1. A total of 32 bytes from location s 00H to 1FH are set aside for register banks and the stacks.
2. A total of 16 bytes from locations 20H to 2FH are set aside for bit addressable read/write
memory.
3. A total of 80 bytes from locations 30H to 7FH are used for read and write storage, or what is
normally called a scratch pad. These 80 locations of RAM are widely used for the purpose of
storing data and parameters by 8051 programmers.
As mentioned, a total of 32 bytes of RAM are set aside for the register banks. These 32 bytes
are divided into 4 banks of registers in which each bank has 8 registers, R0-R7. RAM locations
SUBJECT- MP&MC
from 0 to 7 are set aside for bank 0 of R0-R7 where R0 is RAM location 0 , R2 is location 2 and
so on. The second bank of registers R0-R7 start RAM location 08 and goes to location 1FH. The
third bank of R0-R7 starts at memory location 10 H and goes to location 17H. finally RAM
location 18H to 1FH are set aside for the fourth bank of R0-R7. The following shows how 32
bytes are allocated into 4 banks.
Fig.4.8 shows a layout of the external code memory addresses in the classic 8051 architecture.
1. When the the EA =0 at RESET, the PC (MCU program counter ) starts from 0x0000 and
accesses the external addresses from the memory. Memory addresses are between 0x0000
and 0xFFFF.
2. When the EA =1 at RESET, the PC starts from 0x0000 for banks0 and 1 and accesses the
internal addresses and the 0x1000 onwards from the external addresses from the memory.
Fig. 4.9 shows a layout of the external data (X-DATA) memory addresses in the classic 8051
architecture. It can be accessed through the indirect addressing mode used.
6. Port Operation
The four ports P0, P1, P2 and P3 each use 8 pins, making them 8-bit ports. All the ports upon
RESET are configured as output, ready to be used as output ports. To use any of these ports as
an input port , it must be programmed.
Port 0
It can be used for input or output. It occupies total of 8 pins (pins 32-39). To use the pins of port
0 as both input and out ports, each pin must be connected externally to a 10 K ohm pull-up resistor.
P0 is an open drain unlike P1, P2 and P3. With external pull-up resistors connected uponreset,
port0 is configured as an output port.
With resistors connected to port 0 , in order to make it as input the port must be programmed by
writing 1 to all the bits. In the following code.
MOV A, #0FFH
MOV P0, A
BACK: MOVA, P0
MOV P1, A
SJMP BACK.
Port 1
Port 1 occupies a total of 8 pins (pins 1 through 8) . It can be used as input or output. In contrastto
Port 0 , this port does not need any pull-up resistors since it already has pull-up resistors internally.
SUBJECT- MP&MC
Upon reset port 1 is configured as an output port. To make Port 1 an input port it must be
programmed as such by writing 1 to all its bits.
Port 2
Port 2 occupies a total of 8 pins ( pins 21 through 28). It can be used as input or output. Just like
P1, port 2 does not need any pull-up resistors since it already has pull-up resistors internally. Upon
reset, port 2 is configured as an output port. To make port 2 as input, it must programmed
SUBJECT- MP&MC
as such by writing 1 to all its bits. The dual role of port 2 is also accomplished by providing higher
byte address through A8-A15 to access the external memory.
Port 3
Port 3 occupies a total of 8 pins, pin 10 through 17. It can be used as input or output. P3 does not
need any pull-up resistors , the same as P1 and P2. Although Port 3 is configured as an output port
upon reset, Port 3 has additional function of providing some extremely important signals such as
interrupts. Table depicts the alternate functions of port 2
P3.0 and P3.1 are used for the RxD and TxD serial communication signals. P3.2 and P3.3 are used
for external interrupts. Bits P3.4 and P3.5 are used for timers 0 and 1. Bits P3.6 and P3.7
are used to provide WR and RD signals for external memories in 8051 based system.
For interfacing to external ROM some pins have important role that to be discussed here.
EA -When this pin is connected to Vcc, that indicates the program code is stored in the
microcontroller on-chip ROM. For external ROM access this pin is grounded.
P0 and P2 role in providing addresses- In 8051 P0 and P2 provides the 16-bit address to access
external memory. Of these ports P0 provides the lower 8 bit addresses A0-A7, and P2 provides the
upper 8 bit addresses A8-A15. More importantly, P0 is also used to provide 8 bit- data bus D0-D7.
In other words P0.0- P0.7 are used for both address and Data is called as address/data multiplexing.
The sharing of this bus is accomplished by ALE (address latch enable.) Pin.
When ALE=0, the 8051 uses P0 for the data path and when ALE=1, it is used for address path.
PSEN (program store enable)- It is an output signal must be connected to OE pin of a ROM
containing the program code. When EA pin is connected to ground the 8051 fetches opcode
SUBJECT- MP&MC
7. Programmer’s Model
The CPU registers are used to store the data temporarily. The information may be data to
be processed or address pointing the data to be fetched. The majority of registers are 8 bits. The 8-
bit registers are shown in the diagram from MSB (most significant bit) D7 to the LSB (least
significant bit) D0. The most widely used registers of 8051 are A (accumulator), B, R0, R1, R2,
R3, R4, R5, R6, R7, DPTR (data pointer), and PC (program counter). All these registers are 8 bits
except DPTR and the program counter. The accumulator is used to hold one operand before
execution and hold the result after execution. The program counter points to the address of next
instruction to be fetched. It is a auto increment register. As the size of program counter is 16 bit.
8051 can access the program addresses from 0000H-FFFFH. When 8051 is powered-up the
program counter contents will be 0000H. This means that it expects the first opcode to be stored
at ROM address 0000H. For this reason in the 8051 system, the first opcode must be burned
memory location 0000H of program ROM since this is where it looks for the first instruction when
it is booted.
The program status word register (PSW) is an 8-bit register. It is also referred as Flag register.
Although this register is size of 8-bits, only 6bits are used by 8051. Two unused bits are user
definable flags. Other 4 bits are called as conditional flags such as CY (carry), AC (auxiliary
carry), P(parity) and OV(overflow).In this register the bits PSW.3 and PSW.4 are designated as
RS0 and RS1 and used to select the banks. PSW.5 and PSW.1 bits are general purpose status flags
and can be used by the programmer for any purpose.
SUBJECT- MP&MC
8. Operand addressing
1. Register
2. Immediate
3. Direct (memory related)
4. Register Indirect (memory related)
5. Index register addressing
This addressing mode involves the use of registers to hold the data to be manipulated.
Examples:
Examples:
As we know the on-chip RAM of 8051 is 128 byte, it can be accessed through memory address
from 00H to FF H. The allocations of 128 bytes are as follows.
Although the entire 128 bytes of RAM can be accessed through direct addressing mode, it is most
often used to access RAM location 30H-7FH. This is due to fact that register banks are accessed
through their names.
SUBJECT- MP&MC
Examples:
MOV R4, 70H ; move the contents of RAM location 70H to R4.
In this mode the address (of 8bits) is indirectly specified in the instruction by the contents of
pointer. This addressing mode so called because the source operand is from the address specified
indirectly by another register in the instruction. The limitation is that only R0 and R1 register can
be used in 8051 for indirect addressing. SFRs are directly accessible.
Examples
Suppose we need to access external data RAM and external code space of on-chip ROM
16 bit address must be required. In this case we have to use DPTR. This mode is widely used in
accessing data elements of look-up table entries in the program ROM space of 8051.
Examples;