SlideShare a Scribd company logo
1 of 617
Download to read offline
The 8051 Microcontroller and Embedded
                 Systems
          Using Assembly and C
                    Second Edition

               Muhammad Ali Mazidi
               Janice Gillispie Mazidi
                 Rolin D. McKinlay




CONTENTS

 Introduction to Computing
 The 8051 Microcontrollers
 8051 Assembly Language Programming
 Branch Instructions
 I/O Port Programming
 8051 Addressing Modes
 Arithmetic & Logic Instructions And Programs
 8051 Programming in C
 8051 Hardware Connection and Hex File
 8051 Timer/Counter Programming in Assembly and C
 8051 Serial Port Programming in Assembly and C
 Interrupts Programming in Assembly and C
 8051 Interfacing to External Memory
 8051 Real World Interfacing I: LCD,ADC AND
 SENSORS
 LCD and Keyboard Interfacing
 8051 Interfacing with 8255
INTRODUCTION TO
              COMPUTING

      The 8051 Microcontroller and Embedded
      Systems: Using Assembly and C
      Mazidi, Mazidi and McKinlay


                          Chung-Ping Young
                                     楊中平

Home Automation, Networking, and Entertainment Lab
Dept. of Computer Science and Information Engineering
National Cheng Kung University, TAIWAN
Numbering and coding systems
OUTLINES
              Digital primer
              Inside the computer




           Department of Computer Science and Information Engineering
   HANEL   National Cheng Kung University, TAIWAN                       2
Human beings use base 10 (decimal)
NUMBERING
AND CODING
                   arithmetic
 SYSTEMS               There are 10 distinct symbols, 0, 1, 2, …,
                       9
 Decimal and       Computers use base 2 (binary) system
Binary Number          There are only 0 and 1
   Systems
                       These two binary digits are commonly
                       referred to as bits




                Department of Computer Science and Information Engineering
      HANEL     National Cheng Kung University, TAIWAN                       3
Divide the decimal number by 2
NUMBERING
AND CODING
                  repeatedly
 SYSTEMS          Keep track of the remainders
                  Continue this process until the quotient
  Converting      becomes zero
from Decimal
                  Write the remainders in reverse order
   to Binary
                  to obtain the binary number
               Ex. Convert 2510 to binary
                        Quotient        Remainder
               25/2 =     12              1    LSB (least significant bit)
               12/2 =     6               0
               6/2 =      3               0
               3/2 =      1               1
               1/2 =      0               1    MSB (most significant bit)
               Therefore 2510 = 110012
               Department of Computer Science and Information Engineering
     HANEL     National Cheng Kung University, TAIWAN                       4
Know the weight of each bit in a binary
NUMBERING           number
AND CODING
                    Add them together to get its decimal
 SYSTEMS
                    equivalent
  Converting   Ex. Convert 110012 to decimal
from Binary to    Weight:      24     23     22             21       20
   Decimal        Digits:      1      1      0              0        1
                   Sum:           16 +    8+       0+       0+       1 = 2510

                    Use the concept of weight to convert a
                    decimal number to a binary directly
                 Ex. Convert 3910 to binary
                    32 + 0 + 0 + 4 + 2 + 1 = 39
                 Therefore, 3910 = 1001112
                Department of Computer Science and Information Engineering
       HANEL    National Cheng Kung University, TAIWAN                          5
Base 16, the
NUMBERING
AND CODING
                 hexadecimal system,               Decimal   Binary    Hex

 SYSTEMS         is used as a                      0          0000      0
                                                   1          0001      1
                 convenient                        2          0010      2
Hexadecimal      representation of                 3          0011      3
                                                   4          0100      4
  System         binary numbers                    5          0101      5
                     ex.                           6          0110      6
                                                   7          0111      7
                     It is much easier to          8          1000      8
                     represent a string of 0s      9          1001      9
                     and 1s such as                10         1010      A
                     100010010110 as its           11         1011      B
                     hexadecimal equivalent of     12         1100      C
                     896H                          13         1101      D
                                                   14         1110      E
                                                   15         1111      F

              Department of Computer Science and Information Engineering
     HANEL    National Cheng Kung University, TAIWAN                         6
To represent a binary number as its
 NUMBERING          equivalent hexadecimal number
 AND CODING
                        Start from the right and group 4 bits at a
  SYSTEMS
                        time, replacing each 4-bit binary number
                        with its hex equivalent
  Converting
between Binary Ex. Represent binary 100111110101 in hex
   and Hex                     1001 1111 0101
                             =       9        F       5

                    To convert from hex to binary
                        Each hex digit is replaced with its 4-bit
                        binary equivalent
                 Ex. Convert hex 29B to binary
                                    2        9        B
                             =     0010    1001     1011
                 Department of Computer Science and Information Engineering
       HANEL     National Cheng Kung University, TAIWAN                       7
Convert to binary first and then
NUMBERING
AND CODING
                  convert to hex
 SYSTEMS          Convert directly from decimal to hex
                  by repeated division, keeping track of
  Converting      the remainders
from Decimal
    to Hex     Ex. Convert 4510 to hex
                        32    16      8       4   2   1
                         1    0       1       1   0   1       32 + 8 + 4 + 1 = 45
                 4510 = 0010 11012 = 2D16
               Ex. Convert 62910 to hex
                        512 256 128 64 32 16 8 4 2 1
                         1        0       0       1   1   1     0 1 0 1
                 62910 = 512+64+32+16+4+1 = 0010 0111 01012 = 27516

               Department of Computer Science and Information Engineering
     HANEL     National Cheng Kung University, TAIWAN                           8
Convert from hex to binary and then to
NUMBERING
AND CODING
                 decimal
 SYSTEMS         Convert directly from hex to decimal
                 by summing the weight of all digits
 Converting
from Hex to    Ex. 6B216 = 0110 1011 00102
                1024 512 256 128 64 32 16 8 4 2 1
  Decimal
                   1     1     0      1    0    1    1   0   0 1 0
                1024 + 512 + 128 + 32 + 16 + 2 = 171410




              Department of Computer Science and Information Engineering
     HANEL    National Cheng Kung University, TAIWAN                       9
Adding the digits together from the
NUMBERING
AND CODING
                     least significant digits
 SYSTEMS                 If the result is less than 16, write that digit
                         as the sum for that position
Addition of Hex          If it is greater than 16, subtract 16 from it
  Numbers                to get the digit and carry 1 to the next
                         digit
                  Ex. Perform hex addition: 23D9 + 94BE

                    23D9     LSD: 9   +   14 = 23         23 – 16 = 7 w/ carry
                  + 94BE          1   +   13 + 11 = 25    25 – 16 = 9 w/ carry
                    B897          1   +   3+4=8
                             MSD: 2   +   9=B



                  Department of Computer Science and Information Engineering
       HANEL      National Cheng Kung University, TAIWAN                       10
If the second digit is greater than the
NUMBERING
AND CODING
                    first, borrow 16 from the preceding
 SYSTEMS            digit
                 Ex. Perform hex subtraction: 59F – 2B8
Subtraction of
Hex Numbers        59F      LSD: 15 – 8 = 7
                 – 2B8           9 + 16 – 11 = 14 = E16
                   2E7           5–1–2=2




                 Department of Computer Science and Information Engineering
      HANEL      National Cheng Kung University, TAIWAN                       11
The ASCII (pronounced “ask-E”) code
NUMBERING        assigns binary patterns for
AND CODING           Numbers 0 to 9
 SYSTEMS             All the letters of English alphabet,
                     uppercase and lowercase
 ASCII Code          Many control codes and punctuation
                     marks
                 The ASCII system uses 7 bits to
                 represent each code
                                      Hex     Symbol      Hex     Symbol
               Selected ASCII codes    41         A        61        a
                                       42         B        62        b
                                       43         C        63        c
                                       44        D         64        d
                                       ...       ...       ...       …
                                       59         Y        79        y
                                       5A         Z        7A        z
              Department of Computer Science and Information Engineering
     HANEL    National Cheng Kung University, TAIWAN                       12
Two voltage levels can be represented
 DIGITAL
 PRIMER
                  as the two digits 0 and 1
                  Signals in digital electronics have two
Binary Logic      distinct voltage levels with built-in
                  tolerances for variations in the voltage
                  A valid digital signal should be within
                  either of the two shaded areas
                                5
                                4    Logic 1
                                3
                                2
                                1
                                     Logic 0
                                0

               Department of Computer Science and Information Engineering
     HANEL     National Cheng Kung University, TAIWAN                       13
AND gate
 DIGITAL
 PRIMER

Logic Gates

               Computer Science Illuminated, Dale and Lewis




                    OR gate




               Computer Science Illuminated, Dale and Lewis




              Department of Computer Science and Information Engineering
     HANEL    National Cheng Kung University, TAIWAN                       14
Tri-state buffer
 DIGITAL
 PRIMER             Inverter

Logic Gates
  (cont’)

              Computer Science Illuminated, Dale and Lewis




                    XOR gate




              Computer Science Illuminated, Dale and Lewis




              Department of Computer Science and Information Engineering
     HANEL    National Cheng Kung University, TAIWAN                       15
NAND gate
 DIGITAL
 PRIMER

Logic Gates
  (cont’)
               Computer Science Illuminated, Dale and Lewis




                    NOR gate




              Computer Science Illuminated, Dale and Lewis




              Department of Computer Science and Information Engineering
     HANEL    National Cheng Kung University, TAIWAN                       16
DIGITAL
 PRIMER                                  Half adder


Logic Design
Using Gates


                                         Full adder




                                                                 Digital Design, Mano




               Department of Computer Science and Information Engineering
     HANEL     National Cheng Kung University, TAIWAN                                   17
DIGITAL
 PRIMER
                                         4-bit adder
Logic Design
Using Gates
   (cont’)


                                                                    Digital Design, Mano




               Department of Computer Science and Information Engineering
      HANEL    National Cheng Kung University, TAIWAN                                 18
Decoders
 DIGITAL
 PRIMER               Decoders are widely used for address
                      decoding in computer design
Logic Design                      Address Decoders
Using Gates
   (cont’)



                Address decoder for 9 (10012)   Address decoder for 5 (01012)
                The output will be 1 if and     The output will be 1 if and
                only if the input is 10012      only if the input is 01012




               Department of Computer Science and Information Engineering
      HANEL    National Cheng Kung University, TAIWAN                           19
Flip-flops
 DIGITAL
 PRIMER                         Flip-flops are frequently used to store data

Logic Design
Using Gates
   (cont’)
               Digital Design, Mano




               Department of Computer Science and Information Engineering
      HANEL    National Cheng Kung University, TAIWAN                       20
The unit of data size
INSIDE THE
COMPUTER             Bit : a binary digit that can have the value
                     0 or 1
 Important           Byte : 8 bits
Terminology          Nibble : half of a bye, or 4 bits
                     Word : two bytes, or 16 bits
                 The terms used to describe amounts of
                 memory in IBM PCs and compatibles
                     Kilobyte (K): 210 bytes
                     Megabyte (M) : 220 bytes, over 1 million
                     Gigabyte (G) : 230 bytes, over 1 billion
                     Terabyte (T) : 240 bytes, over 1 trillion

              Department of Computer Science and Information Engineering
     HANEL    National Cheng Kung University, TAIWAN                       21
CPU (Central Processing Unit)
 INSIDE THE              Execute information stored in memory
 COMPUTER            I/O (Input/output) devices
                         Provide a means of communicating with
   Internal              CPU
Organization of      Memory
  Computers              RAM (Random Access Memory) –
                         temporary storage of programs that
                         computer is running
                             The data is lost when computer is off
                         ROM (Read Only Memory) – contains
                         programs and information essential to
                         operation of the computer
                             The information cannot be changed by use,
                             and is not lost when power is off
                               – It is called nonvolatile memory


                  Department of Computer Science and Information Engineering
       HANEL      National Cheng Kung University, TAIWAN                       22
INSIDE THE
 COMPUTER

   Internal                           Address bus
Organization of
  Computers                                   Memory
                                                                Peripherals
    (cont’)                CPU                                   (monitor,
                                           (RAM, ROM)
                                                                printer, etc.)

                                      Data bus




                  Department of Computer Science and Information Engineering
       HANEL      National Cheng Kung University, TAIWAN                         23
The CPU is connected to memory and
 INSIDE THE
 COMPUTER
                     I/O through strips of wire called a bus
                           Carries information from place to place
   Internal                  Address bus
Organization of              Data bus
                             Control bus
  Computers
    (cont’)
                                     Address bus


                            RAM     ROM     Printer   Disk    Monitor   Keyboard
                   CPU

                                       Data bus
                   Read/
                   Write
                                       Control bus

                  Department of Computer Science and Information Engineering
       HANEL      National Cheng Kung University, TAIWAN                       24
Address bus
 INSIDE THE
                         For a device (memory or I/O) to be
 COMPUTER                recognized by the CPU, it must be
                         assigned an address
   Internal                  The address assigned to a given device must
Organization of              be unique
  Computers                  The CPU puts the address on the address bus,
    (cont’)                  and the decoding circuitry finds the device
                     Data bus
                         The CPU either gets data from the device
                         or sends data to it
                     Control bus
                         Provides read or write signals to the
                         device to indicate if the CPU is asking for
                         information or sending it information

                  Department of Computer Science and Information Engineering
       HANEL      National Cheng Kung University, TAIWAN                       25
The more data buses available, the
INSIDE THE
COMPUTER
                better the CPU
                    Think of data buses as highway lanes
More about      More data buses mean a more
 Data Bus       expensive CPU and computer
                    The average size of data buses in CPUs
                    varies between 8 and 64
                Data buses are bidirectional
                    To receive or send data
                The processing power of a computer is
                related to the size of its buses


             Department of Computer Science and Information Engineering
    HANEL    National Cheng Kung University, TAIWAN                       26
The more address buses available, the
INSIDE THE       larger the number of devices that can
COMPUTER         be addressed
More about       The number of locations with which a
Address Bus      CPU can communicate is always equal
                 to 2x, where x is the address lines,
                 regardless of the size of the data bus
                     ex. a CPU with 24 address lines and 16
                     data lines can provide a total of 224 or 16M
                     bytes of addressable memory
                     Each location can have a maximum of 1
                     byte of data, since all general-purpose
                     CPUs are byte addressable
                 The address bus is unidirectional

              Department of Computer Science and Information Engineering
     HANEL    National Cheng Kung University, TAIWAN                       27
For the CPU to process information,
 INSIDE THE         the data must be stored in RAM or
 COMPUTER           ROM, which are referred to as primary
                    memory
CPU’s Relation      ROM provides information that is fixed
 to RAM and         and permanent
     ROM                Tables or initialization program
                    RAM stores information that is not
                    permanent and can change with time
                        Various versions of OS and application
                        packages
                        CPU gets information to be processed
                            first form RAM (or ROM)
                            if it is not there, then seeks it from a mass
                            storage device, called secondary memory, and
                            transfers the information to RAM

                 Department of Computer Science and Information Engineering
      HANEL      National Cheng Kung University, TAIWAN                       28
Registers
INSIDE THE
COMPUTER             The CPU uses registers to store
                     information temporarily
Inside CPUs              Values to be processed
                         Address of value to be fetched from memory
                     In general, the more and bigger the
                     registers, the better the CPU
                         Registers can be 8-, 16-, 32-, or 64-bit
                         The disadvantage of more and bigger registers
                         is the increased cost of such a CPU




              Department of Computer Science and Information Engineering
     HANEL    National Cheng Kung University, TAIWAN                       29
Address Bus
INSIDE THE
COMPUTER                                           Program Counter

Inside CPUs
  (cont’)
                                                   Instruction Register




                                                                           Control Bus Data Bus
               Flags           ALU
                                                   Instruction decoder,
                                                   timing, and control


                                     Internal          Register A
                                     buses
                                                       Register B
                                                       Register C
                                                       Register D

              Department of Computer Science and Information Engineering
     HANEL    National Cheng Kung University, TAIWAN                                         30
ALU (arithmetic/logic unit)
INSIDE THE
                     Performs arithmetic functions such as add,
COMPUTER             subtract, multiply, and divide, and logic
                     functions such as AND, OR, and NOT
Inside CPUs
  (cont’)
                 Program counter
                     Points to the address of the next
                     instruction to be executed
                         As each instruction is executed, the program
                         counter is incremented to point to the address
                         of the next instruction to be executed
                 Instruction decoder
                     Interprets the instruction fetched into the
                     CPU
                         A CPU capable of understanding more
                         instructions requires more transistors to design

              Department of Computer Science and Information Engineering
     HANEL    National Cheng Kung University, TAIWAN                        31
