MICROCONTROLLER-8051Features & Applications : MICROCONTROLLER-8051Features & Applications Dr. Y .Narasimha Murthy Ph.D.,
Sri Saibaba National College
ANANTAPUR-515001(A.P) Slide 2: ….. Man’s glory lies in his knowledge,
his upright conduct, his praise-worthy character,
his wisdom, and not in his nationality or rank
(From, the book The 8051 Microcontroller and Embedded systems- Mazidi ) Overview : Overview Introduction
Block Diagram and Pin Description of the 8051
Memory mapping in 8051
Stack in the 8051
I/O Port Programming
Applications Why do we need to learn Microcontrollers ? : Its not an exaggeration if I say that ,today there is no electronic gadget on the earth which is designed without a Microcontroller. Ex: communication devices, digital entertainment, portable devices etc…
Not believable ??? See the next slide Why do we need to learn Microcontrollers ? Slide 5: Personal information products: Cell phone, pager, watch, pocket recorder, calculator
Laptop components: mouse, keyboard, modem, fax card, sound card, battery charger
Home appliances: door lock, alarm clock, thermostat, air conditioner, TV remote, VCR, small refrigerator, exercise equipment, washer/dryer, microwave oven
Industrial equipment: Temperature/pressure controllers, Counters, timers, RPM Controllers
Toys: video games, cars, dolls, etc. Slide 6: So, A good designer should always know what type of controller he/she is using ,their architecture, advantages , disadvantages , ways to reduce production costs and product reliability etc….
O.K ???? Then What is a Microcontroller ? : Then What is a Microcontroller ? A smaller computer
On-chip RAM, ROM, I/O ports...
Example：Motorola’s 6811, Intel’s 8051, Zilog’s Z8 and PIC 16X RAM ROM I/O Port Timer Serial COM Port CPU A single chip Microcontroller How is it different from a Microprocessor ?? : How is it different from a Microprocessor ?? General-purpose microprocessor CPU for Computers
No RAM, ROM, I/O on CPU chip itself
Example：Intel’s x86, Motorola’s 680x0 CPU
General-Purpose Micro-processor RAM ROM I/O Port Timer Serial COM Port Data Bus Address Bus Slide 9: Microprocessor
CPU is stand-alone, RAM, ROM, I/O, timer are separate
designer can decide on the amount of ROM, RAM and I/O ports.
CPU, RAM, ROM, I/O and timer are all on a single chip
fix amount of on-chip ROM, RAM, I/O ports
Highly bit addressable
for applications in which cost, power and space are critical
single-purpose Microprocessor vs. Microcontroller EVOLUTION : EVOLUTION Flashback !!!!
In the year 1976, Motorola created a Microprocessor chip called 6801 which replaced its brother 6800 with certain add-on chips to make a computer. This paved the way for the new revolution in the history of chip design and gave birth to a new entity called
The INTEL bagged the credit of producing the first Microcontroller 8048 with a CPU and 1K bytes of EPROM, 64 Bytes of RAM an 8-Bit Timer and 27 I/O pins in 1976. Evolution contd… : Evolution contd… Then followed the most popular controller 8051 in the year 1980 with 4K bytes of ROM,128 Bytes of RAM , a serial port, two 16-bit Timers , and 32 I/O pins.
The 8051 family has many additions and improvements over the years and remains a most soughtafter tool for todays circuit designers.
The same INTEL introduced a 16 bit controller 8096 in the year 1982 Slide 12: Later INTEL introduced 80c196 series of 16-bit microcontrollers for mainly industrial applications
Microchip, another company has introduced a microcontroller PIC 16C64 an 8-bit in the year 1985.
32-bit microcontrollers have been developed by IBM and Motorola-MPC 505 is a 32-bit RISC controller of Motorola
The 403 GA is a 32 -bit RISC embedded controller of IBM ARM Controllers : ARM Controllers In recent times ARM company (Advanced Risc machines) has developed and introduced 32 bit controllers which are highend application devices,especially communication devices like mobiles , ipods etc..(Refer www.arm.com) Types of Microcontrollers : Types of Microcontrollers Slide 15: Microcontrollers from different manufacturers Atmel
12-bit instruction PIC
14-bit instruction PIC
16-bit instruction PIC
Z86E02 MCS-51 “Family” of Microcontollers : MCS-51 “Family” of Microcontollers Feature 8031 8051 8052 8751
ROM NO 4kB 8kB 4kB UV Eprom
RAM (Bytes) 128 128 256 128
TIMERS 2 2 3 2
I/O PINS 32 32 32 32
SERIAL PORTS 1 1 1 1
INTERRUPT 6 6 8 6
SOURCES Microcontroller Architectures : Microcontroller Architectures CPU Program + Data Address Bus Data Bus Memory Von Neumann
Architecture CPU Program Address Bus Data Bus Harvard
Architecture Memory Data Address Bus Fetch Bus 0 0 0 2n Important Features of 8051 : Important Features of 8051 4K bytes ROM
128 bytes RAM
Four 8-bit I/O ports
Two 16-bit timers
64K external code memory space
64K data memory space “Original” 8051 Microcontroller : “Original” 8051 Microcontroller Oscillator and timing 4096 Bytes Program Memory
(ROM) 128 Bytes
(RAM) Two 16 Bit Timer/Event Counters 8051 CPU 64 K Byte Bus Expansion Control Programmable I/O Programmable Serial Port Full Duplex UART Synchronous Shifter Internal data bus External interrupts subsystem interrupts Control Parallel ports
Address Data Bus
I/O pins Serial Input Serial Output Slide 20: Pin Description of the 8051 The 8051 is a 40 pin device, but out of these 40 pins, 32 are used for I/O.
24 of these are dual purpose, i.e. they can operate as I/O or a control line or as part of address or date bus. 8051 CPU Registers : 8051 CPU Registers A (8-bit Accumulator)
B (8-bit register for Mul &Div)
PSW (8-bit Program Status Word)
SP (8-bit Stack Pointer)
PC (16-bit Program Counter)
DPTR (16-bit Data Pointer) Special Function Registers : Special Function Registers DATA registers
Analog to Digital converter
Digital to Analog converter
etc.. Addresses 80h – FFh
Direct Addressing is used to access SFRs List of Registers(*Denotes the SFRs) : List of Registers(*Denotes the SFRs) Contd… : Contd… PSW REGISTER : PSW REGISTER Slide 26: Memory mapping in 8051 ROM memory map in 8051 family 4k DS5000-32 8k 32k from Atmel Corporation from Dallas Semiconductor Slide 27: RAM memory space allocation in the 8051 PORTS OF 8051 : PORTS OF 8051 8051 has 4 Ports. Port 0, Port1, Port2 , Port3 Port 0 is a dual purpose port, it is located from pin 32 to pin 39 (8 pins). To use this port as both input/output ports each pin must be connected externally to a 10 k ohm pull-up resistor.This is because Port 0 is an open drain.
Simple ex: MOV A, #22
BACK MOV P0 ,A
SJMP BACK Port 0 with Pull-Up Resistors : Port 0 with Pull-Up Resistors Ports…. : Port 1 is a dedicated I/O port from pin 1 to pin 8.Upon reset it is configured as outport. It is generally used for interfacing to external device thus if you need to connect to switches or LEDs, you could make use of these 8 pins,but it doesn’t need any pull-up resistors as it is having internally
Like port 0, port 2 is a dual-purpose port.(Pins 21 through 28) It can be used for general I/O or as the high byte of the address bus for designs with external code memory.Like P1 ,Port2 also doesn’t require any pull-up resistors Ports…. Ports contd… : Ports contd… Port 3 is also dual purpose but designers generally avoid using this port unnecessarily for I/O because the pins have alternate functions which are related to special features of the 8051. Indiscriminate use of these pins may interfere with the normal operation of the 8051.
However, for a programmer, it is the same to program P0, P1, P2 and P3.
All the ports upon RESET are configured as output. To use any of the ports as an input port,it must be set(Programmed) Alternate functions of P3 : Alternate functions of P3 I/O Port structure : I/O Port structure The internal circuitry for the I/O port is shown in the next slide
If you want to read in from a pin, you must first give a logic ‘1’ to the port latch to turn off the FET otherwise the data read in will always be logic ‘0’.
When you write to the port you are actually writing to the latch e.g. a logic 0 given to the latch will be inverted and turn on the FET which cause the port pin to be connected to Gnd (logic 0). I/O Port contd… : I/O Port contd… Timers /Counters : Timers /Counters The 8051 has 2 timers/counters:
They can be used as
The Timer :Uused as a time delay generator.
The clock source is the internal crystal frequency of the 8051.
An event counter.
External input from input pin to count the number of events on registers.
These clock pulses cold represent the number of people passing through an entrance, or the number of wheel rotations, or any other event that can be converted to pulses. Timer : Timer Set the initial value of registers
Start the timer and then the 8051 counts up.
Input from internal system clock (machine cycle)
When the registers equal to 0 and the 8051 sets a bit to denote time out to
LCD P1 8051 TL0 TH0 P2 Set
Timer 0 Counter : Counter Count the number of events
Show the number of events on registers
External input from T0 input pin (P3.4) for Counter 0
External input from T1 input pin (P3.5) for Counter 1
External input from Tx input pin.
We use Tx to denote T0 or T1. T0 to
LCD P3.4 P1 8051 a switch TL0 TH0 Registers Used in Timer/Counter : Registers Used in Timer/Counter 8051 has two 16-bit Timer registers ,Timer 0 & Timer 1.
As 8051 has 8-bit architecture , each Timer register is treated as two 8-bit registers namely
TH0, TL0, TH1, TL1.
One 8-bit mode register -TMOD.
One 8-bit control register-TCON. TMOD Register : TMOD Register Both Timer 0 &Timer 1 use the same Mode register TMOD.
It is an-8-bit register .The lower 4-bits are meant for Timer 0 &the uooer 4-bits are meant for Timer 1
It is not bit addressible.
It is used similar to any other register of 8051 . For ex:
MOV TMOD,#21H Gate : Gate Every timer has a mean of starting and stopping.
The start and stop of the timer are controlled by way of software.
Set/clear the TR for start/stop timer.
The hardware way of starting and stopping the timer by software and an external source.
Timer/counter is enabled only while the INT pin is high and the TR control pin is set (TR). TMod contd…. : TMod contd…. C/T : Timer or counter selected cleared for timer operation (input from internal system clock). Set for counter operation (input from Tx input pin).
M1,M0 : Used for mode selection.Because the Timers of 8051 can be set in 4-different modes.
M1 M0 Mode Operation
0 0 0 13-bit timer mode 8-bit THx + 5-bit TLx (x= 0 or 1)
0 1 1 16-bit timer mode 8-bit THx + 8-bit TLx
1 0 2 8-bit auto reload 8-bit auto reload timer/counter;
THx holds a value which is to be reloaded into
TLx each time it overflows.
1 1 3 Split timer mode TMod contd… : TMod contd… Let us understand the working of Timer Mode 1 : Let us understand the working of Timer Mode 1 For this , let us consider timer 0 as an example.
16-bit timer (TH0 and TL0)
TH0-TL0 is incremented continuously when TR0 is set to 1. And the 8051 stops to increment TH0-TL0 when TR0 is cleared.
The timer works with the internal system clock. In other words, the timer counts up each machine cycle.
When the timer (TH0-TL0) reaches its maximum of FFFFH, it rolls over to 0000, and TF0 is raised.
Programmer should check TF0 and stop the timer 0. Steps of Mode 1 : Steps of Mode 1 Choose mode 1 timer 0
Set the original value to TH0 and TL0.
You better to clear the TF: TF0=0.
Start the timer.
SETB TR0 Mode 1 contd… : Mode 1 contd… The 8051 starts to count up by incrementing the TH0-TL0.
TH0-TL0= FFFCH,FFFDH,FFFEH,FFFFH,0000H TF = 0 TF = 0 TF = 0 TF = 0 TF = 1 TH0 TL0 Start timer Stop timer Monitor TF until TF=1 TR0=1 TR0=0 TF Mode 1 contd… : Mode 1 contd… When TH0-TL0 rolls over from FFFFH to 0000, the 8051 set TF0=1.
TH0-TL0= FFFE H, FFFF H, 0000 H (Now TF0=1)
Keep monitoring the timer flag (TF) to see if it is raised.
AGAIN: JNB TF0, AGAIN
Clear TR0 to stop the process.
Clear the TF flag for the next round.
CLR TF0 : TCON Register Timer control register TMOD is a 8-bit
register which is bit addressable and in
which Upper nibble is for timer/counter,
lower nibble is for interrupts Tcon contd… : Tcon contd… TR (Timer run control bit)
TR0 for Timer/counter 0; TR1 for Timer/counter 1.
TR is set by programmer to turn timer/counter on/off.
TR=0 : off (stop)
TR=1 : on (start)
TF (timer flag, control flag)
TF0 for timer/counter 0; TF1 for timer/counter 1.
TF is like a carry. Originally, TF=0. When TH-TL roll over to 0000 from FFFFH, the TF is set to 1.
TF=0 : not reach
If we enable interrupt, TF=1 will trigger ISR. Equivalent Instructions for the Timer Control Register : Equivalent Instructions for the Timer Control Register TCON: Timer/Counter Control Register Simple applications using ports &Timers : Simple applications using ports &Timers Using a port ,by a simple program you can generate a Square wave of any duty cycle.
HERE : SETB P1.0 (Make bit of Port 0 High)
SJMP HERE : Keep doing it
Here same delay is used for both
High & low Square-wave of 66%duty cycle. : Square-wave of 66%duty cycle. HERE : SETB P1.0 ( Make bit of Port 0 High)
SJMP HERE : Keep doing it Square-wave generation using Timer : Square-wave generation using Timer DELAY:
SETB TR0 ;start the timer 0
AGAIN: JNB TF0,AGAIN
CLR TR0 ;stop timer 0
CLR TF0 ;clear timer 0 flag
RET Square wave of 50% duty on P1.5
Timer 0 is used
; each loop is a half clock
MOV TMOD,#01 ;Timer 0,mode 1(16-bit)
HERE: MOV TL0,#0F2H ;Timer value = FFF2H
SJMP HERE : 8051- SERIAL COMMUNICATION Basics of serial communication : Basics of serial communication Types of Serial communications : Types of Serial communications RxD and TxD pins in the 8051 : RxD and TxD pins in the 8051 The 8051 has two pins for transferring and receiving data by serial communication. These two pins are part of the Port3(P3.0 &P3.1)
These pins are TTL compatible and hence they require a line driver to make them RS232 compatible
Max232 chip is one such line driver in use.
Serial communication is controlled by an 8-bit register called SCON register,it is a bit addressable register. Interfacing to PC : Interfacing to PC SCON (Serial control) register : SCON (Serial control) register SM0 , SM1 : SM0 , SM1 These two bits of SCON register determine the framing of data by specifying the number of bits per character and start bit and stop bits. There are 4 serial modes.
0 0 Serial Mode 0
0 1 Serial Mode 1, 8 bit data,
1 stop bit, 1 start bit
1 0 Serial Mode 2
1 1 Serial Mode 3 REN, TI, RI : REN, TI, RI REN (Receive Enable) also referred as SCON.4. When it is high,it allows the 8051 to receive data on the RxD pin. So to receive and transfer data REN must be set to 1.When REN=0,the receiver is disabled. This is achieved as below
& CLR SCON.4 Contd… : Contd… TI (Transmit interrupt) is the D1 bit of SCON register. When 8051 finishes the transfer of 8-bit character, it raises the TI flag to indicate that it is ready to transfer another byte. The TI bit is raised at the beginning of the stop bit.
RI (Receive interrupt) is the D0 bit of the SCON register. When the 8051 receives data serially ,via RxD, it gets rid of the start and stop bits and places the byte in the SBUF register.Then it raises the RI flag bit to indicate that a byte has been received and should be picked up before it is lost.RI is raised halfway through the stop bit. 8051 Interrupts : 8051 Interrupts An interrupt is an external or internal event that disturbs the microcontroller to inform it that a device needs its service.
A Microcontroller can serve various devices.
There are two ways to do that:
The program which is associated with the interrupt is called the interrupt service routine (ISR) or interrupt handler. Steps in executing an interrupt : Steps in executing an interrupt Upon receiving the interrupt signal the Microcontroller , finish current instruction and saves the PC on stack.
Jumps to a fixed location in memory depending on type of interrupt
Starts to execute the interrupt service routine until RETI (return from interrupt)
Upon executing the RETI the microcontroller returns to the place where it was interrupted. Get pop PC from stack Interrupt Sources : Interrupt Sources Original 8051 has 6 sources of interrupts
Timer 0 overflow
Timer 1 overflow
External Interrupt 0
External Interrupt 1
Serial Port events (buffer full, buffer empty, etc)
Enhanced version has 22 sources
More timers, programmable counter array, ADC, more external interrupts, another serial port (UART) : Each interrupt has a specific place in code memory where program execution (interrupt service routine) begins.
External Interrupt 0: 0003h
Timer 0 overflow: 000Bh
External Interrupt 1: 0013h
Timer 1 overflow: 001Bh
Serial : 0023h
Timer 2 overflow(8052+) 002bh Interrupt Vectors Slide 66: Interrupt Enable Register Upon reset all Interrupts are disabled & do not respond to the Microcontroller
These interrupts must be enabled by software in order for the Microcontroller to respond to them.
This is done by an 8-bit register called Interrupt Enable Register (IE). Slide 67: EA : Global enable/disable.
--- : Undefined.
ET2 : Enable Timer 2 interrupt.
ES : Enable Serial port interrupt.
ET1 : Enable Timer 1 interrupt.
EX1 :Enable External 1 interrupt.
ET0 : Enable Timer 0 interrupt.
EX0 : Enable External 0 interrupt. Slide 68: Enabling and disabling an interrupt By bit operation
Recommended in the middle of program
SETB EA ;Enable All
SETB ET0 ;Enable Timer0 ovrf
SETB ET1 ;Enable Timer1 ovrf
SETB EX0 ;Enable INT0
SETB EX1 ;Enable INT1
SETB ES ;Enable Serial port
By Mov instruction
Recommended in the first of program
MOV IE, #10010110B SETB IE.7
SETB IE.2 SETB IE.4 Slide 69: What if two interrupt sources interrupt at the same time?
The interrupt with the highest PRIORITY gets serviced first.
All interrupts have a power on default priority order.
External interrupt 0 (INT0)
Timer interrupt0 (TF0)
External interrupt 1 (INT1)
Timer interrupt1 (TF1)
Serial communication (RI+TI)
Priority can also be set to “high” or “low” by IP reg. Interrupt Priorities Interrupt Priorities (IP) Register : Interrupt Priorities (IP) Register IP.7: reserved
IP.5: Timer 2 interrupt priority bit (8052 only)
IP.4: Serial port interrupt priority bit
IP.3: Timer 1 interrupt priority bit
IP.2: External interrupt 1 priority bit
IP.1: Timer 0 interrupt priority bit
IP.0: External interrupt 0 priority bit Interrupt Priorities Example : Interrupt Priorities Example MOV IP , #00000100B or SETB IP.2 gives priority order
MOV IP , #00001100B gives priority order
Serial Interrupt inside an interrupt : Interrupt inside an interrupt A high-priority interrupt can interrupt a low-priority interrupy
All interrupt are latched internally
Low-priority interrupt wait until 8051 has finished servicing the high-priority interrupt Slide 73: Applications of Microcontrollers Simple Interfacing Examples : Simple Interfacing Examples Seven segment Interfacing : Seven segment Interfacing Traffic light controller : Traffic light controller Closed loop control system-Temperature control example : Closed loop control system-Temperature control example Slide 87: Recent Wonders Recent Wonders contd ........ : Recent Wonders contd ........ Recent Wonders contd ........ : Recent Wonders contd ........ Books that have helped me to understand the Microcontrollers & embedded systems : Books that have helped me to understand the Microcontrollers & embedded systems Barr, Michael, Programming embedded sytems in C and C++ - OReilly Publ.
Raj Kamal, Embedded systems, TMG
Mazidi and Mazidi, The 8051 microcontroller and embedded sytems - Pearson education.
Peatman,J.B. Design with microcontrollers and microcomputers, McGraw Hil Slide 91: 5) Sewart. J.W. The 8051 Microcontroller Hardware, Software and Interfacing – Prentice Hall
6) Ayala Kenneth, The 8051 Microntroller – Architecture, Programming and Applications – Delmar Publ.
7) Ajay Deshmukh, Microcontrollers – TATA McGraw Hill
8) Rajkamal, Microcontrollers - Architecture, Programming – Pearson Publ.
9) Myke Predko, Programming the 8051 Microcontroller – McGraw Hill
10) Michael J. Pont, Embedded C - Addison Wesely Publ. Useful websites : Useful websites Slide 93: Useful websites contd… http://www.eg3.com
http://www.powersoftsystems.com Epilogue : Epilogue The woods are lovely, dark and deep, But I have promises to keep,And miles to go before I sleep,And miles to go before I sleep. ---- Robert Frost