8051 Architecture

Introduction

In this tutorial we will discuss, the internal architecture of 8051. Well, not to worry; we will break it down in smaller pieces to understand it. I think a basic understand of Digital electronics would help. Nonetheless, for using 8051 in interfaces and applications, you might just go through it once. Being said that, a through understand will not only help in understand microcontrollers in depth, but will also help in programming efficiently. 8051 Architecture

As we have seen in the Previous tutorial, it basically consists of a ALU, RAM, ROM, IO Ports, Timers/Counters, Serial Port and Interrupt Structure. Well, it also has some internal resisters.

Let us start discussing the ALU, as it is the main unit. Understanding of ALU, will allow us to put other units in their place.

Arithmetic and Logical Unit (ALU)


ALU performs arithmetic like addition, subtraction, multiplication and Logical Operations like NAND, NOR etc. Since 8051 is an 8 bit microcontroller, it takes input from two 8 bit registers namely A and B and processes them. If would like a deeper insight as to how an ALU is built from basic building blocks(logic gates) you may go refer to this tutorial:(4 bit ALU in detail). It would give you a deeper understanding of the microcontrollers, and it it would link your basic concepts like logical gates to the microcontrollers.

Registers of 8051


8 bit Registers
8 bit registers.PNG

The commonly used registers are R0 to R7, A, B, PSW These are all 8 bit registers. The registers associated with the ALU are A,Band PSW. In most operations, ALU performs specified operation on registers 'A' and 'B' and the result is stored back in 'A'. Hence Register 'A' is often called accumulator.

Program Status Word

'PSW' indicates various flags associated with the operation performed. Figure below shows the 8 bits of the PSW register and their function is shown in the table.

PSW Register.PNG
CY Carry Flag
AC
F0 Available for general use
RS1 Register Bank Selection bit 1
RS0 Register Bank Selection bit 0
OV Overflow flag
* User Definable bit
P Parity flag
16 bit Registers.


There are also some 16 bit registers in 8051 as shown in the figure. The program counter points to the next instruction that the CPU executes.

16 bit registers.PNG

The DPTR and other special function registers like SCON, TCON,P0,P1,P2 etc will be discussed while using microcontroller features like timers, counter, serial communication, Interrupts etc.

Internal RAM in Detail


Figure Below show Internal RAM of 8051 it is divided into 3 main sections:

1. Register Banks
8051 Internal RAM
  • There are 32 8-bit registers arranged in 4 groups. These are used as general purpose registers.

2. Bit Addressable RAM

  • 8051 has 16 bytes of RAM, which is bit addressable. It is grouped as 16, 8 byte arrays and any of the 128 bits can also be set/cleared individually.

3. Scratch PAD RAM

  • The third group of registers occupy addresses 2Fh-7Fh, i.e. 80 locations, and does not have any special functions or features. Scratch pad RAM is used by the ALU, while fetching, decoding and executing the instructions during operation of the microcontroller.
System Timing, Interrupts, Timers, Data Buffers and Memory Cotrol


PIN Diagram and IO port structure


8051 pin diagram
8051 pin write.jpg
Pin read 0.jpg
Pin read 1.jpg

Figure 1 shows the pin diagram of a 8052(only difference is that it has some addition features). In fact we will be using either a AT89S52 OR P89V51RD2 in our interfacing tutorials. As we can see there are four 8 bit ports P0,P1,P2 and P3.
All the ports can be used either as input and output. You would also observe some of the pins have additional functions. We will discuss additional features with relevant topics.
Input/Output pins are widely used to interface a microcontroller with the external peripherals, like LEDs, SevenSegments, LCDs, Motors and the list goes on. Although most of the peripherals are not connected directly, it is essential to understand the way in which microcontroller, reads or writes bits to the port pins. The micrcontroller sends and receives binary 1s or 0s on each of the pins. All the four ports are similar, expect P0 which deos not have internal pull up.