Ex. A CPU has registers A, B, C, and D and it has an 8-bit
INSIDE THE   data bus and a 16-bit address bus. The CPU can access
COMPUTER     memory from addresses 0000 to FFFFH
             Assume that the code for the CPU to move a value to
 Internal    register A is B0H and the code for adding a value to
Working of   register A is 04H
Computers    The action to be performed by the CPU is to put 21H into
             register A, and then add to register A values 42H and 12H

             ...




             Department of Computer Science and Information Engineering
    HANEL    National Cheng Kung University, TAIWAN                       32
Ex. (cont’)
INSIDE THE   Action                              Code              Data
COMPUTER     Move value 21H into reg. A          B0H               21H
             Add value 42H to reg. A             04H               42H
 Internal    Add value 12H to reg. A             04H               12H
Working of
             Mem. addr.    Contents of memory address
Computers    1400          (B0) code for moving a value to register A
  (cont’)    1401          (21) value to be moved
             1402          (04) code for adding a value to register A
             1403          (42) value to be added
             1404          (04) code for adding a value to register A
             1405          (12) value to be added
             1406          (F4) code for halt

             ...



             Department of Computer Science and Information Engineering
     HANEL   National Cheng Kung University, TAIWAN                       33
Ex. (cont’)
INSIDE THE   The actions performed by CPU are as follows:
COMPUTER     1. The program counter is set to the value 1400H,
                 indicating the address of the first instruction code to
 Internal        be executed
Working of   2.
Computers             The CPU puts 1400H on address bus and sends it
  (cont’)             out
                          The memory circuitry finds the location
                      The CPU activates the READ signal, indicating to
                      memory that it wants the byte at location 1400H
   以動畫表示                  This causes the contents of memory location
                          1400H, which is B0, to be put on the data bus and
                          brought into the CPU
             ...


             Department of Computer Science and Information Engineering
     HANEL   National Cheng Kung University, TAIWAN                        34
Ex. (cont’)
INSIDE THE   3.
COMPUTER              The CPU decodes the instruction B0
                      The CPU commands its controller circuitry to bring
 Internal             into register A of the CPU the byte in the next
Working of            memory location
Computers                  The value 21H goes into register A
  (cont’)             The program counter points to the address of the
                      next instruction to be executed, which is 1402H
                           Address 1402 is sent out on the address bus to
                           fetch the next instruction

             ...




             Department of Computer Science and Information Engineering
     HANEL   National Cheng Kung University, TAIWAN                         35
Ex. (cont’)
INSIDE THE   4.
COMPUTER              From memory location 1402H it fetches code 04H
                      After decoding, the CPU knows that it must add to
 Internal             the contents of register A the byte sitting at the
Working of            next address (1403)
Computers             After the CPU brings the value (42H), it provides
  (cont’)             the contents of register A along with this value to
                      the ALU to perform the addition
                           It then takes the result of the addition from the
                           ALU’s output and puts it in register A
                           The program counter becomes 1404, the address
                           of the next instruction

             ...



             Department of Computer Science and Information Engineering
     HANEL   National Cheng Kung University, TAIWAN                            36
Ex. (cont’)
INSIDE THE   5.
COMPUTER              Address 1404H is put on the address bus and the
                      code is fetched into the CPU, decoded, and
 Internal             executed
Working of                 This code is again adding a value to register A
Computers                  The program counter is updated to 1406H
  (cont’)    6.
                      The contents of address 1406 are fetched in and
                      executed
                      This HALT instruction tells the CPU to stop
                      incrementing the program counter and asking for
                      the next instruction




             Department of Computer Science and Information Engineering
     HANEL   National Cheng Kung University, TAIWAN                          37
8051 MICROCONTROLLERS


      The 8051 Microcontroller and Embedded
      Systems: Using Assembly and C
      Mazidi, Mazidi and McKinlay


                          Chung-Ping Young
                                     楊中平

Home Automation, Networking, and Entertainment Lab
Dept. of Computer Science and Information Engineering
National Cheng Kung University, TAIWAN
Microcontrollers and embedded
OUTLINES
              processors
              Overview of the 8051 family




           Department of Computer Science and Information Engineering
   HANEL   National Cheng Kung University, TAIWAN                       2
General-purpose microprocessors
  MICRO-
CONTROLLERS
                     contains
    AND                  No RAM
 EMBEDDED                No ROM
PROCESSORS               No I/O ports

Microcontroller
                     Microcontroller has
 vs. General-            CPU (microprocessor)
   Purpose               RAM
Microprocessor           ROM
                         I/O ports
                         Timer
                         ADC and other peripherals

                  Department of Computer Science and Information Engineering
       HANEL      National Cheng Kung University, TAIWAN                       3
Data bus
  MICRO-                  General-
                          purpose
CONTROLLERS               Micro-
                          Processor                           I/O             Serial
    AND                               RAM           ROM
                                                              Port
                                                                      Timer   COM
                                                                               Port
 EMBEDDED
PROCESSORS                 CPU
                                          Address bus

Microcontroller




                                                                                           For Evaluation Only.
                                                                                           Copyright(C) by Foxit Software Company,2005-2008
                                                                                           Edited by Foxit Reader
 vs. General-
   Purpose                  Microcontroller
Microprocessor                            CPU         RAM        ROM
    (cont’)

                                                                 Serial
                                              I/O     Timer      COM
                                                                  Port


                  Department of Computer Science and Information Engineering
       HANEL      National Cheng Kung University, TAIWAN                               4
General-purpose microprocessors
  MICRO-
                         Must add RAM, ROM, I/O ports, and
CONTROLLERS              timers externally to make them functional
    AND                  Make the system bulkier and much more
 EMBEDDED                expensive
PROCESSORS               Have the advantage of versatility on the
                         amount of RAM, ROM, and I/O ports
Microcontroller      Microcontroller
 vs. General-            The fixed amount of on-chip ROM, RAM,
   Purpose               and number of I/O ports makes them ideal
Microprocessor           for many applications in which cost and
    (cont’)              space are critical
                         In many applications, the space it takes,
                         the power it consumes, and the price per
                         unit are much more critical considerations
                         than the computing power

                  Department of Computer Science and Information Engineering
       HANEL      National Cheng Kung University, TAIWAN                       5
An embedded product uses a
  MICRO-              microprocessor (or microcontroller) to
CONTROLLERS           do one task and one task only
    AND
                          There is only one application software that
 EMBEDDED
                          is typically burned into ROM
PROCESSORS
                      A PC, in contrast with the embedded
Microcontrollers      system, can be used for any number of
for Embedded          applications
    Systems               It has RAM memory and an operating
                          system that loads a variety of applications
                          into RAM and lets the CPU run them
                          A PC contains or is connected to various
                          embedded products
                              Each one peripheral has a microcontroller inside
                              it that performs only one task

                   Department of Computer Science and Information Engineering
       HANEL       National Cheng Kung University, TAIWAN                       6
Home
  MICRO-                  Appliances, intercom, telephones, security systems,
CONTROLLERS               garage door openers, answering machines, fax
    AND                   machines, home computers, TVs, cable TV tuner,
                          VCR, camcorder, remote controls, video games,
 EMBEDDED                 cellular phones, musical instruments, sewing
PROCESSORS                machines, lighting control, paging, camera, pinball
                          machines, toys, exercise equipment
Microcontrollers      Office
for Embedded              Telephones, computers, security systems, fax
    Systems               machines, microwave, copier, laser printer, color
                          printer, paging
     (cont’)
                      Auto
                          Trip computer, engine control, air bag, ABS,
                          instrumentation, security system, transmission
                          control, entertainment, climate control, cellular
                          phone, keyless entry

                   Department of Computer Science and Information Engineering
        HANEL      National Cheng Kung University, TAIWAN                       7
Many manufactures of general-purpose
  MICRO-           microprocessors have targeted their
CONTROLLERS        microprocessor for the high end of the
    AND
                   embedded market
 EMBEDDED
                       There are times that a microcontroller is
PROCESSORS
                       inadequate for the task
   x86 PC          When a company targets a general-
 Embedded          purpose microprocessor for the
 Applications      embedded market, it optimizes the
                   processor used for embedded systems
                   Very often the terms embedded
                   processor and microcontroller are used
                   interchangeably

                Department of Computer Science and Information Engineering
      HANEL     National Cheng Kung University, TAIWAN                       8
One of the most critical needs of an
  MICRO-           embedded system is to decrease
CONTROLLERS        power consumption and space
    AND
 EMBEDDED          In high-performance embedded
PROCESSORS         processors, the trend is to integrate
                   more functions on the CPU chip and let
   x86 PC          designer decide which features he/she
 Embedded          wants to use
 Applications      In many cases using x86 PCs for the
    (cont’)
                   high-end embedded applications
                       Saves money and shortens development
                       time
                           A vast library of software already written
                           Windows is a widely used and well understood
                           platform
                Department of Computer Science and Information Engineering
       HANEL    National Cheng Kung University, TAIWAN                       9
8-bit microcontrollers
  MICRO-
CONTROLLERS              Motorola’s 6811
    AND                  Intel’s 8051
 EMBEDDED                Zilog’s Z8
PROCESSORS               Microchip’s PIC

  Choosing a         There are also 16-bit and 32-bit
Microcontroller      microcontrollers made by various chip
                     makers




                  Department of Computer Science and Information Engineering
       HANEL      National Cheng Kung University, TAIWAN                       10
Meeting the computing needs of the
  MICRO-
CONTROLLERS
                     task at hand efficiently and cost
    AND              effectively
 EMBEDDED                Speed
PROCESSORS               Packaging
                         Power consumption
  Criteria for
                         The amount of RAM and ROM on chip
 Choosing a
Microcontroller          The number of I/O pins and the timer on
                         chip
                         How easy to upgrade to higher-
                         performance or lower power-consumption
                         versions
                         Cost per unit

                  Department of Computer Science and Information Engineering
       HANEL      National Cheng Kung University, TAIWAN                       11
Availability of software development
  MICRO-             tools, such as compilers, assemblers,
CONTROLLERS          and debuggers
    AND
 EMBEDDED            Wide availability and reliable sources
PROCESSORS           of the microcontroller
                         The 8051 family has the largest number of
  Criteria for           diversified (multiple source) suppliers
                             Intel (original)




                                                                                    For Evaluation Only.
                                                                                    Copyright(C) by Foxit Software Company,2005-2008
                                                                                    Edited by Foxit Reader
 Choosing a
                             Atmel
Microcontroller
    (cont’)                  Philips/Signetics
                             AMD
                             Infineon (formerly Siemens)
                             Matra
                             Dallas Semiconductor/Maxim


                  Department of Computer Science and Information Engineering
       HANEL      National Cheng Kung University, TAIWAN                       12
Intel introduced 8051, referred as MCS-
OVERVIEW OF          51, in 1981
8051 FAMILY              The 8051 is an 8-bit processor
                             The CPU can work on only 8 bits of data at a
                             time
     8051
Microcontroller          The 8051 had
                             128 bytes of RAM
                             4K bytes of on-chip ROM
                             Two timers




                                                                                    For Evaluation Only.
                                                                                    Copyright(C) by Foxit Software Company,2005-2008
                                                                                    Edited by Foxit Reader
                             One serial port
                             Four I/O ports, each 8 bits wide
                             6 interrupt sources
                     The 8051 became widely popular after
                     allowing other manufactures to make
                     and market any flavor of the 8051, but
                     remaining code-compatible
                  Department of Computer Science and Information Engineering
       HANEL      National Cheng Kung University, TAIWAN                       13
External
                   Interrupts
OVERVIEW OF
8051 FAMILY




                                                                               Counter Inputs
                                   On-chip
                  Interrupt         ROM          On-chip          Etc.
                   Control                                      Timer 0
     8051                          for code       RAM           Timer 1
Microcontroller
    (cont’)
                     CPU


                     OSC            Bus             I/O          Serial
                                   Control         Ports          Port

                                                 P0 P1 P2 P3    TXD   RXD

                                              Address/Data

                  Department of Computer Science and Information Engineering
       HANEL      National Cheng Kung University, TAIWAN                           14
The 8051 is a subset of the 8052
OVERVIEW OF
8051 FAMILY      The 8031 is a ROM-less 8051
                     Add external ROM to it
8051 Family          You lose two ports, and leave only 2 ports
                     for I/O operations

                      Feature                     8051 8052 8031
                      ROM (on-chip program
                                                     4K       8K      0K
                      space in bytes)
                      RAM (bytes)                   128      256     128
                      Timers                           2       3           2
                      I/O pins                       32       32      32
                      Serial port                      1       1           1
                      Interrupt sources                6       8           6

              Department of Computer Science and Information Engineering
     HANEL    National Cheng Kung University, TAIWAN                           15
8751 microcontroller
OVERVIEW OF
8051 FAMILY               UV-EPROM
                              PROM burner
 Various 8051                 UV-EPROM eraser takes 20 min to erase
Microcontrollers      AT89C51 from Atmel Corporation
                          Flash (erase before write)
                              ROM burner that supports flash




                                                                                     For Evaluation Only.
                                                                                     Copyright(C) by Foxit Software Company,2005-2008
                                                                                     Edited by Foxit Reader
                              A separate eraser is not needed
                      DS89C4x0 from Dallas Semiconductor,
                      now part of Maxim Corp.
                          Flash
                              Comes with on-chip loader, loading program to
                              on-chip flash via PC COM port

                   Department of Computer Science and Information Engineering
       HANEL       National Cheng Kung University, TAIWAN                       16
DS5000 from Dallas Semiconductor
OVERVIEW OF
8051 FAMILY               NV-RAM (changed one byte at a time),
                          RTC (real-time clock)
 Various 8051                 Also comes with on-chip loader
Microcontrollers      OTP (one-time-programmable) version
     (cont’)          of 8051
                      8051 family from Philips
                          ADC, DAC, extended I/O, and both OTP
                          and flash




                   Department of Computer Science and Information Engineering
        HANEL      National Cheng Kung University, TAIWAN                       17
8051 ASSEMBLY
               LANGUAGE
             PROGRAMMING

      The 8051 Microcontroller and Embedded
      Systems: Using Assembly and C
      Mazidi, Mazidi and McKinlay


                          Chung-Ping Young
                                     楊中平

Home Automation, Networking, and Entertainment Lab
Dept. of Computer Science and Information Engineering
National Cheng Kung University, TAIWAN
Register are used to store information
INSIDE THE
   8051
                temporarily, while the information
                could be
 Registers          a byte of data to be processed, or
                    an address pointing to the data to be
                    fetched
                The vast majority of 8051 register are
                8-bit registers
                    There is only one data type, 8 bits




             Department of Computer Science and Information Engineering
     HANEL   National Cheng Kung University, TAIWAN                       2
The 8 bits of a register are shown from
INSIDE THE
   8051
                MSB D7 to the LSB D0
                    With an 8-bit data type, any data larger
 Registers          than 8 bits must be broken into 8-bit
  (cont’)           chunks before it is processed
                                  most                 least
                              significant bit     significant bit



                     D7    D6      D5      D4     D3      D2        D1   D0

                                        8 bit Registers




             Department of Computer Science and Information Engineering
     HANEL   National Cheng Kung University, TAIWAN                           3
The most widely used registers
INSIDE THE
   8051             A (Accumulator)
                        For all arithmetic and logic instructions
 Registers          B, R0, R1, R2, R3, R4, R5, R6, R7
  (cont’)           DPTR (data pointer), and PC (program
                    counter)
                         A




                                                                              For Evaluation Only.
                                                                              Copyright(C) by Foxit Software Company,2005-2008
                                                                              Edited by Foxit Reader
                         B
                         R0              DPTR        DPH            DPL
                         R1
                         R2
                                          PC       PC (Program counter)
                         R3
                         R4
                         R5
                         R6
                         R7

             Department of Computer Science and Information Engineering
     HANEL   National Cheng Kung University, TAIWAN                       4
MOV destination, source                 ;copy source to dest.
INSIDE THE           The instruction tells the CPU to move (in reality,
   8051              COPY) the source operand to the destination
                     operand
   MOV                             “#” signifies that it is a value
