The 8051 Microcontroller: Prepared By, R-Thandaiah Prabu
The 8051 Microcontroller: Prepared By, R-Thandaiah Prabu
Disadvantages of microprocessor
The overall system cost is high A large sized PCB is required for assembling all the components Overall product design requires more time Physical size of the product is big A discrete components are used, the system is not reliable
SJCET
SJCET
ROM type
8031 80xx 87xx 89xx
89xx
8951 8952 8953 8955 898252 891051 892051
Example (AT89C51,AT89LV51)
AT= ATMEL(Manufacture) C = CMOS technology LV= Low Power(3.0v)
RAM
128 128 128 256 256 256
Timer
2 2 2 3 3 3
Block Diagram
External interrupts Interrupt Control On-chip ROM for program code
Timer/Counter
On-chip RAM
Timer 1 Timer 0
Counter Inputs
CPU
Serial Port
OSC
Bus Control
4 I/O Ports
P0 P1 P2 P3
TxD RxD
Address/Data
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST (RXD)P3.0 (TXD)P3.1 (INT0)P3.2 (INT1)P3.3 (T0)P3.4 (T1)P3.5
(WR)P3.6 (RD)P3.7 XTAL2 XTAL1 GND
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
8051
(8031) (8751) (8951)
40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
Vcc P0.0(AD0) P0.1(AD1) P0.2(AD2) P0.3(AD3) P0.4(AD4) P0.5(AD5) P0.6(AD6) P0.7(AD7) EA/VPP ALE/PROG PSEN P2.7(A15) P2.6(A14) P2.5(A13) P2.4(A12) P2.3(A11) P2.2(A10) P2.1(A9) P2.0(A8)
19
P0.0 DS5000 P0.1 P0.2 8751 P0.3 P0.4 8951 P0.5 P0.6 P0.7
Port 0
8-bit R/W - General Purpose I/O Or acts as a multiplexed low byte address and data bus for external memory design
P1.0P1.7
8-bit R/W General Purpose I/O Or high byte of the address bus for external memory design
General Purpose I/O if not using any of the internal peripherals (timers) or external interrupts.
ALE
- Address latch enable to select valid address EA/Vpp - External access enable EA-0 execute program in external memory EA-1 execute program in internal memory Vpp it receives 21 V for on chip EPROM PSEN Program store enable store to read the external program memory
SJCET
Registers
A B R0 R1 R2 R3 R4 R5 R6 Some 8051 16-bit Register PC PC DPTR DPH DPL
DPTR
The data pointer consists of a high byte(DPH) and a low byte (DPL). Its function is to hold a 16 bit address. It may be manipulated as a 16 bit data register or two independent 8 bit register. It serves as a base register in indirect jumps, lookup table instructions and external data transfer.
SJCET
RS0 0 0 1 1
RS1 0 1 0 1
BANK SELECTION 00H 07H BANK0 08H 0FH BANK 1 10H 17H BANK2 18H 1FH BANK 3
SJCET
The register used to access the stack is called SP (stack pointer) register. 30H
2FH
The stack pointer in the 8051 is only 8 bits wide, which means that it can take value 00 to FFH. When 8051 powered up, the SP register contains value 07.
Bit-Addressable RAM
20H 1FH 18H 17H 10H 0FH 08H 07H 00H
Memory Organization
The 8051 memory organization is rather complex. The 8051 has separate address spaces for Program Memory, Data Memory, and external RAM. This is refereed to as a Harvard architecture. The early Mark I (1944) computer developed at Harvard was of this type of architecture. Von Neumann at Princeton pointed out that it was not necessary to put instructions and data in separate memories. Most machines have been Princeton architecture. Recently Harvard architecture has been employed to help alleviate the memory bottleneck. Both program memory and external data memory are 8 bits wide and use 16 bits of address. The internal data memory is accessed using an 8-bit address. Since the same address can refer to different locations the specific location is determined by the type of instruction.
CM
External Memory
On the original using external memory reduces number of available I/O ports. On some new devices this is not the case.
For example in C8051F020 64K bytes of external memory has been included in the chip. The 4 standard 8051 ports are available and three additional ports have been added.
MOVX MOVX MOVX MOVX A,@DPTR ;A XM(DPTR) A,@Rn ;A XM(P2|Rn) @DPTR,A ;XM(DPTR) A @Rn,A ;XM(P2|Rn) A
Data Memory
The original 8051 had 128 bytes of on-chip data RAM.
This memory includes 4 banks of general purpose registers at DM(00..1F) Only one bank can be active at a time. If all four banks are used, DM(20..7F) is available for program data. DM(20..2F) is bit addressable as BADM(00..7F).
DM(80,,FF) contains the special function registers such as I/O ports, timers, UART, etc.
Some of these are bit addressable using BADM(80..FF)
On newer versions of the 8051, DM(80,,FF) is also use as data memory. Thus, the special functions registers and data memory occupy the same address space. Which is accessed is determined by the instruction being used.
XM
MOV A,62H
MOV R1,#62H MOV A@R1
DM
Data memory
SJCET
Timer
A timer is a counter that is increased with every time an instruction is executed e.g. 8051 with 12MHz increases a counter every 1.000 s
2 16-bit timer 1 16-bit timer with extra-functionality (introduced with the 8052)
Uses of Timers & Counters - Interval Timing - Periodic event timing - Time base for measurements - Event Counting -Baud Rate Generation 8051 Timers - 2 timers (Timer 0 and Timer 1) - 16-bit timers (65,535) max - Flag is set when the timer overflows -Timers can be based on internal clock (OSC/6) or from external source (counter mode). TMOD - Timer/Counter mode register TCON - Timer/Counter control register
SJCET
TMOD Register:
Gate : When set, timer only runs while INT(0,1) is C/T : Counter/Timer select bit. M1 : Mode bit 1. M0 : Mode bit 0.
high.
TCON Register:
TF: Overflow flag Set by hardware on Timer/Counter overflow Cleared by hardware when processor vectors to interrupt routine TR: Run control bit Set/Cleared by software to turn Timer/Counter on/off IE: Interrupt Edge flag Set by hardware when external interrupt edge detected Cleared when interrupt processed IT: Interrupt Type control bit Set/Cleared by software to specify falling edge/low level triggered external interrupts
TF1: Timer 1 overflow flag. TR1: Timer 1 run control bit. TF0: Timer 0 overflag. TR0: Timer 0 run control bit. IE1: External interrupt 1 edge flag. IT1: External interrupt 1 type flag. IE0: External interrupt 0 edge flag. IT0: External interrupt 0 type flag.
Internal clock
To Counter/Timer
Falling edge-trigger
External clock
Timer Modes - 0: 13 bit timer - 1: 16-bit timer - 2: 8-Bit auto reload -3: Split timer mode
Mode 0: 13-Bit Timer - Lower byte (TL0/TL1) + 5 bits of upper bytes (TH0/TH1). - Backward compatible to the 8048 - Not generally used
SJCET
Mode 1: 16-bit - All 16 bits of the timer (TH0/TL0, TH1,TL1) are used. - Maximum count is 65,536 -At 12Mhz, maximum interval is 65536 microseconds or 65.536 milliseconds - TF0 must be reset after each overflow - THx / TLx must be manually reloaded after each overflow.
SJCET
- Only the lower byte (TLx) is used for counting. - Upper byte (THx) holds the value to reload into TLx after an overflow. - TFx must be manually cleared. - Maximum count is 256 - Maximum interval is 256 Microseconds or .256 milliseconds
SJCET
Mode 3- Split Timer - Splits Timer 0 into two 8-bit timers - TL0 sets TF0 - TH0 sets TF1 - Timer 1 is available for other 3 modes, but the TF1 is not available.
SJCET
SJCET
SJCET