Different Types of Registers used in 8051 Microcontroller The register is the main part of the microcontrollers and processors that provide a fast way to collect and store data. If we want to manipulate data with a controller or processor by performing addition, subtraction, and so on, we cannot do that directly in the memory, but it needs registers to process and store the data. Microcontrollers contain several types of registers that can be classified according to their content or instructions that operate in them. Different Types of Registers in the 8051 Microcontroller Register A register is a small place in a CPU that can store small amounts of the data used for performing various operations such as addition and multiplication and loads the resulting data on the main memory. Registers contain the address of the memory location where the data is to be stored. The size of the register is very important for modern controllers. For instance, for a 64-bit register, a CPU tries to add two 32-bit numbers and gives a 64-bit result. Types of Registers The 8051 microcontroller contains mainly two types of registers: General-purpose registers (Byte addressable registers) Special function registers (Bit addressable registers) 8051 RAM Memory The 8051 microcontroller consists of 256 bytes of RAM, which is divided into two ways, such as 128 bytes for general purpose and 128 bytes for special function registers (SFR) memory. The memory which is used for general purpose is called as RAM, and the memory used for SFR contains all the peripheral related registers like Accumulator, ‘B’ register, Timers or Counters, and interrupt related registers. General Purpose Registers General Purpose Memory The general-purpose memory is called as the RAM of the 8051 microcontrollers, which is divided into 3 areas such as banks, bit-addressable area, and scratch-pad area. The banks contain different general-purpose registers such as R0-R7, and all such registers are byte-addressable registers that store or remove only 1-byte of data. Banks and Registers The B0, B1, B2, and B3 stand for banks, and each bank contains eight general-purpose registers ranging from ‘R0’ to ‘R7’. All these registers are byte-addressable. Data transfer between general-purpose registers to general-purpose registers is not possible. These banks are selected by the Program Status Word (PSW) register. General Purpose Registers PSW (Program Status Word) Register The PSW register is a bit and byte-addressable register. This register reflects the status of the operation that is carried out in the controller. The PSW register determines bank selection by an RS1 and RS0, as shown below. The physical address of the PSW starts from D0h and the individual bits are accessed with D0h to D7h. PSW Registers Carry Flag (C): The Address of the Carry flag is D7. This carry flag is affected when the bit is generated from the 7th position. When C=0 carry resets C=1 carry sets Carry Flag Auxillary Flag(AC): The address of the auxiliary carry is D5. This auxiliary carry is affected when a bit is generated from the 3rd position to the 4th position. AC=0 auxiliary is reset AC=1 auxiliary is set Auxiliary Carry (AC) Overflow Flag (OV): The address of the overflow flag is D2. When a bit is generated from the 6th position to the 7th position, then the overflow flag is affected. OV=0 overflow flag resets OV=1 overflow flag sets Overflow Flag Parity Flag (P): The address of the parity flag is D0. While performing arithmetic operations, if the result is 1, then the parity flag is set – otherwise, reset. RS1 and RS0 The RS1 and RS0, the bits in the PSW register, are used to select different memory locations (bank0 to bank4) in the RAM. Bank selection Registers The following is an example of using this register. The following example demonstrates the addition of two numbers and then the storage of final value in the Bank1 register using an assembly level program. Org 0000h MOV PSW,#00h MOV A, 15 ADD A, 20 MOV 00h, A END Assembly program to move 6 natural numbers in bank0 register R0-R5 Org 0000h (starting addresses declaration) MOV PSW, #00h (open the bank0 memory) MOV r0, #00h (starting address of bank0 memory) MOV r1, #01h MOV r2, #02h MOV r2, #03h MOV r3, #04h MOV r4, #05h END Assembly program to move 6 natural numbers in bank1 register R0-R7 Org 0000h (starting addresses declaration) MOV PSW, #08h (open the bank1 memory) MOV r0, 00h (value send to the bank1 memory) MOV r1, 02h MOV r2, 02h MOV r2, 03h MOV r3, 04h MOV r4, 05h MOV r5, 06h MOV r6, 07h MOV r7, 08h END Special Function Registers (SFR) Special function registers are upper RAM in the 8051 microcontrollers. These registers contain all peripherally related registers like P0, P1, P2, P3, timers or counters, serial port, and interrupts-related registers. The SFR memory address starts from 80h to FFh. The SFR register is implemented by bit-address registers and byte-address registers. Special Function Registers (SFR) The accumulator, B register, Po, P1, P2, P3, IE registers are bit-addressable register remaining all are byte-addressable registers. Accumulator The accumulator which is also known as ACC or A is a bit as well as a byte-addressable register by an address of the accumulator. If you want to use a bit-addressable register, you can use a single bit (E0) of the register and you can use an 8-bit of the accumulator as a byte-addressable register. The accumulator holds the results of most Arithmetic and logical operations. Accumulator register The Assembly program for subtraction used with an Accumulator Org 0000h MOV R0, #09h MOV A, #03h (1byte data) SUBB A, 01h (1byte data) END B-Register The B-register is a bit and byte-addressable register. You can access 1-bit or all 8-bits by a physical address F0h. Suppose to access a bit 1, we have to use f1. The B register is only used for multiplication and division operations. B-Register The Assembly program for multiplication used with a B-Register Org 0000h MOV A, #09h MOV B, #03h MUL A, B (Final value stored in A) END The Assembly program for Division used with a B-Register Org 0000h MOV A, #09h MOV B, #03h DIC A, B (Final value stored in A) END Port Registers The 8051 microcontroller consists of 4-input and output ports (P0, P1, P2, and P3) or 32-I/O pins. Each pin is designed with a transistor and P registers. The pin configuration is very important for a microcontroller that depends on the logic states of the registers. The pin configuration as the input given by 1 or output 0 depends on the logic states. If logic 1 is applied to the bit of the P register, the output transistor switches off the appropriate pin that acts as an input pin. Port Registers of 8051 Assembly program to toggle LEDs of Port0 ORG 0000h RETURN: MOV P0, #00h ACALL DEL1 MOV P0, #0FF ACALL DEL1 SJMP RETURN DEL1: MOV R2, #200 DEL: DJNZ R0, #230 DJNZ R2, DEL RET END Counters and registers Many microcontrollers consist of one or more timers and counters. The timers are used to generate precious time delay and the source for the timers is a crystal oscillator. The counters are used to count the number of external events – for instance, the objective counter, and the source for counters are external pulses applied across the counter pin. The 8051 microcontroller consists of two 16-bit timers and counters such as timer 0 and timer 1. Both the timers consist of a 16-bit register in which the lower byte is stored in the TL and the higher byte is stored in the TH. The Timer can be used as a counter as well as for timing operation that depends on the source of the clock pulses to the counters. The Counters and Timers in 8051 microcontrollers contain two special function registers: TMOD (Timer Mode Register) and TCON (Timer Control Register), which are used for activating and configuring timers and counters. Types of Shift Register Shift registers are a type of sequential logic circuits that are mainly used for the storage of digital data. The shift registers are bit-addressable registers that store only one bit of data. The shift registers are constructed with flip-flops – a group of flip-flops connected as a chain so that the output from one flip-flop becomes the input of the next flip-flop. All the flip-flops are driven by the clock signals that are implemented by the D-flip-flap. The shift registers are mainly used for serial communication. These are classified into 4- types: Serial in Serial out (SISO) Serial in Parallel Out (SIPO) Parallel in Serial out (PISO) Parallel in Parallel Out (PIPO) D- flipflop register These are all different types of registers in an 8051 microcontroller. We hope that we have successfully given you relevant content with the appropriate program for each register. Furthermore, for any sort of help to know the coding of several other registers, you can contact us by commenting below. Photo Credits: Port Registers by mikroe D-Flip-flap Shift registers by electronicdesignworks Share This Post: Facebook Twitter Google+ LinkedIn Pinterest Post navigation ‹ Previous Quiz Buzzer Circuit using 8051 Microcontroller and 555 TimerNext › Types of Mosquito Repellents and Circuit Operation using IC 555 Related Content Design of Android Controlled Automobiles Using 8051 Microcontroller How to Interface an LED With 8051 Microcontroller Digital Temperature Controller Circuit LCD Interfacing with 8051 Microcontroller Comments are closed.