Instruction
                  MOV   A,#55H       ;load value 55H into reg. A
                  MOV   R0,A         ;copy contents of A into R0
                                     ;(now A=R0=55H)
                  MOV   R1,A         ;copy contents of A into R1
                                     ;(now A=R0=R1=55H)
                  MOV   R2,A         ;copy contents of A into R2
                                     ;(now A=R0=R1=R2=55H)
                  MOV   R3,#95H      ;load value 95H into R3
                                     ;(now R3=95H)
                  MOV   A,R3         ;copy contents of R3 into A
                                     ;now A=R3=95H


              Department of Computer Science and Information Engineering
     HANEL    National Cheng Kung University, TAIWAN                            5
Notes on programming
INSIDE THE            Value (proceeded with #) can be loaded
   8051               directly to registers A, B, or R0 – R7
                          MOV A, #23H
   MOV                    MOV R5, #0F9H          If it’s not preceded with #,
Instruction   Add a 0 to indicate that
                                                 it means to load from a
                                                 memory location
  (cont’)     F is a hex number and
              not a letter

                      If values 0 to F moved into an 8-bit
                      register, the rest of the bits are assumed
                      all zeros
                          “MOV A, #5”, the result will be A=05; i.e., A
                          = 00000101 in binary
                      Moving a value that is too large into a
                      register will cause an error
                          MOV      A, #7F2H ; ILLEGAL: 7F2H>8 bits (FFH)
              Department of Computer Science and Information Engineering
     HANEL    National Cheng Kung University, TAIWAN                            6
ADD A, source       ;ADD the source operand
INSIDE THE                                  ;to the accumulator
   8051                  The ADD instruction tells the CPU to add the source
                         byte to register A and put the result in register A
   ADD                   Source operand can be either a register or
                         immediate data, but the destination must always
Instruction              be register A
                            “ADD R4, A” and “ADD R2, #12H” are invalid
                            since A must be the destination of any arithmetic
                            operation
                         MOV A, #25H      ;load 25H into A
                         MOV R2, #34H     ;load 34H into R2
                         ADD A, R2 ;add R2 to Accumulator
  There are always                        ;(A = A + R2)
  many ways to write
  the same program,      MOV A, #25H      ;load one operand
  depending on the                 ;into A (A=25H)
  registers used         ADD A, #34H      ;add the second
                                          ;operand 34H to A
                 Department of Computer Science and Information Engineering
     HANEL       National Cheng Kung University, TAIWAN                         7
In the early days of the computer,
    8051           programmers coded in machine language,
  ASSEMBLY         consisting of 0s and 1s
PROGRAMMING            Tedious, slow and prone to error
                   Assembly languages, which provided
 Structure of
                   mnemonics for the machine code instructions,
  Assembly
                   plus other features, were developed
  Language
                       An Assembly language program consist of a series
                       of lines of Assembly language instructions
                   Assembly language is referred to as a low-
                   level language
                       It deals directly with the internal structure of the
                       CPU




                Department of Computer Science and Information Engineering
      HANEL     National Cheng Kung University, TAIWAN                        8
Assembly language instruction includes
    8051               a mnemonic (abbreviation easy to remember)
  ASSEMBLY                 the commands to the CPU, telling it what those
PROGRAMMING                to do with those items
                       optionally followed by one or two operands
 Structure of              the data items being manipulated
  Assembly
                   A given Assembly language program is
  Language
                   a series of statements, or lines




                                                                                 For Evaluation Only.
                                                                                 Copyright(C) by Foxit Software Company,2005-2008
                                                                                 Edited by Foxit Reader
                       Assembly language instructions
                           Tell the CPU what to do
                       Directives (or pseudo-instructions)
                           Give directions to the assembler




                Department of Computer Science and Information Engineering
      HANEL     National Cheng Kung University, TAIWAN                       9
An Assembly language instruction
    8051
  ASSEMBLY            consists of four fields:
PROGRAMMING          [label:] Mnemonic [operands] [;comment]

                      ORG    0H             ;start(origin) at location
 Structure of         0
                      MOV    R5, #25H         ;load 25H into R5
  Assembly            MOV    R7, #34H         ;load 34H into R7 Directives do not
  Language            MOV    A, #0            ;load 0 into generate any machine
                                                                 A
                      ADD    A, R5            ;add contents ofand are used
                                                                code R5 to A
                                              ;now A = A + only by the assembler
                                                                 R5
       Mnemonics    ADD A, R7                 ;add contents of R7 to A
        produce                               ;now A = A + R7
        opcodes     ADD A, #12H               ;add to A value 12H
                                              ;now A = A + 12H
                 HERE: SJMP HERE              ;stay in this loop
                    END                       ;end of asm may be at the end of a
                                                  Comments source file
                       The label field allows     line or on a line by themselves
                       the program to refer to a The assembler ignores comments
                       line of code by name
                  Department of Computer Science and Information Engineering
      HANEL       National Cheng Kung University, TAIWAN                            10
The step of Assembly language
 ASSEMBLING
AND RUNNING
                   program are outlines as follows:
   AN 8051        1)   First we use an editor to type a program,
  PROGRAM              many excellent editors or word
                       processors are available that can be used
                       to create and/or edit the program
                          Notice that the editor must be able to produce
                          an ASCII file
                          For many assemblers, the file names follow
                          the usual DOS conventions, but the source file
                          has the extension “asm“ or “src”, depending
                          on which assembly you are using




              Department of Computer Science and Information Engineering
     HANEL    National Cheng Kung University, TAIWAN                       11
2)   The “asm” source file containing the
 ASSEMBLING            program code created in step 1 is fed to
AND RUNNING            an 8051 assembler
   AN 8051                The assembler converts the instructions into
  PROGRAM                 machine code
   (cont’)                The assembler will produce an object file and
                          a list file
                          The extension for the object file is “obj” while
                          the extension for the list file is “lst”
                  3)   Assembler require a third step called
                       linking
                          The linker program takes one or more object
                          code files and produce an absolute object file
                          with the extension “abs”
                          This abs file is used by 8051 trainers that
                          have a monitor program



              Department of Computer Science and Information Engineering
      HANEL   National Cheng Kung University, TAIWAN                         12
4)   Next the “abs” file is fed into a program
 ASSEMBLING            called “OH” (object to hex converter)
AND RUNNING            which creates a file with extension “hex”
   AN 8051             that is ready to burn into ROM
  PROGRAM                 This program comes with all 8051 assemblers
   (cont’)
                          Recent Windows-based assemblers combine
                          step 2 through 4 into one step




              Department of Computer Science and Information Engineering
      HANEL   National Cheng Kung University, TAIWAN                       13
EDITOR
                                            PROGRAM
 ASSEMBLING                                          myfile.asm
AND RUNNING
   AN 8051                                 ASSEMBLER
  PROGRAM                                   PROGRAM
                           myfile.lst
                                                                  Other obj files
Steps to Create                         myfile.obj

  a Program                                  LINKER
                                            PROGRAM


                                               myfile.abs


                                                OH
                                             PROGRAM

                                              myfile.hex
                  Department of Computer Science and Information Engineering
       HANEL      National Cheng Kung University, TAIWAN                            14
The lst (list) file, which is optional, is
 ASSEMBLING
AND RUNNING
                  very useful to the programmer
   AN 8051           It lists all the opcodes and addresses as
  PROGRAM            well as errors that the assembler detected
                     The programmer uses the lst file to find
   lst File          the syntax errors or debug
              1   0000            ORG     0H       ;start (origin) at 0
              2   0000   7D25     MOV     R5,#25H  ;load 25H into R5
              3   0002   7F34     MOV     R7,#34H  ;load 34H into R7
              4   0004   7400     MOV     A,#0     ;load 0 into A
              5   0006   2D       ADD     A,R5     ;add contents of R5 to A
                                                   ;now A = A + R5
              6 0007     2F       ADD     A,R7     ;add contents of R7 to A
                                                   ;now A = A + R7
              7 0008     2412     ADD     A,#12H   ;add to A value 12H
                                                   ;now A = A + 12H
              8 000A     80EF HERE:       SJMP HERE;stay in this loop
              9 000C            END                ;end of asm source file
                                address
              Department of Computer Science and Information Engineering
      HANEL   National Cheng Kung University, TAIWAN                          15
The program counter points to the
  PROGRAM
COUNTER AND
                 address of the next instruction to be
 ROM SPACE       executed
                     As the CPU fetches the opcode from the
  Program            program ROM, the program counter is
  Counter            increasing to point to the next instruction
                 The program counter is 16 bits wide
                     This means that it can access program
                     addresses 0000 to FFFFH, a total of 64K
                     bytes of code




              Department of Computer Science and Information Engineering
     HANEL    National Cheng Kung University, TAIWAN                       16
All 8051 members start at memory
  PROGRAM
COUNTER AND
                 address 0000 when they’re powered
 ROM SPACE       up
                     Program Counter has the value of 0000
  Power up           The first opcode is burned into ROM
                     address 0000H, since this is where the
                     8051 looks for the first instruction when it




                                                                                For Evaluation Only.
                                                                                Copyright(C) by Foxit Software Company,2005-2008
                                                                                Edited by Foxit Reader
                     is booted
                     We achieve this by the ORG statement in
                     the source program




              Department of Computer Science and Information Engineering
     HANEL    National Cheng Kung University, TAIWAN                       17
Examine the list file and how the code
  PROGRAM              is placed in ROM
COUNTER AND        1   0000           ORG   0H          ;start (origin) at 0

 ROM SPACE
                   2   0000    7D25   MOV   R5,#25H     ;load 25H into R5
                   3   0002    7F34   MOV   R7,#34H     ;load 34H into R7
                   4   0004    7400   MOV   A,#0        ;load 0 into A
                   5   0006    2D     ADD   A,R5        ;add contents of R5 to A
Placing Code in                                         ;now A = A + R5
                   6 0007      2F     ADD A,R7          ;add contents of R7 to A
      ROM                                               ;now A = A + R7
                   7 0008      2412   ADD A,#12H        ;add to A value 12H
                                                        ;now A = A + 12H
                   8 000A      80EF   HERE: SJMP HERE   ;stay in this loop
                   9 000C             END               ;end of asm source file

                        ROM Address         Machine Language   Assembly Language
                        0000                7D25               MOV R5, #25H
                        0002                7F34               MOV R7, #34H
                        0004                7400               MOV A, #0
                        0006                2D                 ADD A, R5
                        0007                2F                 ADD A, R7
                        0008                2412               ADD A, #12H
                        000A                80EF               HERE: SJMP HERE

                  Department of Computer Science and Information Engineering
       HANEL      National Cheng Kung University, TAIWAN                           18
After the program is burned into ROM,
  PROGRAM
COUNTER AND
                     the opcode and operand are placed in
 ROM SPACE           ROM memory location starting at 0000
                        ROM contents
                                          Address      Code
Placing Code in
                                          0000         7D
      ROM                                 0001         25
    (cont’)                               0002         7F
                                          0003         34
                                          0004         74
                                          0005         00
                                          0006         2D
                                          0007         2F
                                          0008         24
                                          0009         12
                                          000A         80
                                          000B         FE

                  Department of Computer Science and Information Engineering
       HANEL      National Cheng Kung University, TAIWAN                       19
A step-by-step description of the
  PROGRAM
COUNTER AND
                   action of the 8051 upon applying
 ROM SPACE         power on it
                  1.   When 8051 is powered up, the PC has
 Executing             0000 and starts to fetch the first opcode
 Program               from location 0000 of program ROM
                          Upon executing the opcode 7D, the CPU
                          fetches the value 25 and places it in R5
                          Now one instruction is finished, and then the
                          PC is incremented to point to 0002, containing
                          opcode 7F
                  2.   Upon executing the opcode 7F, the value
                       34H is moved into R7
                          The PC is incremented to 0004


              Department of Computer Science and Information Engineering
     HANEL    National Cheng Kung University, TAIWAN                       20
(cont’)
  PROGRAM
COUNTER AND       3.   The instruction at location 0004 is
 ROM SPACE             executed and now PC = 0006
                  4.   After the execution of the 1-byte
 Executing             instruction at location 0006, PC = 0007
 Program          5.   Upon execution of this 1-byte instruction
   (cont’)             at 0007, PC is incremented to 0008




                                                                                 For Evaluation Only.
                                                                                 Copyright(C) by Foxit Software Company,2005-2008
                                                                                 Edited by Foxit Reader
                          This process goes on until all the instructions
                          are fetched and executed
                          The fact that program counter points at the
                          next instruction to be executed explains some
                          microprocessors call it the instruction pointer




              Department of Computer Science and Information Engineering
      HANEL   National Cheng Kung University, TAIWAN                        21
No member of 8051 family can access
  PROGRAM
COUNTER AND
                 more than 64K bytes of opcode
 ROM SPACE            The program counter is a 16-bit register

ROM Memory               Byte                Byte                  Byte

Map in 8051    0000                0000                  0000

  Family
               0FFF
                         8751
                       AT89C51     3FFF
                                          DS89C420/30


                                                         7FFF
                                                                 DS5000-32




              Department of Computer Science and Information Engineering
     HANEL    National Cheng Kung University, TAIWAN                         22
8051 microcontroller has only one data
8051 DATA
TYPES AND
                type - 8 bits
DIRECTIVES          The size of each register is also 8 bits
                    It is the job of the programmer to break
Data Type           down data larger than 8 bits (00 to FFH,
                    or 0 to 255 in decimal)
                    The data types can be positive or negative




             Department of Computer Science and Information Engineering
    HANEL    National Cheng Kung University, TAIWAN                       23
The DB directive is the most widely
8051 DATA
TYPES AND
                      used data directive in the assembler
DIRECTIVES                 It is used to define the 8-bit data
                           When DB is used to define data, the
Assembler                  numbers can be in decimal, binary, hex,
                                                    The “D” after the decimal
Directives                 ASCII formats          number is optional, but using
                                                        “B” (binary) and “H”
                                                    (hexadecimal) for the others is




                                                                                       For Evaluation Only.
                                                                                       Copyright(C) by Foxit Software Company,2005-2008
                                                                                       Edited by Foxit Reader
                             ORG      500H
                                                               required
                   DATA1:    DB       28             ;DECIMAL (1C in Hex)
                   DATA2:    DB       00110101B      ;BINARY (35 in Hex)
                   DATA3:    DB       39H            ;HEX
The Assembler will           ORG      510H       Place ASCII in quotation marks
convert the numbers DATA4:   DB       “2591”     The;ASCII NUMBERS ASCII
                                                      Assembler will assign
into hex                                         code for the numbers or characters
                             ORG      518H
                   DATA6:    DB       “My name is Joe”
        Define ASCII strings larger                  ;ASCII CHARACTERS
        than two characters

                  Department of Computer Science and Information Engineering
      HANEL       National Cheng Kung University, TAIWAN                          24
ORG (origin)
8051 DATA           The ORG directive is used to indicate the
TYPES AND           beginning of the address
DIRECTIVES          The number that comes after ORG can be
                    either in hex and decimal
Assembler               If the number is not followed by H, it is decimal
Directives              and the assembler will convert it to hex
  (cont’)       END
                    This indicates to the assembler the end of
                    the source (asm) file
                    The END directive is the last line of an
                    8051 program
                        Mean that in the code anything after the END
                        directive is ignored by the assembler



             Department of Computer Science and Information Engineering
     HANEL   National Cheng Kung University, TAIWAN                       25
EQU (equate)
8051 DATA
TYPES AND           This is used to define a constant without
DIRECTIVES          occupying a memory location
                    The EQU directive does not set aside
Assembler           storage for a data item but associates a
directives          constant value with a data label
  (cont’)               When the label appears in the program, its
                        constant value will be substituted for the label




                                                                                For Evaluation Only.
                                                                                Copyright(C) by Foxit Software Company,2005-2008
                                                                                Edited by Foxit Reader
             Department of Computer Science and Information Engineering
     HANEL   National Cheng Kung University, TAIWAN                        26
EQU (equate)          (cont’)
8051 DATA
TYPES AND           Assume that there is a constant used in
DIRECTIVES          many different places in the program, and
                    the programmer wants to change its value
Assembler           throughout
                        By the use of EQU, one can change it once and
directives
                        the assembler will change all of its occurrences
  (cont’)
                                                Use EQU for the
                                                counter constant

                      COUNT    EQU 25
                      ...      ....
                      MOV      R3, #COUNT

                                                  The constant is used to
                                                   load the R3 register


             Department of Computer Science and Information Engineering
     HANEL   National Cheng Kung University, TAIWAN                         27
The program status word (PSW)
FLAG BITS AND
PSW REGISTER
                     register, also referred to as the flag
                     register, is an 8 bit register
Program Status           Only 6 bits are used
     Word                   These four are CY (carry), AC (auxiliary carry), P
                            (parity), and OV (overflow)
                              – They are called conditional flags, meaning
                                that they indicate some conditions that




                                                                                   For Evaluation Only.
                                                                                   Copyright(C) by Foxit Software Company,2005-2008
                                                                                   Edited by Foxit Reader
                                resulted after an instruction was executed
                            The PSW3 and PSW4 are designed as RS0 and
                            RS1, and are used to change the bank
                         The two unused bits are user-definable




                 Department of Computer Science and Information Engineering
      HANEL      National Cheng Kung University, TAIWAN                       28
CY    AC     F0    RS1 RS0        OV      --      P
FLAG BITS AND                                                      A carry from D3 to D4
                         CY    PSW.7      Carry flag.
PSW REGISTER
                         AC    PSW.6      Auxiliary carry flag. Carry out from the d7 bit
                         --    PSW.5      Available to the user for general purpose
Program Status           RS1   PSW.4      Register Bank selector bit 1.
  Word (cont’)           RS0   PSW.3      Register Bank selector bit 0.
                         OV    PSW.2      Overflow flag.
                                                                 Reflect the number of 1s
    The result of        --    PSW.1      User definable bit. in register A
    signed number        P     PSW.0      Parity flag. Set/cleared by hardware each
    operation is too                         instruction cycle to indicate an odd/even
    large, causing                           number of 1 bits in the accumulator.
    the high-order
    bit to overflow                 RS1   RS0      Register Bank       Address
    into the sign bit
                                     0      0             0           00H – 07H
                                     0      1             1           08H – 0FH
                                     1      0             2           10H – 17H
                                     1      1             3           18H – 1FH

                        Department of Computer Science and Information Engineering
        HANEL           National Cheng Kung University, TAIWAN                              29
Instructions that affect flag bits
FLAG BITS AND                      Instruction     CY     OV      AC
PSW REGISTER                       ADD             X      X       X
                                   ADDC            X      X       X

      ADD                          SUBB            X      X       X
                                   MUL             0      X
Instruction And                    DIV             0      X
      PSW                          DA              X
                                   RPC             X
                                   PLC             X
                                   SETB C          1
                                   CLR C           0
                                   CPL C           X
                                   ANL C, bit      X
                                   ANL C, /bit     X
                                   ORL C, bit      X
                                   ORL C, /bit     X
                                   MOV C, bit      X
                                   CJNE            X

                  Department of Computer Science and Information Engineering
       HANEL      National Cheng Kung University, TAIWAN                       30
The flag bits affected by the ADD
FLAG BITS AND
PSW REGISTER
                      instruction are CY, P, AC, and OV
                   Example 2-2

      ADD          Show the status of the CY, AC and P flag after the addition of 38H
                   and 2FH in the following instructions.
Instruction And
      PSW              MOV A, #38H
    (cont’)            ADD A, #2FH ;after the addition A=67H, CY=0
                   Solution:
                                38    00111000
                               + 2F   00101111
                                67    01100111
                   CY = 0 since there is no carry beyond the D7 bit
                   AC = 1 since there is a carry from the D3 to the D4 bi
                   P = 1 since the accumulator has an odd number of 1s (it has five 1s)
                  Department of Computer Science and Information Engineering
       HANEL      National Cheng Kung University, TAIWAN                                  31
Example 2-3
FLAG BITS AND
                   Show the status of the CY, AC and P flag after the addition of 9CH
PSW REGISTER       and 64H in the following instructions.
                       MOV A, #9CH
      ADD              ADD A, #64H        ;after the addition A=00H, CY=1
Instruction And
                   Solution:
      PSW
    (cont’)                    9C     10011100
                            + 64      01100100
                               100    00000000
                   CY = 1 since there is a carry beyond the D7 bit
                   AC = 1 since there is a carry from the D3 to the D4 bi
                   P = 0 since the accumulator has an even number of 1s (it has zero 1s)




                  Department of Computer Science and Information Engineering
       HANEL      National Cheng Kung University, TAIWAN                                   32
Example 2-4
FLAG BITS AND
                   Show the status of the CY, AC and P flag after the addition of 88H
PSW REGISTER       and 93H in the following instructions.
                       MOV A, #88H
      ADD
                       ADD A, #93H        ;after the addition A=1BH, CY=1
Instruction And
      PSW          Solution:
    (cont’)                    88     10001000
                           + 93       10010011
                               11B    00011011
                   CY = 1 since there is a carry beyond the D7 bit
                   AC = 0 since there is no carry from the D3 to the D4 bi
                   P = 0 since the accumulator has an even number of 1s (it has four 1s)




                  Department of Computer Science and Information Engineering
       HANEL      National Cheng Kung University, TAIWAN                                   33
There are 128 bytes of RAM in the
 REGISTER          8051
BANKS AND
                       Assigned addresses 00 to 7FH
  STACK
                   The 128 bytes are divided into three
RAM Memory         different groups as follows:
   Space          1)   A total of 32 bytes from locations 00 to
 Allocation            1F hex are set aside for register banks
                       and the stack




                                                                                For Evaluation Only.
                                                                                Copyright(C) by Foxit Software Company,2005-2008
                                                                                Edited by Foxit Reader
                  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,
                       called scratch pad

              Department of Computer Science and Information Engineering
     HANEL    National Cheng Kung University, TAIWAN                       34
RAM Allocation in 8051

   8051                   7F

 REGISTER                                          Scratch pad RAM

BANKS AND                 30
  STACK                   2F
                                                   Bit-Addressable RAM

RAM Memory                20
   Space                  1F
 Allocation
                                                   Register Bank 3
                          18
   (cont’)                17                       Register Bank 2
                          10
                          0F
                                                   Register Bank 1 (stack)
                          08
                          07
                                                   Register Bank 0

                          00

              Department of Computer Science and Information Engineering
      HANEL   National Cheng Kung University, TAIWAN                         35
These 32 bytes are divided into 4
    8051
  REGISTER
                    banks of registers in which each bank
 BANKS AND          has 8 registers, R0-R7
   STACK                RAM location from 0 to 7 are set aside for
                        bank 0 of R0-R7 where R0 is RAM location
Register Banks          0, R1 is RAM location 1, R2 is RAM
                        location 2, and so on, until memory
                        location 7 which belongs to R7 of bank 0
                        It is much easier to refer to these RAM
                        locations with names such as R0, R1, and
                        so on, than by their memory locations
                    Register bank 0 is the default when
                    8051 is powered up

                 Department of Computer Science and Information Engineering
      HANEL      National Cheng Kung University, TAIWAN                       36
8051           Register banks and their RAM address
  REGISTER                                                             Bank 3
                            Bank 0       Bank 1          Bank 2
 BANKS AND
   STACK               7      R7     F     R7       17     R7     1F     R7

                       6      R6     E     R6       16     R6     1E     R6

Register Banks         5      R5     D     R5       15     R5     1D     R5

    (cont’)            4      R4     C     R4       14     R4     1C     R4

                       3      R3     B     R3       13     R3     1B     R3

                       2      R2     A     R2       12     R2     1A     R2

                       1      R1     9     R1       11     R1     19     R1

                        0     R0     8     R0       10     R0     18     R0




                 Department of Computer Science and Information Engineering
       HANEL     National Cheng Kung University, TAIWAN                         37
We can switch to other banks by use
    8051
  REGISTER
                    of the PSW register
 BANKS AND              Bits D4 and D3 of the PSW are used to
   STACK                select the desired register bank
                        Use the bit-addressable instructions SETB
Register Banks          and CLR to access PSW.4 and PSW.3
    (cont’)
                        PSW bank selection
                                                RS1(PSW.4) RS0(PSW.3)
                                     Bank 0          0             0
                                     Bank 1          0             1
                                     Bank 2          1             0
                                     Bank 3          1             1




                 Department of Computer Science and Information Engineering
       HANEL     National Cheng Kung University, TAIWAN                       38
Example 2-5
    8051
                      MOV R0, #99H          ;load R0 with 99H
  REGISTER            MOV R1, #85H          ;load R1 with 85H
 BANKS AND
   STACK
                  Example 2-6

Register Banks        MOV 00, #99H          ;RAM location 00H has 99H
                      MOV 01, #85H          ;RAM location 01H has 85H
    (cont’)

                  Example 2-7
                      SETB PSW.4            ;select bank 2
                      MOV R0, #99H          ;RAM location 10H has 99H
                      MOV R1, #85H          ;RAM location 11H has 85H




                 Department of Computer Science and Information Engineering
       HANEL     National Cheng Kung University, TAIWAN                       39
The stack is a section of RAM used by
   8051        the CPU to store information
 REGISTER      temporarily
BANKS AND
                   This information could be data or an
  STACK
                   address
  Stack        The register used to access the stack
               is called the SP (stack pointer) register
                   The stack pointer in the 8051 is only 8 bit
                   wide, which means that it can take value
                   of 00 to FFH
                   When the 8051 is powered up, the SP
                   register contains value 07
                       RAM location 08 is the first location begin used
                       for the stack by the 8051


            Department of Computer Science and Information Engineering
    HANEL   National Cheng Kung University, TAIWAN                        40
The storing of a CPU register in the
   8051
                stack is called a PUSH
 REGISTER
BANKS AND           SP is pointing to the last used location of
  STACK             the stack
                    As we push data onto the stack, the SP is
  Stack             incremented by one
  (cont’)               This is different from many microprocessors




                                                                               For Evaluation Only.
                                                                               Copyright(C) by Foxit Software Company,2005-2008
                                                                               Edited by Foxit Reader
                Loading the contents of the stack back
                into a CPU register is called a POP
                    With every pop, the top byte of the stack
                    is copied to the register specified by the
                    instruction and the stack pointer is
                    decremented once

             Department of Computer Science and Information Engineering
     HANEL   National Cheng Kung University, TAIWAN                       41
Example 2-8
   8051
                Show the stack and stack pointer from the following. Assume the
 REGISTER       default stack area.
BANKS AND            MOV R6, #25H
  STACK              MOV R1, #12H
                     MOV R4, #0F3H
                     PUSH 6
Pushing onto         PUSH 1
   Stack             PUSH 4
                Solution:
                                    After PUSH 6   After PUSH 1   After PUSH 4
                    0B              0B             0B             0B
                    0A              0A             0A             0A   F3
                    09              09             09   12        09   12
                    08              08   25        08   25        08   25
                    Start SP = 07   SP = 08        SP = 09        SP = 0A



               Department of Computer Science and Information Engineering
     HANEL     National Cheng Kung University, TAIWAN                             42
Example 2-9
   8051
                Examining the stack, show the contents of the register and SP after
 REGISTER          execution of the following instructions. All value are in hex.
BANKS AND            POP         3              ; POP stack into R3
  STACK              POP         5              ; POP stack into R5
                     POP         2              ; POP stack into R2

Popping From    Solution:
   Stack




                                                                                           For Evaluation Only.
                                                                                           Copyright(C) by Foxit Software Company,2005-2008
                                                                                           Edited by Foxit Reader
                                     After POP 3     After POP 5    After POP 2
                     0B     54       0B              0B             0B
                     0A     F9       0A    F9        0A             0A
                     09     76       09    76        09   76        09
                     08     6C       08    6C        08   6C        08   6C
                     Start SP = 0B   SP = 0A         SP = 09        SP = 08
                                     Because locations 20-2FH of RAM are reserved
                                     for bit-addressable memory, so we can change the
                                     SP to other RAM location by using the instruction
                                     “MOV SP, #XX”
               Department of Computer Science and Information Engineering
     HANEL     National Cheng Kung University, TAIWAN                                 43
The CPU also uses the stack to save
    8051
  REGISTER
                     the address of the instruction just
 BANKS AND           below the CALL instruction
   STACK                 This is how the CPU knows where to
                         resume when it returns from the called
     CALL                subroutine
Instruction And
     Stack




                  Department of Computer Science and Information Engineering
       HANEL      National Cheng Kung University, TAIWAN                       44
The reason of incrementing SP after
   8051
 REGISTER
                   push is
BANKS AND              Make sure that the stack is growing
  STACK                toward RAM location 7FH, from lower to
                       upper addresses
Incrementing           Ensure that the stack will not reach the
Stack Pointer          bottom of RAM and consequently run out




                                                                                  For Evaluation Only.
                                                                                  Copyright(C) by Foxit Software Company,2005-2008
                                                                                  Edited by Foxit Reader
                       of stack space
                       If the stack pointer were decremented
                       after push
                           We would be using RAM locations 7, 6, 5, etc.
                           which belong to R7 to R0 of bank 0, the default
                           register bank



                Department of Computer Science and Information Engineering
      HANEL     National Cheng Kung University, TAIWAN                       45
When 8051 is powered up, register
    8051
  REGISTER
                    bank 1 and the stack are using the
 BANKS AND          same memory space
   STACK                We can reallocate another section of RAM
                        to the stack
Stack and Bank
   1 Conflict




                                                                                   For Evaluation Only.
                                                                                   Copyright(C) by Foxit Software Company,2005-2008
                                                                                   Edited by Foxit Reader
                 Department of Computer Science and Information Engineering
      HANEL      National Cheng Kung University, TAIWAN                       46
Example 2-10
    8051         Examining the stack, show the contents of the register and SP after
  REGISTER          execution of the following instructions. All value are in hex.
 BANKS AND            MOV SP, #5FH         ;make RAM location 60H
   STACK
                                           ;first stack location
                      MOV R2, #25H
                      MOV R1, #12H

Stack And Bank
                      MOV R4, #0F3H
                      PUSH 2
   1 Conflict         PUSH 1
    (cont’)           PUSH 4

                 Solution:
                                      After PUSH 2    After PUSH 1    After PUSH 4
                      63              63              63              63
                      62              62              62              62   F3
                      61              61              61   12         61   12
                      60              60    25        60   25         60   25
                      Start SP = 5F   SP = 60         SP = 61         SP = 62

                 Department of Computer Science and Information Engineering
       HANEL     National Cheng Kung University, TAIWAN                                47
JUMP, LOOP AND CALL
           INSTRUCTIONS

      The 8051 Microcontroller and Embedded
      Systems: Using Assembly and C
      Mazidi, Mazidi and McKinlay


                          Chung-Ping Young
                                     楊中平

Home Automation, Networking, and Entertainment Lab
Dept. of Computer Science and Information Engineering
National Cheng Kung University, TAIWAN
Repeating a sequence of instructions a
  LOOP AND                  certain number of times is called a
    JUMP                    loop
INSTRUCTIONS
                              Loop action is performed by
                              DJNZ reg, Label
   Looping
                                   The register is decremented
                                   If it is not zero, it jumps to the target address
                                   referred to by the label
 A loop can be repeated a          Prior to the start of loop the register is loaded
 maximum of 255 times, if          with the counter for the number of repetitions
 R2 is FFH
                                   Counter can be R0 – R7 or RAM location
                      ;This program adds value 3 to the ACC ten times
                             MOV A,#0      ;A=0, clear ACC
                             MOV R2,#10 ;load counter R2=10
                      AGAIN: ADD A,#03     ;add 03 to ACC
                             DJNZ R2,AGAIN ;repeat until R2=0,10 times
                             MOV R5,A      ;save A in R5

                     Department of Computer Science and Information Engineering
        HANEL        National Cheng Kung University, TAIWAN                            2
If we want to repeat an action more
  LOOP AND
    JUMP
                  times than 256, we use a loop inside a
INSTRUCTIONS      loop, which is called nested loop
                      We use multiple registers to hold the
 Nested Loop          count

                Write a program to (a) load the accumulator with the value 55H, and
                (b) complement the ACC 700 times




                                                                                          For Evaluation Only.
                                                                                          Copyright(C) by Foxit Software Company,2005-2008
                                                                                          Edited by Foxit Reader
                       MOV      A,#55H ;A=55H
                       MOV      R3,#10 ;R3=10, outer loop count
                NEXT: MOV       R2,#70 ;R2=70, inner loop count
                AGAIN: CPL      A       ;complement A register
                       DJNZ     R2,AGAIN ;repeat it 70 times
                       DJNZ     R3,NEXT




               Department of Computer Science and Information Engineering
      HANEL    National Cheng Kung University, TAIWAN                                 3
Jump only if a certain condition is met
  LOOP AND   JZ label               ;jump if A=0
    JUMP           MOV            A,R0         ;A=R0
INSTRUCTIONS       JZ             OVER         ;jump if A = 0
                          MOV     A,R1         ;A=R1
                          JZ      OVER         ;jump if A = 0
 Conditional              ...
   Jumps        OVER:                           Can be used only for register A,
                                                not any other register

                Determine if R5 contains the value 0. If so, put 55H in it.
                          MOV     A,R5    ;copy R5 to A
                          JNZ     NEXT    ;jump if A is not zero
                          MOV     R5,#55H
                NEXT:     ...




               Department of Computer Science and Information Engineering
      HANEL    National Cheng Kung University, TAIWAN                              4
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed
The 8051 microcontroller and embedded systems using assembly and c 2nd-ed

More Related Content

What's hot (20)

Base band transmission
Base band transmissionBase band transmission
Base band transmission
 
flag register of 8086
flag register of 8086flag register of 8086
flag register of 8086
 
Interfacing 8255
Interfacing 8255Interfacing 8255
Interfacing 8255
 
Small Scale Multi path measurements
Small Scale Multi path measurements Small Scale Multi path measurements
Small Scale Multi path measurements
 
Wireless personal area networks(PAN)
Wireless personal area networks(PAN)Wireless personal area networks(PAN)
Wireless personal area networks(PAN)
 
Gsm channels concept
Gsm channels conceptGsm channels concept
Gsm channels concept
 
Device drivers and interrupt service mechanism
Device drivers and interrupt service mechanismDevice drivers and interrupt service mechanism
Device drivers and interrupt service mechanism
 
Wlan architecture
Wlan architectureWlan architecture
Wlan architecture
 
08 multiplexing
08 multiplexing08 multiplexing
08 multiplexing
 
Outdoor propagatiom model
Outdoor propagatiom modelOutdoor propagatiom model
Outdoor propagatiom model
 
Digital signal Processing all matlab code with Lab report
Digital signal Processing all matlab code with Lab report Digital signal Processing all matlab code with Lab report
Digital signal Processing all matlab code with Lab report
 
Serial Communication in 8051
Serial Communication in 8051Serial Communication in 8051
Serial Communication in 8051
 
Imt 2000
Imt 2000Imt 2000
Imt 2000
 
Time delay programs and assembler directives 8086
Time delay programs and assembler directives 8086Time delay programs and assembler directives 8086
Time delay programs and assembler directives 8086
 
PAL And PLA ROM
PAL And PLA ROMPAL And PLA ROM
PAL And PLA ROM
 
Propagation Model
Propagation ModelPropagation Model
Propagation Model
 
Link budget calculation
Link budget calculationLink budget calculation
Link budget calculation
 
LDPC Codes
LDPC CodesLDPC Codes
LDPC Codes
 
Dect
DectDect
Dect
 
Embedded System Tools ppt
Embedded System Tools  pptEmbedded System Tools  ppt
Embedded System Tools ppt
 

Similar to The 8051 microcontroller and embedded systems using assembly and c 2nd-ed

Similar to The 8051 microcontroller and embedded systems using assembly and c 2nd-ed (20)

Mazidi Presentation.pdf
Mazidi Presentation.pdfMazidi Presentation.pdf
Mazidi Presentation.pdf
 
Unit 4.docx
Unit 4.docxUnit 4.docx
Unit 4.docx
 
Lec 02
Lec 02Lec 02
Lec 02
 
Number Systems
Number SystemsNumber Systems
Number Systems
 
Number system
Number systemNumber system
Number system
 
Binary octal
Binary octalBinary octal
Binary octal
 
number system
number systemnumber system
number system
 
Number system
Number systemNumber system
Number system
 
DLD-Introduction.pptx
DLD-Introduction.pptxDLD-Introduction.pptx
DLD-Introduction.pptx
 
Number system by ammar nawab
Number system by ammar nawabNumber system by ammar nawab
Number system by ammar nawab
 
Number system
Number systemNumber system
Number system
 
Data representation
Data representationData representation
Data representation
 
Okkkkk
OkkkkkOkkkkk
Okkkkk
 
Number System and Conversions.pptx
Number System and Conversions.pptxNumber System and Conversions.pptx
Number System and Conversions.pptx
 
Cit 1101 lec 02
Cit 1101 lec 02Cit 1101 lec 02
Cit 1101 lec 02
 
Chapter02.pdf
Chapter02.pdfChapter02.pdf
Chapter02.pdf
 
Number_Systems (2).ppt
Number_Systems (2).pptNumber_Systems (2).ppt
Number_Systems (2).ppt
 
01.number systems
01.number systems01.number systems
01.number systems
 
4 technology
4 technology4 technology
4 technology
 
005618132.pdf
005618132.pdf005618132.pdf
005618132.pdf
 

More from Đinh Công Thiện Taydo University

Do an tot nghiep_Phuong phap thiet ke mang truyen hinh cap huu tuyen CATV (HFC)
Do an tot nghiep_Phuong phap thiet ke mang truyen hinh cap huu tuyen CATV (HFC)Do an tot nghiep_Phuong phap thiet ke mang truyen hinh cap huu tuyen CATV (HFC)
Do an tot nghiep_Phuong phap thiet ke mang truyen hinh cap huu tuyen CATV (HFC)Đinh Công Thiện Taydo University
 
CHƯƠNG 8 PHẦN 2 NGHIÊN CỨU TÍNH ỔN ĐỊNH CỦA QUÁ TRÌNH QUÁ ĐỘ
CHƯƠNG 8 PHẦN 2 NGHIÊN CỨU TÍNH ỔN ĐỊNH CỦA QUÁ TRÌNH QUÁ ĐỘCHƯƠNG 8 PHẦN 2 NGHIÊN CỨU TÍNH ỔN ĐỊNH CỦA QUÁ TRÌNH QUÁ ĐỘ
CHƯƠNG 8 PHẦN 2 NGHIÊN CỨU TÍNH ỔN ĐỊNH CỦA QUÁ TRÌNH QUÁ ĐỘĐinh Công Thiện Taydo University
 
CHƯƠNG 8 PHẦN 1 NGHIÊN CỨU TÍNH ỔN ĐỊNH CỦA QUÁ TRÌNH QUÁ ĐỘ
CHƯƠNG 8 PHẦN 1 NGHIÊN CỨU TÍNH ỔN ĐỊNH CỦA QUÁ TRÌNH QUÁ ĐỘCHƯƠNG 8 PHẦN 1 NGHIÊN CỨU TÍNH ỔN ĐỊNH CỦA QUÁ TRÌNH QUÁ ĐỘ
CHƯƠNG 8 PHẦN 1 NGHIÊN CỨU TÍNH ỔN ĐỊNH CỦA QUÁ TRÌNH QUÁ ĐỘĐinh Công Thiện Taydo University
 
CHƯƠNG 5 CÁC THUẬT TOÁN DÙNG CHO VIỆC THÀNH LẬP NHỮNG MA TRẬN MẠNG
CHƯƠNG 5 CÁC THUẬT TOÁN DÙNG CHO VIỆC THÀNH LẬP NHỮNG MA TRẬN MẠNG CHƯƠNG 5 CÁC THUẬT TOÁN DÙNG CHO VIỆC THÀNH LẬP NHỮNG MA TRẬN MẠNG
CHƯƠNG 5 CÁC THUẬT TOÁN DÙNG CHO VIỆC THÀNH LẬP NHỮNG MA TRẬN MẠNG Đinh Công Thiện Taydo University
 
CHƯƠNG 3 MÔ HÌNH HÓA CÁC PHẦN TỬ TRONGHỆ THỐNGĐIỆN
CHƯƠNG 3  MÔ HÌNH HÓA CÁC PHẦN TỬ TRONGHỆ THỐNGĐIỆNCHƯƠNG 3  MÔ HÌNH HÓA CÁC PHẦN TỬ TRONGHỆ THỐNGĐIỆN
CHƯƠNG 3 MÔ HÌNH HÓA CÁC PHẦN TỬ TRONGHỆ THỐNGĐIỆNĐinh Công Thiện Taydo University
 
CHƯƠNG 4 PHẦN 2 CÁC MA TRẬN MẠNG VÀ PHẠM VI ỨNG DỤNG
CHƯƠNG 4 PHẦN 2 CÁC MA TRẬN MẠNG VÀ PHẠM VI ỨNG  DỤNGCHƯƠNG 4 PHẦN 2 CÁC MA TRẬN MẠNG VÀ PHẠM VI ỨNG  DỤNG
CHƯƠNG 4 PHẦN 2 CÁC MA TRẬN MẠNG VÀ PHẠM VI ỨNG DỤNGĐinh Công Thiện Taydo University
 
CHƯƠNG 2 GIẢI PHƯƠNG TRÌNH VI PHÂN BẰNG PHƯƠNG PHÁP SỐ
CHƯƠNG 2  GIẢI PHƯƠNG TRÌNH VI PHÂN BẰNG PHƯƠNG PHÁP SỐCHƯƠNG 2  GIẢI PHƯƠNG TRÌNH VI PHÂN BẰNG PHƯƠNG PHÁP SỐ
CHƯƠNG 2 GIẢI PHƯƠNG TRÌNH VI PHÂN BẰNG PHƯƠNG PHÁP SỐĐinh Công Thiện Taydo University
 

More from Đinh Công Thiện Taydo University (20)

Untitled Presentation
Untitled PresentationUntitled Presentation
Untitled Presentation
 
Cam bien trong robot(sensor robot)
Cam bien trong robot(sensor robot)Cam bien trong robot(sensor robot)
Cam bien trong robot(sensor robot)
 
Cam bien tiem can
Cam bien tiem canCam bien tiem can
Cam bien tiem can
 
Cam bien va ung dung
Cam bien va ung dungCam bien va ung dung
Cam bien va ung dung
 
Ly thuyet dieu khien tu dong full
Ly thuyet dieu khien tu dong fullLy thuyet dieu khien tu dong full
Ly thuyet dieu khien tu dong full
 
3.5 g va quy hoach
3.5 g va quy hoach3.5 g va quy hoach
3.5 g va quy hoach
 
Do an. He thong dien tinh Tra Vinh
Do an. He thong dien tinh Tra VinhDo an. He thong dien tinh Tra Vinh
Do an. He thong dien tinh Tra Vinh
 
Bao cao. Cam bien vi tri va cam bien dich chuyen
Bao cao. Cam bien vi tri va cam bien dich chuyenBao cao. Cam bien vi tri va cam bien dich chuyen
Bao cao. Cam bien vi tri va cam bien dich chuyen
 
Do an tot nghiep_Phuong phap thiet ke mang truyen hinh cap huu tuyen CATV (HFC)
Do an tot nghiep_Phuong phap thiet ke mang truyen hinh cap huu tuyen CATV (HFC)Do an tot nghiep_Phuong phap thiet ke mang truyen hinh cap huu tuyen CATV (HFC)
Do an tot nghiep_Phuong phap thiet ke mang truyen hinh cap huu tuyen CATV (HFC)
 
Nhiet Dien Tro
Nhiet Dien TroNhiet Dien Tro
Nhiet Dien Tro
 
Hoa Ke
Hoa KeHoa Ke
Hoa Ke
 
CHƯƠNG 8 PHẦN 2 NGHIÊN CỨU TÍNH ỔN ĐỊNH CỦA QUÁ TRÌNH QUÁ ĐỘ
CHƯƠNG 8 PHẦN 2 NGHIÊN CỨU TÍNH ỔN ĐỊNH CỦA QUÁ TRÌNH QUÁ ĐỘCHƯƠNG 8 PHẦN 2 NGHIÊN CỨU TÍNH ỔN ĐỊNH CỦA QUÁ TRÌNH QUÁ ĐỘ
CHƯƠNG 8 PHẦN 2 NGHIÊN CỨU TÍNH ỔN ĐỊNH CỦA QUÁ TRÌNH QUÁ ĐỘ
 
CHƯƠNG 8 PHẦN 1 NGHIÊN CỨU TÍNH ỔN ĐỊNH CỦA QUÁ TRÌNH QUÁ ĐỘ
CHƯƠNG 8 PHẦN 1 NGHIÊN CỨU TÍNH ỔN ĐỊNH CỦA QUÁ TRÌNH QUÁ ĐỘCHƯƠNG 8 PHẦN 1 NGHIÊN CỨU TÍNH ỔN ĐỊNH CỦA QUÁ TRÌNH QUÁ ĐỘ
CHƯƠNG 8 PHẦN 1 NGHIÊN CỨU TÍNH ỔN ĐỊNH CỦA QUÁ TRÌNH QUÁ ĐỘ
 
CHƯƠNG 7 PHẦN 1 TÍNH TOÁN NGẮN MẠCH
CHƯƠNG 7 PHẦN 1 TÍNH TOÁN NGẮN MẠCHCHƯƠNG 7 PHẦN 1 TÍNH TOÁN NGẮN MẠCH
CHƯƠNG 7 PHẦN 1 TÍNH TOÁN NGẮN MẠCH
 
CHƯƠNG 7 PHẦN 2 TÍNH TOÁN NGẮN MẠCH
CHƯƠNG 7 PHẦN 2 TÍNH TOÁN NGẮN MẠCHCHƯƠNG 7 PHẦN 2 TÍNH TOÁN NGẮN MẠCH
CHƯƠNG 7 PHẦN 2 TÍNH TOÁN NGẮN MẠCH
 
CHƯƠNG 5 CÁC THUẬT TOÁN DÙNG CHO VIỆC THÀNH LẬP NHỮNG MA TRẬN MẠNG
CHƯƠNG 5 CÁC THUẬT TOÁN DÙNG CHO VIỆC THÀNH LẬP NHỮNG MA TRẬN MẠNG CHƯƠNG 5 CÁC THUẬT TOÁN DÙNG CHO VIỆC THÀNH LẬP NHỮNG MA TRẬN MẠNG
CHƯƠNG 5 CÁC THUẬT TOÁN DÙNG CHO VIỆC THÀNH LẬP NHỮNG MA TRẬN MẠNG
 
CHƯƠNG 6 TRÀO LƯU CÔNG SUẤT
CHƯƠNG 6 TRÀO LƯU CÔNG SUẤTCHƯƠNG 6 TRÀO LƯU CÔNG SUẤT
CHƯƠNG 6 TRÀO LƯU CÔNG SUẤT
 
CHƯƠNG 3 MÔ HÌNH HÓA CÁC PHẦN TỬ TRONGHỆ THỐNGĐIỆN
CHƯƠNG 3  MÔ HÌNH HÓA CÁC PHẦN TỬ TRONGHỆ THỐNGĐIỆNCHƯƠNG 3  MÔ HÌNH HÓA CÁC PHẦN TỬ TRONGHỆ THỐNGĐIỆN
CHƯƠNG 3 MÔ HÌNH HÓA CÁC PHẦN TỬ TRONGHỆ THỐNGĐIỆN
 
CHƯƠNG 4 PHẦN 2 CÁC MA TRẬN MẠNG VÀ PHẠM VI ỨNG DỤNG
CHƯƠNG 4 PHẦN 2 CÁC MA TRẬN MẠNG VÀ PHẠM VI ỨNG  DỤNGCHƯƠNG 4 PHẦN 2 CÁC MA TRẬN MẠNG VÀ PHẠM VI ỨNG  DỤNG
CHƯƠNG 4 PHẦN 2 CÁC MA TRẬN MẠNG VÀ PHẠM VI ỨNG DỤNG
 
CHƯƠNG 2 GIẢI PHƯƠNG TRÌNH VI PHÂN BẰNG PHƯƠNG PHÁP SỐ
CHƯƠNG 2  GIẢI PHƯƠNG TRÌNH VI PHÂN BẰNG PHƯƠNG PHÁP SỐCHƯƠNG 2  GIẢI PHƯƠNG TRÌNH VI PHÂN BẰNG PHƯƠNG PHÁP SỐ
CHƯƠNG 2 GIẢI PHƯƠNG TRÌNH VI PHÂN BẰNG PHƯƠNG PHÁP SỐ
 

Recently uploaded

Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)lakshayb543
 
Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Mark Reed
 
4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptxmary850239
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...JhezDiaz1
 
Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management SystemChristalin Nelson
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designMIPLM
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPCeline George
 
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfJemuel Francisco
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxAshokKarra1
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...Postal Advocate Inc.
 
Full Stack Web Development Course for Beginners
Full Stack Web Development Course  for BeginnersFull Stack Web Development Course  for Beginners
Full Stack Web Development Course for BeginnersSabitha Banu
 
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfVirtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfErwinPantujan2
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxAnupkumar Sharma
 
Integumentary System SMP B. Pharm Sem I.ppt
Integumentary System SMP B. Pharm Sem I.pptIntegumentary System SMP B. Pharm Sem I.ppt
Integumentary System SMP B. Pharm Sem I.pptshraddhaparab530
 
Active Learning Strategies (in short ALS).pdf
Active Learning Strategies (in short ALS).pdfActive Learning Strategies (in short ALS).pdf
Active Learning Strategies (in short ALS).pdfPatidar M
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatYousafMalik24
 
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfInclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfTechSoup
 
Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)cama23
 

Recently uploaded (20)

Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
 
Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)
 
4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
 
Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management System
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-design
 
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptxYOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERP
 
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptx
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
 
Full Stack Web Development Course for Beginners
Full Stack Web Development Course  for BeginnersFull Stack Web Development Course  for Beginners
Full Stack Web Development Course for Beginners
 
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfVirtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
 
Integumentary System SMP B. Pharm Sem I.ppt
Integumentary System SMP B. Pharm Sem I.pptIntegumentary System SMP B. Pharm Sem I.ppt
Integumentary System SMP B. Pharm Sem I.ppt
 
Active Learning Strategies (in short ALS).pdf
Active Learning Strategies (in short ALS).pdfActive Learning Strategies (in short ALS).pdf
Active Learning Strategies (in short ALS).pdf
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice great
 
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfInclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
 
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptxFINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
 
Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)
 

The 8051 microcontroller and embedded systems using assembly and c 2nd-ed

  • 1.
  • 2. The 8051 Microcontroller and Embedded Systems Using Assembly and C Second Edition Muhammad Ali Mazidi Janice Gillispie Mazidi Rolin D. McKinlay CONTENTS Introduction to Computing The 8051 Microcontrollers 8051 Assembly Language Programming Branch Instructions I/O Port Programming 8051 Addressing Modes Arithmetic & Logic Instructions And Programs 8051 Programming in C 8051 Hardware Connection and Hex File 8051 Timer/Counter Programming in Assembly and C 8051 Serial Port Programming in Assembly and C Interrupts Programming in Assembly and C 8051 Interfacing to External Memory 8051 Real World Interfacing I: LCD,ADC AND SENSORS LCD and Keyboard Interfacing 8051 Interfacing with 8255
  • 3. INTRODUCTION TO COMPUTING The 8051 Microcontroller and Embedded Systems: Using Assembly and C Mazidi, Mazidi and McKinlay Chung-Ping Young 楊中平 Home Automation, Networking, and Entertainment Lab Dept. of Computer Science and Information Engineering National Cheng Kung University, TAIWAN
  • 4. Numbering and coding systems OUTLINES Digital primer Inside the computer Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 2
  • 5. Human beings use base 10 (decimal) NUMBERING AND CODING arithmetic SYSTEMS There are 10 distinct symbols, 0, 1, 2, …, 9 Decimal and Computers use base 2 (binary) system Binary Number There are only 0 and 1 Systems These two binary digits are commonly referred to as bits Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 3
  • 6. Divide the decimal number by 2 NUMBERING AND CODING repeatedly SYSTEMS Keep track of the remainders Continue this process until the quotient Converting becomes zero from Decimal Write the remainders in reverse order to Binary to obtain the binary number Ex. Convert 2510 to binary Quotient Remainder 25/2 = 12 1 LSB (least significant bit) 12/2 = 6 0 6/2 = 3 0 3/2 = 1 1 1/2 = 0 1 MSB (most significant bit) Therefore 2510 = 110012 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 4
  • 7. Know the weight of each bit in a binary NUMBERING number AND CODING Add them together to get its decimal SYSTEMS equivalent Converting Ex. Convert 110012 to decimal from Binary to Weight: 24 23 22 21 20 Decimal Digits: 1 1 0 0 1 Sum: 16 + 8+ 0+ 0+ 1 = 2510 Use the concept of weight to convert a decimal number to a binary directly Ex. Convert 3910 to binary 32 + 0 + 0 + 4 + 2 + 1 = 39 Therefore, 3910 = 1001112 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 5
  • 8. Base 16, the NUMBERING AND CODING hexadecimal system, Decimal Binary Hex SYSTEMS is used as a 0 0000 0 1 0001 1 convenient 2 0010 2 Hexadecimal representation of 3 0011 3 4 0100 4 System binary numbers 5 0101 5 ex. 6 0110 6 7 0111 7 It is much easier to 8 1000 8 represent a string of 0s 9 1001 9 and 1s such as 10 1010 A 100010010110 as its 11 1011 B hexadecimal equivalent of 12 1100 C 896H 13 1101 D 14 1110 E 15 1111 F Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 6
  • 9. To represent a binary number as its NUMBERING equivalent hexadecimal number AND CODING Start from the right and group 4 bits at a SYSTEMS time, replacing each 4-bit binary number with its hex equivalent Converting between Binary Ex. Represent binary 100111110101 in hex and Hex 1001 1111 0101 = 9 F 5 To convert from hex to binary Each hex digit is replaced with its 4-bit binary equivalent Ex. Convert hex 29B to binary 2 9 B = 0010 1001 1011 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 7
  • 10. Convert to binary first and then NUMBERING AND CODING convert to hex SYSTEMS Convert directly from decimal to hex by repeated division, keeping track of Converting the remainders from Decimal to Hex Ex. Convert 4510 to hex 32 16 8 4 2 1 1 0 1 1 0 1 32 + 8 + 4 + 1 = 45 4510 = 0010 11012 = 2D16 Ex. Convert 62910 to hex 512 256 128 64 32 16 8 4 2 1 1 0 0 1 1 1 0 1 0 1 62910 = 512+64+32+16+4+1 = 0010 0111 01012 = 27516 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 8
  • 11. Convert from hex to binary and then to NUMBERING AND CODING decimal SYSTEMS Convert directly from hex to decimal by summing the weight of all digits Converting from Hex to Ex. 6B216 = 0110 1011 00102 1024 512 256 128 64 32 16 8 4 2 1 Decimal 1 1 0 1 0 1 1 0 0 1 0 1024 + 512 + 128 + 32 + 16 + 2 = 171410 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 9
  • 12. Adding the digits together from the NUMBERING AND CODING least significant digits SYSTEMS If the result is less than 16, write that digit as the sum for that position Addition of Hex If it is greater than 16, subtract 16 from it Numbers to get the digit and carry 1 to the next digit Ex. Perform hex addition: 23D9 + 94BE 23D9 LSD: 9 + 14 = 23 23 – 16 = 7 w/ carry + 94BE 1 + 13 + 11 = 25 25 – 16 = 9 w/ carry B897 1 + 3+4=8 MSD: 2 + 9=B Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 10
  • 13. If the second digit is greater than the NUMBERING AND CODING first, borrow 16 from the preceding SYSTEMS digit Ex. Perform hex subtraction: 59F – 2B8 Subtraction of Hex Numbers 59F LSD: 15 – 8 = 7 – 2B8 9 + 16 – 11 = 14 = E16 2E7 5–1–2=2 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 11
  • 14. The ASCII (pronounced “ask-E”) code NUMBERING assigns binary patterns for AND CODING Numbers 0 to 9 SYSTEMS All the letters of English alphabet, uppercase and lowercase ASCII Code Many control codes and punctuation marks The ASCII system uses 7 bits to represent each code Hex Symbol Hex Symbol Selected ASCII codes 41 A 61 a 42 B 62 b 43 C 63 c 44 D 64 d ... ... ... … 59 Y 79 y 5A Z 7A z Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 12
  • 15. Two voltage levels can be represented DIGITAL PRIMER as the two digits 0 and 1 Signals in digital electronics have two Binary Logic distinct voltage levels with built-in tolerances for variations in the voltage A valid digital signal should be within either of the two shaded areas 5 4 Logic 1 3 2 1 Logic 0 0 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 13
  • 16. AND gate DIGITAL PRIMER Logic Gates Computer Science Illuminated, Dale and Lewis OR gate Computer Science Illuminated, Dale and Lewis Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 14
  • 17. Tri-state buffer DIGITAL PRIMER Inverter Logic Gates (cont’) Computer Science Illuminated, Dale and Lewis XOR gate Computer Science Illuminated, Dale and Lewis Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 15
  • 18. NAND gate DIGITAL PRIMER Logic Gates (cont’) Computer Science Illuminated, Dale and Lewis NOR gate Computer Science Illuminated, Dale and Lewis Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 16
  • 19. DIGITAL PRIMER Half adder Logic Design Using Gates Full adder Digital Design, Mano Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 17
  • 20. DIGITAL PRIMER 4-bit adder Logic Design Using Gates (cont’) Digital Design, Mano Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 18
  • 21. Decoders DIGITAL PRIMER Decoders are widely used for address decoding in computer design Logic Design Address Decoders Using Gates (cont’) Address decoder for 9 (10012) Address decoder for 5 (01012) The output will be 1 if and The output will be 1 if and only if the input is 10012 only if the input is 01012 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 19
  • 22. Flip-flops DIGITAL PRIMER Flip-flops are frequently used to store data Logic Design Using Gates (cont’) Digital Design, Mano Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 20
  • 23. The unit of data size INSIDE THE COMPUTER Bit : a binary digit that can have the value 0 or 1 Important Byte : 8 bits Terminology Nibble : half of a bye, or 4 bits Word : two bytes, or 16 bits The terms used to describe amounts of memory in IBM PCs and compatibles Kilobyte (K): 210 bytes Megabyte (M) : 220 bytes, over 1 million Gigabyte (G) : 230 bytes, over 1 billion Terabyte (T) : 240 bytes, over 1 trillion Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 21
  • 24. CPU (Central Processing Unit) INSIDE THE Execute information stored in memory COMPUTER I/O (Input/output) devices Provide a means of communicating with Internal CPU Organization of Memory Computers RAM (Random Access Memory) – temporary storage of programs that computer is running The data is lost when computer is off ROM (Read Only Memory) – contains programs and information essential to operation of the computer The information cannot be changed by use, and is not lost when power is off – It is called nonvolatile memory Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 22
  • 25. INSIDE THE COMPUTER Internal Address bus Organization of Computers Memory Peripherals (cont’) CPU (monitor, (RAM, ROM) printer, etc.) Data bus Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 23
  • 26. The CPU is connected to memory and INSIDE THE COMPUTER I/O through strips of wire called a bus Carries information from place to place Internal Address bus Organization of Data bus Control bus Computers (cont’) Address bus RAM ROM Printer Disk Monitor Keyboard CPU Data bus Read/ Write Control bus Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 24
  • 27. Address bus INSIDE THE For a device (memory or I/O) to be COMPUTER recognized by the CPU, it must be assigned an address Internal The address assigned to a given device must Organization of be unique Computers The CPU puts the address on the address bus, (cont’) and the decoding circuitry finds the device Data bus The CPU either gets data from the device or sends data to it Control bus Provides read or write signals to the device to indicate if the CPU is asking for information or sending it information Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 25
  • 28. The more data buses available, the INSIDE THE COMPUTER better the CPU Think of data buses as highway lanes More about More data buses mean a more Data Bus expensive CPU and computer The average size of data buses in CPUs varies between 8 and 64 Data buses are bidirectional To receive or send data The processing power of a computer is related to the size of its buses Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 26
  • 29. The more address buses available, the INSIDE THE larger the number of devices that can COMPUTER be addressed More about The number of locations with which a Address Bus CPU can communicate is always equal to 2x, where x is the address lines, regardless of the size of the data bus ex. a CPU with 24 address lines and 16 data lines can provide a total of 224 or 16M bytes of addressable memory Each location can have a maximum of 1 byte of data, since all general-purpose CPUs are byte addressable The address bus is unidirectional Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 27
  • 30. For the CPU to process information, INSIDE THE the data must be stored in RAM or COMPUTER ROM, which are referred to as primary memory CPU’s Relation ROM provides information that is fixed to RAM and and permanent ROM Tables or initialization program RAM stores information that is not permanent and can change with time Various versions of OS and application packages CPU gets information to be processed first form RAM (or ROM) if it is not there, then seeks it from a mass storage device, called secondary memory, and transfers the information to RAM Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 28
  • 31. Registers INSIDE THE COMPUTER The CPU uses registers to store information temporarily Inside CPUs Values to be processed Address of value to be fetched from memory In general, the more and bigger the registers, the better the CPU Registers can be 8-, 16-, 32-, or 64-bit The disadvantage of more and bigger registers is the increased cost of such a CPU Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 29
  • 32. Address Bus INSIDE THE COMPUTER Program Counter Inside CPUs (cont’) Instruction Register Control Bus Data Bus Flags ALU Instruction decoder, timing, and control Internal Register A buses Register B Register C Register D Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 30
  • 33. ALU (arithmetic/logic unit) INSIDE THE Performs arithmetic functions such as add, COMPUTER subtract, multiply, and divide, and logic functions such as AND, OR, and NOT Inside CPUs (cont’) Program counter Points to the address of the next instruction to be executed As each instruction is executed, the program counter is incremented to point to the address of the next instruction to be executed Instruction decoder Interprets the instruction fetched into the CPU A CPU capable of understanding more instructions requires more transistors to design Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 31
  • 34. Ex. A CPU has registers A, B, C, and D and it has an 8-bit INSIDE THE data bus and a 16-bit address bus. The CPU can access COMPUTER memory from addresses 0000 to FFFFH Assume that the code for the CPU to move a value to Internal register A is B0H and the code for adding a value to Working of register A is 04H Computers The action to be performed by the CPU is to put 21H into register A, and then add to register A values 42H and 12H ... Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 32
  • 35. Ex. (cont’) INSIDE THE Action Code Data COMPUTER Move value 21H into reg. A B0H 21H Add value 42H to reg. A 04H 42H Internal Add value 12H to reg. A 04H 12H Working of Mem. addr. Contents of memory address Computers 1400 (B0) code for moving a value to register A (cont’) 1401 (21) value to be moved 1402 (04) code for adding a value to register A 1403 (42) value to be added 1404 (04) code for adding a value to register A 1405 (12) value to be added 1406 (F4) code for halt ... Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 33
  • 36. Ex. (cont’) INSIDE THE The actions performed by CPU are as follows: COMPUTER 1. The program counter is set to the value 1400H, indicating the address of the first instruction code to Internal be executed Working of 2. Computers The CPU puts 1400H on address bus and sends it (cont’) out The memory circuitry finds the location The CPU activates the READ signal, indicating to memory that it wants the byte at location 1400H 以動畫表示 This causes the contents of memory location 1400H, which is B0, to be put on the data bus and brought into the CPU ... Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 34
  • 37. Ex. (cont’) INSIDE THE 3. COMPUTER The CPU decodes the instruction B0 The CPU commands its controller circuitry to bring Internal into register A of the CPU the byte in the next Working of memory location Computers The value 21H goes into register A (cont’) The program counter points to the address of the next instruction to be executed, which is 1402H Address 1402 is sent out on the address bus to fetch the next instruction ... Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 35
  • 38. Ex. (cont’) INSIDE THE 4. COMPUTER From memory location 1402H it fetches code 04H After decoding, the CPU knows that it must add to Internal the contents of register A the byte sitting at the Working of next address (1403) Computers After the CPU brings the value (42H), it provides (cont’) the contents of register A along with this value to the ALU to perform the addition It then takes the result of the addition from the ALU’s output and puts it in register A The program counter becomes 1404, the address of the next instruction ... Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 36
  • 39. Ex. (cont’) INSIDE THE 5. COMPUTER Address 1404H is put on the address bus and the code is fetched into the CPU, decoded, and Internal executed Working of This code is again adding a value to register A Computers The program counter is updated to 1406H (cont’) 6. The contents of address 1406 are fetched in and executed This HALT instruction tells the CPU to stop incrementing the program counter and asking for the next instruction Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 37
  • 40. 8051 MICROCONTROLLERS The 8051 Microcontroller and Embedded Systems: Using Assembly and C Mazidi, Mazidi and McKinlay Chung-Ping Young 楊中平 Home Automation, Networking, and Entertainment Lab Dept. of Computer Science and Information Engineering National Cheng Kung University, TAIWAN
  • 41. Microcontrollers and embedded OUTLINES processors Overview of the 8051 family Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 2
  • 42. General-purpose microprocessors MICRO- CONTROLLERS contains AND No RAM EMBEDDED No ROM PROCESSORS No I/O ports Microcontroller Microcontroller has vs. General- CPU (microprocessor) Purpose RAM Microprocessor ROM I/O ports Timer ADC and other peripherals Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 3
  • 43. Data bus MICRO- General- purpose CONTROLLERS Micro- Processor I/O Serial AND RAM ROM Port Timer COM Port EMBEDDED PROCESSORS CPU Address bus Microcontroller For Evaluation Only. Copyright(C) by Foxit Software Company,2005-2008 Edited by Foxit Reader vs. General- Purpose Microcontroller Microprocessor CPU RAM ROM (cont’) Serial I/O Timer COM Port Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 4
  • 44. General-purpose microprocessors MICRO- Must add RAM, ROM, I/O ports, and CONTROLLERS timers externally to make them functional AND Make the system bulkier and much more EMBEDDED expensive PROCESSORS Have the advantage of versatility on the amount of RAM, ROM, and I/O ports Microcontroller Microcontroller vs. General- The fixed amount of on-chip ROM, RAM, Purpose and number of I/O ports makes them ideal Microprocessor for many applications in which cost and (cont’) space are critical In many applications, the space it takes, the power it consumes, and the price per unit are much more critical considerations than the computing power Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 5
  • 45. An embedded product uses a MICRO- microprocessor (or microcontroller) to CONTROLLERS do one task and one task only AND There is only one application software that EMBEDDED is typically burned into ROM PROCESSORS A PC, in contrast with the embedded Microcontrollers system, can be used for any number of for Embedded applications Systems It has RAM memory and an operating system that loads a variety of applications into RAM and lets the CPU run them A PC contains or is connected to various embedded products Each one peripheral has a microcontroller inside it that performs only one task Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 6
  • 46. Home MICRO- Appliances, intercom, telephones, security systems, CONTROLLERS garage door openers, answering machines, fax AND machines, home computers, TVs, cable TV tuner, VCR, camcorder, remote controls, video games, EMBEDDED cellular phones, musical instruments, sewing PROCESSORS machines, lighting control, paging, camera, pinball machines, toys, exercise equipment Microcontrollers Office for Embedded Telephones, computers, security systems, fax Systems machines, microwave, copier, laser printer, color printer, paging (cont’) Auto Trip computer, engine control, air bag, ABS, instrumentation, security system, transmission control, entertainment, climate control, cellular phone, keyless entry Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 7
  • 47. Many manufactures of general-purpose MICRO- microprocessors have targeted their CONTROLLERS microprocessor for the high end of the AND embedded market EMBEDDED There are times that a microcontroller is PROCESSORS inadequate for the task x86 PC When a company targets a general- Embedded purpose microprocessor for the Applications embedded market, it optimizes the processor used for embedded systems Very often the terms embedded processor and microcontroller are used interchangeably Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 8
  • 48. One of the most critical needs of an MICRO- embedded system is to decrease CONTROLLERS power consumption and space AND EMBEDDED In high-performance embedded PROCESSORS processors, the trend is to integrate more functions on the CPU chip and let x86 PC designer decide which features he/she Embedded wants to use Applications In many cases using x86 PCs for the (cont’) high-end embedded applications Saves money and shortens development time A vast library of software already written Windows is a widely used and well understood platform Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 9
  • 49. 8-bit microcontrollers MICRO- CONTROLLERS Motorola’s 6811 AND Intel’s 8051 EMBEDDED Zilog’s Z8 PROCESSORS Microchip’s PIC Choosing a There are also 16-bit and 32-bit Microcontroller microcontrollers made by various chip makers Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 10
  • 50. Meeting the computing needs of the MICRO- CONTROLLERS task at hand efficiently and cost AND effectively EMBEDDED Speed PROCESSORS Packaging Power consumption Criteria for The amount of RAM and ROM on chip Choosing a Microcontroller The number of I/O pins and the timer on chip How easy to upgrade to higher- performance or lower power-consumption versions Cost per unit Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 11
  • 51. Availability of software development MICRO- tools, such as compilers, assemblers, CONTROLLERS and debuggers AND EMBEDDED Wide availability and reliable sources PROCESSORS of the microcontroller The 8051 family has the largest number of Criteria for diversified (multiple source) suppliers Intel (original) For Evaluation Only. Copyright(C) by Foxit Software Company,2005-2008 Edited by Foxit Reader Choosing a Atmel Microcontroller (cont’) Philips/Signetics AMD Infineon (formerly Siemens) Matra Dallas Semiconductor/Maxim Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 12
  • 52. Intel introduced 8051, referred as MCS- OVERVIEW OF 51, in 1981 8051 FAMILY The 8051 is an 8-bit processor The CPU can work on only 8 bits of data at a time 8051 Microcontroller The 8051 had 128 bytes of RAM 4K bytes of on-chip ROM Two timers For Evaluation Only. Copyright(C) by Foxit Software Company,2005-2008 Edited by Foxit Reader One serial port Four I/O ports, each 8 bits wide 6 interrupt sources The 8051 became widely popular after allowing other manufactures to make and market any flavor of the 8051, but remaining code-compatible Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 13
  • 53. External Interrupts OVERVIEW OF 8051 FAMILY Counter Inputs On-chip Interrupt ROM On-chip Etc. Control Timer 0 8051 for code RAM Timer 1 Microcontroller (cont’) CPU OSC Bus I/O Serial Control Ports Port P0 P1 P2 P3 TXD RXD Address/Data Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 14
  • 54. The 8051 is a subset of the 8052 OVERVIEW OF 8051 FAMILY The 8031 is a ROM-less 8051 Add external ROM to it 8051 Family You lose two ports, and leave only 2 ports for I/O operations Feature 8051 8052 8031 ROM (on-chip program 4K 8K 0K space in bytes) RAM (bytes) 128 256 128 Timers 2 3 2 I/O pins 32 32 32 Serial port 1 1 1 Interrupt sources 6 8 6 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 15
  • 55. 8751 microcontroller OVERVIEW OF 8051 FAMILY UV-EPROM PROM burner Various 8051 UV-EPROM eraser takes 20 min to erase Microcontrollers AT89C51 from Atmel Corporation Flash (erase before write) ROM burner that supports flash For Evaluation Only. Copyright(C) by Foxit Software Company,2005-2008 Edited by Foxit Reader A separate eraser is not needed DS89C4x0 from Dallas Semiconductor, now part of Maxim Corp. Flash Comes with on-chip loader, loading program to on-chip flash via PC COM port Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 16
  • 56. DS5000 from Dallas Semiconductor OVERVIEW OF 8051 FAMILY NV-RAM (changed one byte at a time), RTC (real-time clock) Various 8051 Also comes with on-chip loader Microcontrollers OTP (one-time-programmable) version (cont’) of 8051 8051 family from Philips ADC, DAC, extended I/O, and both OTP and flash Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 17
  • 57. 8051 ASSEMBLY LANGUAGE PROGRAMMING The 8051 Microcontroller and Embedded Systems: Using Assembly and C Mazidi, Mazidi and McKinlay Chung-Ping Young 楊中平 Home Automation, Networking, and Entertainment Lab Dept. of Computer Science and Information Engineering National Cheng Kung University, TAIWAN
  • 58. Register are used to store information INSIDE THE 8051 temporarily, while the information could be Registers a byte of data to be processed, or an address pointing to the data to be fetched The vast majority of 8051 register are 8-bit registers There is only one data type, 8 bits Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 2
  • 59. The 8 bits of a register are shown from INSIDE THE 8051 MSB D7 to the LSB D0 With an 8-bit data type, any data larger Registers than 8 bits must be broken into 8-bit (cont’) chunks before it is processed most least significant bit significant bit D7 D6 D5 D4 D3 D2 D1 D0 8 bit Registers Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 3
  • 60. The most widely used registers INSIDE THE 8051 A (Accumulator) For all arithmetic and logic instructions Registers B, R0, R1, R2, R3, R4, R5, R6, R7 (cont’) DPTR (data pointer), and PC (program counter) A For Evaluation Only. Copyright(C) by Foxit Software Company,2005-2008 Edited by Foxit Reader B R0 DPTR DPH DPL R1 R2 PC PC (Program counter) R3 R4 R5 R6 R7 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 4
  • 61. MOV destination, source ;copy source to dest. INSIDE THE The instruction tells the CPU to move (in reality, 8051 COPY) the source operand to the destination operand MOV “#” signifies that it is a value Instruction MOV A,#55H ;load value 55H into reg. A MOV R0,A ;copy contents of A into R0 ;(now A=R0=55H) MOV R1,A ;copy contents of A into R1 ;(now A=R0=R1=55H) MOV R2,A ;copy contents of A into R2 ;(now A=R0=R1=R2=55H) MOV R3,#95H ;load value 95H into R3 ;(now R3=95H) MOV A,R3 ;copy contents of R3 into A ;now A=R3=95H Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 5
  • 62. Notes on programming INSIDE THE Value (proceeded with #) can be loaded 8051 directly to registers A, B, or R0 – R7 MOV A, #23H MOV MOV R5, #0F9H If it’s not preceded with #, Instruction Add a 0 to indicate that it means to load from a memory location (cont’) F is a hex number and not a letter If values 0 to F moved into an 8-bit register, the rest of the bits are assumed all zeros “MOV A, #5”, the result will be A=05; i.e., A = 00000101 in binary Moving a value that is too large into a register will cause an error MOV A, #7F2H ; ILLEGAL: 7F2H>8 bits (FFH) Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 6
  • 63. ADD A, source ;ADD the source operand INSIDE THE ;to the accumulator 8051 The ADD instruction tells the CPU to add the source byte to register A and put the result in register A ADD Source operand can be either a register or immediate data, but the destination must always Instruction be register A “ADD R4, A” and “ADD R2, #12H” are invalid since A must be the destination of any arithmetic operation MOV A, #25H ;load 25H into A MOV R2, #34H ;load 34H into R2 ADD A, R2 ;add R2 to Accumulator There are always ;(A = A + R2) many ways to write the same program, MOV A, #25H ;load one operand depending on the ;into A (A=25H) registers used ADD A, #34H ;add the second ;operand 34H to A Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 7
  • 64. In the early days of the computer, 8051 programmers coded in machine language, ASSEMBLY consisting of 0s and 1s PROGRAMMING Tedious, slow and prone to error Assembly languages, which provided Structure of mnemonics for the machine code instructions, Assembly plus other features, were developed Language An Assembly language program consist of a series of lines of Assembly language instructions Assembly language is referred to as a low- level language It deals directly with the internal structure of the CPU Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 8
  • 65. Assembly language instruction includes 8051 a mnemonic (abbreviation easy to remember) ASSEMBLY the commands to the CPU, telling it what those PROGRAMMING to do with those items optionally followed by one or two operands Structure of the data items being manipulated Assembly A given Assembly language program is Language a series of statements, or lines For Evaluation Only. Copyright(C) by Foxit Software Company,2005-2008 Edited by Foxit Reader Assembly language instructions Tell the CPU what to do Directives (or pseudo-instructions) Give directions to the assembler Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 9
  • 66. An Assembly language instruction 8051 ASSEMBLY consists of four fields: PROGRAMMING [label:] Mnemonic [operands] [;comment] ORG 0H ;start(origin) at location Structure of 0 MOV R5, #25H ;load 25H into R5 Assembly MOV R7, #34H ;load 34H into R7 Directives do not Language MOV A, #0 ;load 0 into generate any machine A ADD A, R5 ;add contents ofand are used code R5 to A ;now A = A + only by the assembler R5 Mnemonics ADD A, R7 ;add contents of R7 to A produce ;now A = A + R7 opcodes ADD A, #12H ;add to A value 12H ;now A = A + 12H HERE: SJMP HERE ;stay in this loop END ;end of asm may be at the end of a Comments source file The label field allows line or on a line by themselves the program to refer to a The assembler ignores comments line of code by name Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 10
  • 67. The step of Assembly language ASSEMBLING AND RUNNING program are outlines as follows: AN 8051 1) First we use an editor to type a program, PROGRAM many excellent editors or word processors are available that can be used to create and/or edit the program Notice that the editor must be able to produce an ASCII file For many assemblers, the file names follow the usual DOS conventions, but the source file has the extension “asm“ or “src”, depending on which assembly you are using Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 11
  • 68. 2) The “asm” source file containing the ASSEMBLING program code created in step 1 is fed to AND RUNNING an 8051 assembler AN 8051 The assembler converts the instructions into PROGRAM machine code (cont’) The assembler will produce an object file and a list file The extension for the object file is “obj” while the extension for the list file is “lst” 3) Assembler require a third step called linking The linker program takes one or more object code files and produce an absolute object file with the extension “abs” This abs file is used by 8051 trainers that have a monitor program Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 12
  • 69. 4) Next the “abs” file is fed into a program ASSEMBLING called “OH” (object to hex converter) AND RUNNING which creates a file with extension “hex” AN 8051 that is ready to burn into ROM PROGRAM This program comes with all 8051 assemblers (cont’) Recent Windows-based assemblers combine step 2 through 4 into one step Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 13
  • 70. EDITOR PROGRAM ASSEMBLING myfile.asm AND RUNNING AN 8051 ASSEMBLER PROGRAM PROGRAM myfile.lst Other obj files Steps to Create myfile.obj a Program LINKER PROGRAM myfile.abs OH PROGRAM myfile.hex Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 14
  • 71. The lst (list) file, which is optional, is ASSEMBLING AND RUNNING very useful to the programmer AN 8051 It lists all the opcodes and addresses as PROGRAM well as errors that the assembler detected The programmer uses the lst file to find lst File the syntax errors or debug 1 0000 ORG 0H ;start (origin) at 0 2 0000 7D25 MOV R5,#25H ;load 25H into R5 3 0002 7F34 MOV R7,#34H ;load 34H into R7 4 0004 7400 MOV A,#0 ;load 0 into A 5 0006 2D ADD A,R5 ;add contents of R5 to A ;now A = A + R5 6 0007 2F ADD A,R7 ;add contents of R7 to A ;now A = A + R7 7 0008 2412 ADD A,#12H ;add to A value 12H ;now A = A + 12H 8 000A 80EF HERE: SJMP HERE;stay in this loop 9 000C END ;end of asm source file address Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 15
  • 72. The program counter points to the PROGRAM COUNTER AND address of the next instruction to be ROM SPACE executed As the CPU fetches the opcode from the Program program ROM, the program counter is Counter increasing to point to the next instruction The program counter is 16 bits wide This means that it can access program addresses 0000 to FFFFH, a total of 64K bytes of code Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 16
  • 73. All 8051 members start at memory PROGRAM COUNTER AND address 0000 when they’re powered ROM SPACE up Program Counter has the value of 0000 Power up The first opcode is burned into ROM address 0000H, since this is where the 8051 looks for the first instruction when it For Evaluation Only. Copyright(C) by Foxit Software Company,2005-2008 Edited by Foxit Reader is booted We achieve this by the ORG statement in the source program Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 17
  • 74. Examine the list file and how the code PROGRAM is placed in ROM COUNTER AND 1 0000 ORG 0H ;start (origin) at 0 ROM SPACE 2 0000 7D25 MOV R5,#25H ;load 25H into R5 3 0002 7F34 MOV R7,#34H ;load 34H into R7 4 0004 7400 MOV A,#0 ;load 0 into A 5 0006 2D ADD A,R5 ;add contents of R5 to A Placing Code in ;now A = A + R5 6 0007 2F ADD A,R7 ;add contents of R7 to A ROM ;now A = A + R7 7 0008 2412 ADD A,#12H ;add to A value 12H ;now A = A + 12H 8 000A 80EF HERE: SJMP HERE ;stay in this loop 9 000C END ;end of asm source file ROM Address Machine Language Assembly Language 0000 7D25 MOV R5, #25H 0002 7F34 MOV R7, #34H 0004 7400 MOV A, #0 0006 2D ADD A, R5 0007 2F ADD A, R7 0008 2412 ADD A, #12H 000A 80EF HERE: SJMP HERE Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 18
  • 75. After the program is burned into ROM, PROGRAM COUNTER AND the opcode and operand are placed in ROM SPACE ROM memory location starting at 0000 ROM contents Address Code Placing Code in 0000 7D ROM 0001 25 (cont’) 0002 7F 0003 34 0004 74 0005 00 0006 2D 0007 2F 0008 24 0009 12 000A 80 000B FE Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 19
  • 76. A step-by-step description of the PROGRAM COUNTER AND action of the 8051 upon applying ROM SPACE power on it 1. When 8051 is powered up, the PC has Executing 0000 and starts to fetch the first opcode Program from location 0000 of program ROM Upon executing the opcode 7D, the CPU fetches the value 25 and places it in R5 Now one instruction is finished, and then the PC is incremented to point to 0002, containing opcode 7F 2. Upon executing the opcode 7F, the value 34H is moved into R7 The PC is incremented to 0004 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 20
  • 77. (cont’) PROGRAM COUNTER AND 3. The instruction at location 0004 is ROM SPACE executed and now PC = 0006 4. After the execution of the 1-byte Executing instruction at location 0006, PC = 0007 Program 5. Upon execution of this 1-byte instruction (cont’) at 0007, PC is incremented to 0008 For Evaluation Only. Copyright(C) by Foxit Software Company,2005-2008 Edited by Foxit Reader This process goes on until all the instructions are fetched and executed The fact that program counter points at the next instruction to be executed explains some microprocessors call it the instruction pointer Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 21
  • 78. No member of 8051 family can access PROGRAM COUNTER AND more than 64K bytes of opcode ROM SPACE The program counter is a 16-bit register ROM Memory Byte Byte Byte Map in 8051 0000 0000 0000 Family 0FFF 8751 AT89C51 3FFF DS89C420/30 7FFF DS5000-32 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 22
  • 79. 8051 microcontroller has only one data 8051 DATA TYPES AND type - 8 bits DIRECTIVES The size of each register is also 8 bits It is the job of the programmer to break Data Type down data larger than 8 bits (00 to FFH, or 0 to 255 in decimal) The data types can be positive or negative Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 23
  • 80. The DB directive is the most widely 8051 DATA TYPES AND used data directive in the assembler DIRECTIVES It is used to define the 8-bit data When DB is used to define data, the Assembler numbers can be in decimal, binary, hex, The “D” after the decimal Directives ASCII formats number is optional, but using “B” (binary) and “H” (hexadecimal) for the others is For Evaluation Only. Copyright(C) by Foxit Software Company,2005-2008 Edited by Foxit Reader ORG 500H required DATA1: DB 28 ;DECIMAL (1C in Hex) DATA2: DB 00110101B ;BINARY (35 in Hex) DATA3: DB 39H ;HEX The Assembler will ORG 510H Place ASCII in quotation marks convert the numbers DATA4: DB “2591” The;ASCII NUMBERS ASCII Assembler will assign into hex code for the numbers or characters ORG 518H DATA6: DB “My name is Joe” Define ASCII strings larger ;ASCII CHARACTERS than two characters Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 24
  • 81. ORG (origin) 8051 DATA The ORG directive is used to indicate the TYPES AND beginning of the address DIRECTIVES The number that comes after ORG can be either in hex and decimal Assembler If the number is not followed by H, it is decimal Directives and the assembler will convert it to hex (cont’) END This indicates to the assembler the end of the source (asm) file The END directive is the last line of an 8051 program Mean that in the code anything after the END directive is ignored by the assembler Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 25
  • 82. EQU (equate) 8051 DATA TYPES AND This is used to define a constant without DIRECTIVES occupying a memory location The EQU directive does not set aside Assembler storage for a data item but associates a directives constant value with a data label (cont’) When the label appears in the program, its constant value will be substituted for the label For Evaluation Only. Copyright(C) by Foxit Software Company,2005-2008 Edited by Foxit Reader Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 26
  • 83. EQU (equate) (cont’) 8051 DATA TYPES AND Assume that there is a constant used in DIRECTIVES many different places in the program, and the programmer wants to change its value Assembler throughout By the use of EQU, one can change it once and directives the assembler will change all of its occurrences (cont’) Use EQU for the counter constant COUNT EQU 25 ... .... MOV R3, #COUNT The constant is used to load the R3 register Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 27
  • 84. The program status word (PSW) FLAG BITS AND PSW REGISTER register, also referred to as the flag register, is an 8 bit register Program Status Only 6 bits are used Word These four are CY (carry), AC (auxiliary carry), P (parity), and OV (overflow) – They are called conditional flags, meaning that they indicate some conditions that For Evaluation Only. Copyright(C) by Foxit Software Company,2005-2008 Edited by Foxit Reader resulted after an instruction was executed The PSW3 and PSW4 are designed as RS0 and RS1, and are used to change the bank The two unused bits are user-definable Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 28
  • 85. CY AC F0 RS1 RS0 OV -- P FLAG BITS AND A carry from D3 to D4 CY PSW.7 Carry flag. PSW REGISTER AC PSW.6 Auxiliary carry flag. Carry out from the d7 bit -- PSW.5 Available to the user for general purpose Program Status RS1 PSW.4 Register Bank selector bit 1. Word (cont’) RS0 PSW.3 Register Bank selector bit 0. OV PSW.2 Overflow flag. Reflect the number of 1s The result of -- PSW.1 User definable bit. in register A signed number P PSW.0 Parity flag. Set/cleared by hardware each operation is too instruction cycle to indicate an odd/even large, causing number of 1 bits in the accumulator. the high-order bit to overflow RS1 RS0 Register Bank Address into the sign bit 0 0 0 00H – 07H 0 1 1 08H – 0FH 1 0 2 10H – 17H 1 1 3 18H – 1FH Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 29
  • 86. Instructions that affect flag bits FLAG BITS AND Instruction CY OV AC PSW REGISTER ADD X X X ADDC X X X ADD SUBB X X X MUL 0 X Instruction And DIV 0 X PSW DA X RPC X PLC X SETB C 1 CLR C 0 CPL C X ANL C, bit X ANL C, /bit X ORL C, bit X ORL C, /bit X MOV C, bit X CJNE X Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 30
  • 87. The flag bits affected by the ADD FLAG BITS AND PSW REGISTER instruction are CY, P, AC, and OV Example 2-2 ADD Show the status of the CY, AC and P flag after the addition of 38H and 2FH in the following instructions. Instruction And PSW MOV A, #38H (cont’) ADD A, #2FH ;after the addition A=67H, CY=0 Solution: 38 00111000 + 2F 00101111 67 01100111 CY = 0 since there is no carry beyond the D7 bit AC = 1 since there is a carry from the D3 to the D4 bi P = 1 since the accumulator has an odd number of 1s (it has five 1s) Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 31
  • 88. Example 2-3 FLAG BITS AND Show the status of the CY, AC and P flag after the addition of 9CH PSW REGISTER and 64H in the following instructions. MOV A, #9CH ADD ADD A, #64H ;after the addition A=00H, CY=1 Instruction And Solution: PSW (cont’) 9C 10011100 + 64 01100100 100 00000000 CY = 1 since there is a carry beyond the D7 bit AC = 1 since there is a carry from the D3 to the D4 bi P = 0 since the accumulator has an even number of 1s (it has zero 1s) Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 32
  • 89. Example 2-4 FLAG BITS AND Show the status of the CY, AC and P flag after the addition of 88H PSW REGISTER and 93H in the following instructions. MOV A, #88H ADD ADD A, #93H ;after the addition A=1BH, CY=1 Instruction And PSW Solution: (cont’) 88 10001000 + 93 10010011 11B 00011011 CY = 1 since there is a carry beyond the D7 bit AC = 0 since there is no carry from the D3 to the D4 bi P = 0 since the accumulator has an even number of 1s (it has four 1s) Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 33
  • 90. There are 128 bytes of RAM in the REGISTER 8051 BANKS AND Assigned addresses 00 to 7FH STACK The 128 bytes are divided into three RAM Memory different groups as follows: Space 1) A total of 32 bytes from locations 00 to Allocation 1F hex are set aside for register banks and the stack For Evaluation Only. Copyright(C) by Foxit Software Company,2005-2008 Edited by Foxit Reader 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, called scratch pad Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 34
  • 91. RAM Allocation in 8051 8051 7F REGISTER Scratch pad RAM BANKS AND 30 STACK 2F Bit-Addressable RAM RAM Memory 20 Space 1F Allocation Register Bank 3 18 (cont’) 17 Register Bank 2 10 0F Register Bank 1 (stack) 08 07 Register Bank 0 00 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 35
  • 92. These 32 bytes are divided into 4 8051 REGISTER banks of registers in which each bank BANKS AND has 8 registers, R0-R7 STACK RAM location from 0 to 7 are set aside for bank 0 of R0-R7 where R0 is RAM location Register Banks 0, R1 is RAM location 1, R2 is RAM location 2, and so on, until memory location 7 which belongs to R7 of bank 0 It is much easier to refer to these RAM locations with names such as R0, R1, and so on, than by their memory locations Register bank 0 is the default when 8051 is powered up Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 36
  • 93. 8051 Register banks and their RAM address REGISTER Bank 3 Bank 0 Bank 1 Bank 2 BANKS AND STACK 7 R7 F R7 17 R7 1F R7 6 R6 E R6 16 R6 1E R6 Register Banks 5 R5 D R5 15 R5 1D R5 (cont’) 4 R4 C R4 14 R4 1C R4 3 R3 B R3 13 R3 1B R3 2 R2 A R2 12 R2 1A R2 1 R1 9 R1 11 R1 19 R1 0 R0 8 R0 10 R0 18 R0 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 37
  • 94. We can switch to other banks by use 8051 REGISTER of the PSW register BANKS AND Bits D4 and D3 of the PSW are used to STACK select the desired register bank Use the bit-addressable instructions SETB Register Banks and CLR to access PSW.4 and PSW.3 (cont’) PSW bank selection RS1(PSW.4) RS0(PSW.3) Bank 0 0 0 Bank 1 0 1 Bank 2 1 0 Bank 3 1 1 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 38
  • 95. Example 2-5 8051 MOV R0, #99H ;load R0 with 99H REGISTER MOV R1, #85H ;load R1 with 85H BANKS AND STACK Example 2-6 Register Banks MOV 00, #99H ;RAM location 00H has 99H MOV 01, #85H ;RAM location 01H has 85H (cont’) Example 2-7 SETB PSW.4 ;select bank 2 MOV R0, #99H ;RAM location 10H has 99H MOV R1, #85H ;RAM location 11H has 85H Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 39
  • 96. The stack is a section of RAM used by 8051 the CPU to store information REGISTER temporarily BANKS AND This information could be data or an STACK address Stack The register used to access the stack is called the SP (stack pointer) register The stack pointer in the 8051 is only 8 bit wide, which means that it can take value of 00 to FFH When the 8051 is powered up, the SP register contains value 07 RAM location 08 is the first location begin used for the stack by the 8051 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 40
  • 97. The storing of a CPU register in the 8051 stack is called a PUSH REGISTER BANKS AND SP is pointing to the last used location of STACK the stack As we push data onto the stack, the SP is Stack incremented by one (cont’) This is different from many microprocessors For Evaluation Only. Copyright(C) by Foxit Software Company,2005-2008 Edited by Foxit Reader Loading the contents of the stack back into a CPU register is called a POP With every pop, the top byte of the stack is copied to the register specified by the instruction and the stack pointer is decremented once Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 41
  • 98. Example 2-8 8051 Show the stack and stack pointer from the following. Assume the REGISTER default stack area. BANKS AND MOV R6, #25H STACK MOV R1, #12H MOV R4, #0F3H PUSH 6 Pushing onto PUSH 1 Stack PUSH 4 Solution: After PUSH 6 After PUSH 1 After PUSH 4 0B 0B 0B 0B 0A 0A 0A 0A F3 09 09 09 12 09 12 08 08 25 08 25 08 25 Start SP = 07 SP = 08 SP = 09 SP = 0A Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 42
  • 99. Example 2-9 8051 Examining the stack, show the contents of the register and SP after REGISTER execution of the following instructions. All value are in hex. BANKS AND POP 3 ; POP stack into R3 STACK POP 5 ; POP stack into R5 POP 2 ; POP stack into R2 Popping From Solution: Stack For Evaluation Only. Copyright(C) by Foxit Software Company,2005-2008 Edited by Foxit Reader After POP 3 After POP 5 After POP 2 0B 54 0B 0B 0B 0A F9 0A F9 0A 0A 09 76 09 76 09 76 09 08 6C 08 6C 08 6C 08 6C Start SP = 0B SP = 0A SP = 09 SP = 08 Because locations 20-2FH of RAM are reserved for bit-addressable memory, so we can change the SP to other RAM location by using the instruction “MOV SP, #XX” Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 43
  • 100. The CPU also uses the stack to save 8051 REGISTER the address of the instruction just BANKS AND below the CALL instruction STACK This is how the CPU knows where to resume when it returns from the called CALL subroutine Instruction And Stack Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 44
  • 101. The reason of incrementing SP after 8051 REGISTER push is BANKS AND Make sure that the stack is growing STACK toward RAM location 7FH, from lower to upper addresses Incrementing Ensure that the stack will not reach the Stack Pointer bottom of RAM and consequently run out For Evaluation Only. Copyright(C) by Foxit Software Company,2005-2008 Edited by Foxit Reader of stack space If the stack pointer were decremented after push We would be using RAM locations 7, 6, 5, etc. which belong to R7 to R0 of bank 0, the default register bank Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 45
  • 102. When 8051 is powered up, register 8051 REGISTER bank 1 and the stack are using the BANKS AND same memory space STACK We can reallocate another section of RAM to the stack Stack and Bank 1 Conflict For Evaluation Only. Copyright(C) by Foxit Software Company,2005-2008 Edited by Foxit Reader Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 46
  • 103. Example 2-10 8051 Examining the stack, show the contents of the register and SP after REGISTER execution of the following instructions. All value are in hex. BANKS AND MOV SP, #5FH ;make RAM location 60H STACK ;first stack location MOV R2, #25H MOV R1, #12H Stack And Bank MOV R4, #0F3H PUSH 2 1 Conflict PUSH 1 (cont’) PUSH 4 Solution: After PUSH 2 After PUSH 1 After PUSH 4 63 63 63 63 62 62 62 62 F3 61 61 61 12 61 12 60 60 25 60 25 60 25 Start SP = 5F SP = 60 SP = 61 SP = 62 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 47
  • 104. JUMP, LOOP AND CALL INSTRUCTIONS The 8051 Microcontroller and Embedded Systems: Using Assembly and C Mazidi, Mazidi and McKinlay Chung-Ping Young 楊中平 Home Automation, Networking, and Entertainment Lab Dept. of Computer Science and Information Engineering National Cheng Kung University, TAIWAN
  • 105. Repeating a sequence of instructions a LOOP AND certain number of times is called a JUMP loop INSTRUCTIONS Loop action is performed by DJNZ reg, Label Looping The register is decremented If it is not zero, it jumps to the target address referred to by the label A loop can be repeated a Prior to the start of loop the register is loaded maximum of 255 times, if with the counter for the number of repetitions R2 is FFH Counter can be R0 – R7 or RAM location ;This program adds value 3 to the ACC ten times MOV A,#0 ;A=0, clear ACC MOV R2,#10 ;load counter R2=10 AGAIN: ADD A,#03 ;add 03 to ACC DJNZ R2,AGAIN ;repeat until R2=0,10 times MOV R5,A ;save A in R5 Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 2
  • 106. If we want to repeat an action more LOOP AND JUMP times than 256, we use a loop inside a INSTRUCTIONS loop, which is called nested loop We use multiple registers to hold the Nested Loop count Write a program to (a) load the accumulator with the value 55H, and (b) complement the ACC 700 times For Evaluation Only. Copyright(C) by Foxit Software Company,2005-2008 Edited by Foxit Reader MOV A,#55H ;A=55H MOV R3,#10 ;R3=10, outer loop count NEXT: MOV R2,#70 ;R2=70, inner loop count AGAIN: CPL A ;complement A register DJNZ R2,AGAIN ;repeat it 70 times DJNZ R3,NEXT Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 3
  • 107. Jump only if a certain condition is met LOOP AND JZ label ;jump if A=0 JUMP MOV A,R0 ;A=R0 INSTRUCTIONS JZ OVER ;jump if A = 0 MOV A,R1 ;A=R1 JZ OVER ;jump if A = 0 Conditional ... Jumps OVER: Can be used only for register A, not any other register Determine if R5 contains the value 0. If so, put 55H in it. MOV A,R5 ;copy R5 to A JNZ NEXT ;jump if A is not zero MOV R5,#55H NEXT: ... Department of Computer Science and Information Engineering HANEL National Cheng Kung University, TAIWAN 4