Book's TOC
PREFACE TO THIS EDITION
PREFACE
1 EMBEDDED SYSTEMS
1.1 Objectives
1.2 Introduction
1.3 Computers in Everyday Life
1.4 Implementing the Process Stage
1.4.1 Using Discrete Digital Logic or Programmable Logic Devices
1.4.2 Using Custom VLSI Solutions
1.4.3 Using Microprocessors and Microcontrollers
1.5 Embedded Computer versus General Purpose Computer
1.6 Summary
1.7 Questions
2 MICROPROCESSORS AND MICROCONTROLLER
2.1 Objectives
2.2 Introduction
2.3 Microprocessors and Microcontrollers
2.3.1 Microprocessors
2.3.2 Microcontrollers
2.3.3 Comparing Microprocessors and Microcontrollers
2.3.4 The Z80 and the 8051
2.4 Four-Bit to Thirty-Two-Bit Microcontrollers
2.4.1 Four-Bit Microcontrollers
2.4.2 Eight-Bit Microcontrollers
2.4.3 Sixteen-Bit Microcontrollers
2.4.4 Thirty-Two-Bit Microcontrollers
2.5 Development Tools for Microcontrollers
2.5.1 Assembler
2.5.2 Compiler
2.5.3 Simulator/Debugger
2.5.4 E(E)PROM or Flash Memory Programmer
2.5.5 Logic Analyzer 24
2.6 Summary 25
2.7 Questions 25
3 NUMBERING SYSTEMS AND ARITHMETIC
3.1 Objectives
3.2 Introduction
3.3 Symbolic Number Systems
3.4 Positional Number Systems
3.5 Integer Binary Numbers
3.5.1 Binary Digital Computers
3.5.2 The Binary Number System
3.5.3 Conversions between Decimal and Binary Numbers
3.5.4 Hexadecimal Numbers
3.5.5 Conversions between Hexadecimal, Binary, and Decimal Numbers
3.6 Fractional Binary Numbers
3.6.1 Converting Binary Fractions to Decimal
3.6.2 Converting Hexadecimal Fractions to Decimal
3.6.3 Converting Decimal Fractions to Binary and Hexadecimal
3.7 Number System Notation
3.8 Binary Addition and Subtraction
3.8.1 Binary Number Addition and Subtraction
3.8.2 Signed Binary Numbers
3.8.3 Complementary Numbers
3.8.4 Two’s Complement Mathematics
3.9 Binary Multiplication and Division
3.9.1 Binary Multiplication
3.9.2 Binary Division
3.10 Binary Codes
3.10.1 Character Codes
3.10.2 Numeric Codes
3.10.3 Other Binary Codes
3.10.4 Error Correction and Detection Codes
3.11 Summary
3.12 Questions
4 THE 8051 ARCHITECTURES
4.1 Objectives
4.2 Introduction
4.3 8051 Microcontroller Hardware
4.3.1 The 8051 Oscillator and Clock
4.3.2 Program Counter and Data Pointer
4.3.3 A and B CPU Registers
4.3.4 Flags and the Program Status Word (PSW)
4.3.5 Internal Memory
4.3.6 Internal RAM
4.3.7 The Stack and the Stack Pointer
4.3.8 Special Function Registers
4.3.9 Internal ROM
4.4 Input/Output Pins, Ports, and Circuits
4.4.1 Port 0
4.4.2 Port 1
4.4.3 Port 2
4.4.4 Port 3
4.5 External Memory
4.5.1 Connecting External Memory
4.6 Counters and Timers
4.6.1 Timer Counter Interrupts
4.6.2 Timing
4.6.2 Timer Modes of Operation
4.6.3 Counting
4.7 Serial Data Input/Output
4.7.1 Serial Data Interrupts
4.7.2 Data Transmission
4.7.3 Data Reception
4.7.4 Serial Data Transmission Modes
4.8 Interrupts
4.8.1 Timer Flag Interrupt
4.8.2 Serial Port Interrupt
4.8.3 External Interrupts
4.8.4 Reset
4.8.5 Interrupt Control
4.8.6 Interrupt Priority
4.8.7 Interrupt Destinations
4.8.8 Software-Generated Interrupts
4.9 Summary
4.10 Questions
5 ASSEMBLY LANGUAGE PROGRAMMING CONCEPT
5.1 Objectives
5.2 The Forest and the Trees
5.3 A Generic Computer
5.3.1 Hardware Concepts: The Central Processing Unit
5.3.2 Hardware Concepts: Memory
5.3.3 Software Concepts: Code and Data Memory
5.3.4 Computer Concepts: A Computer Model
5.3.5 Computer Concepts: Starting Up
5.3.6 Computer Concepts: Machine Language
5.3.7 Software Concepts: Assembly Language Mnemonics
5.4 The Mechanics of Programming
5.4.1 Getting Instructions into Code Memory
5.4.2 Computer Languages
5.4.3 Why Use Assembly Language?
5.5 The Assembly Language Programming Process
5.6 The PAL Practice CPU
5.6.1 PAL Instructions
5.7 Programming Tools and Techniques
5.7.1 Understanding Assembly Language Syntax
5.7.2 Understanding the Assembler Program
5.7.3 Understanding the Problem to Be Solved
5.7.4 Designing the Program
5.7.5 Flow Charts
5.7.6 Writing and Testing the Program
5.8 Programming the 8051
5.8.1 Lines of Code
5.8.2 8051 Instruction Syntax
5.9 Summary
5.10 Questions
6 MOVING DATA
6.1 Objectives
6.2 Introduction
6.3 Addressing Modes
6.3.1 Immediate Addressing Mode
6.3.2 Register Addressing Mode
6.3.3 Direct Addressing Mode
6.3.4 Indirect Addressing Mode
6.4 External Data Moves
6.5 Code Memory Read-Only Data Moves
6.6 Push and Pop Opcodes
6.7 Data Exchanges
6.8 Example Problems
6.9 Summary
6.10 Questions
7 LOGICAL OPERATIONS
7.1 Objectives
7.2 Introduction
7.3 Byte-Level Logical Operations
7.4 Bit-Level Logical Operations
7.4.1 Internal RAM Bit Addresses
7.4.2 SFR Bit Addresses
7.4.3 Bit-Level Boolean Operations
7.5 Rotate and Swap Operations
7.6 Example Problems
7.7 Summary
7.8 Questions
8 ARITHMETIC OPERATIONS
8.1 Objectives
8.2 Introduction
8.3 Flags
8.3.1 Instructions Affecting Flags
8.4 Incrementing and Decrementing
8.5 Addition
8.5.1 Unsigned and Signed Addition
8.5.2 Unsigned Addition
8.5.3 Signed Addition
8.5.4 Multiple-Byte Signed Arithmetic
8.6 Subtraction
8.6.1 Unsigned and Signed Subtraction
8.6.2 Unsigned Subtraction
8.6.3 Signed Subtraction
8.7 Multiplication and Division
8.7.1 Multiplication
8.7.2 Division
8.8 Decimal Arithmetic
8.9 Example Problems
8.10 Summary
8.11 Questions
9 JUMP AND CALL INSTRUCTIONS
9.1 Objectives
9.2 Introduction
9.3 The Jump and Call Program Range
9.3.1 Relative Range
9.3.2 Short Absolute Range
9.3.3 Long Absolute Range
9.4 Jumps
9.4.1 Bit Jumps
9.4.2 Byte Jumps
9.4.3 Unconditional Jumps
9.5 Calls and Subroutines
9.5.1 Subroutines
9.5.2 Calls and the Stack
9.5.3 Calls and Returns
9.6 Interrupts and Returns
9.7 More Detail on Interrupts
9.7.1 The Interrupt Enable (IE) Special Function Register
9.7.2 The Enable All Interrupts (EA) Bit
9.7.3 Individual Interrupt Enable Bits
9.7.4 The Interrupt Priority (IP) Special Function Register
9.7.5 Ties
9.7.6 Interrupts and Interrupt Handler Subroutines
9.7.7 The Fine Print
9.7.8 In Conclusion
9.8 Example Problems
9.9 Summary
9.10 Questions
10 AN 8051 MICROCONTROLLER DESIGN
10.1 Objectives
10.2 Introduction
10.3 A Microcontroller Specification
10.4 A Microcontroller Design
10.4.1 External Memory and Memory Space Decoding
10.4.2 Reset and Clock Circuits
10.4.3 Expanding I/O
10.4.4 Memory-Mapped I/O
10.4.5 Memory Address Decoding
10.4.6 Part Speed
10.4.7 Memory Access Times
10.4.8 Production Concerns
10.5 Testing the Design
10.5.1 Crystal Test
10.5.2 ROM Test
10.5.3 RAM Test
10.6 Timing Subroutines
10.6.1 Time Delays
10.6.2 Pure Software Time Delay
10.6.3 Software-Polled Timer
10.6.4 Pure Hardware Delay
10.7 Lookup Tables for the 8051
10.7.1 PC as a Base Address
10.7.2 DPTR as a Base Address
10.8 Serial Data Transmission
10.8.1 Character Transmission Using a Time Delay
10.8.2 Character Transmission by Polling
10.8.3 Interrupt-Driven Character Transmission
10.8.4 Receiving Serial Data
10.8.5 Polling for Received Data
10.8.6 Interrupt-Driven Data Reception
10.9 Summary
10.10 Questions
11 APPLICATIONS
11.1 Objectives
11.2 Introduction
11.3 Keyboards
11.3.1 Human Factors
11.3.2 Key Switch Factors
11.3.3 Keyboard Configurations
11.3.4 Programs for Keyboards
11.3.5 A Scanning Program for Small Keyboards
11.3.6 Interrupt-Driven Programs for Small Keyboards
11.3.7 Program for a Large Matrix Keyboard
11.4 Displays
11.4.1 Seven-Segment Numeric Display
11.4.2 Intelligent LCD Display
11.5 Pulse Measurement
11.5.1 Measuring Frequency
11.5.2 Pulse Width Measurement
11.6 D/A and A/D Conversions
11.6.1 D/A Conversions
11.6.2 A/D Conversion
11.7 Multiple Interrupts
11.7.3 Hardware Circuits for Multiple Interrupts
11.8 Putting It All Together
11.9 Summary
11.10 Questions
12 SERIAL DATA COMMUNICATION
12.1 Objectives
12.2 Introduction
12.3 Network Configurations
12.4 8051 Data Communication Modes Example Programs
12.4.1 Mode 0: Shift Register Mode
12.4.2 Mode 1: Standard 8-Bit UART Mode
12.4.3 Modes 2 and 3: Multiprocessor
12.5 Summary
12.6 Questions
13 THE MOST POPULAR 8051s
13.1 Objectives
13.2 Introduction
13.3 The 8052
13.3.1 Capture Timers
13.3.2 T2 Software Additions
13.3.3 Timer T2 Interrupt
13.3.4 Uses for Timer 2
13.4 Faster and Smaller
13.4.1 Faster
13.4.2 Fastest
13.4.3 Smaller
13.5 Bigger
13.5.1 The XA Family
13.5.2 RAM
13.5.3 ROM
13.5.4 The 80251
13.6 Advanced peripherals on new 8051 variants
13.6.1 Analog to Digital Converter
13.6.2 Digital to Analog Converter
13.6.3 Analog Comparator
13.6.4 Watchdog Timer
13.6.5 Real Time Clock
13.6.6 Pulse Width Modulation
13.6.7 Inter-Integrated Circuit Bus
13.6.8 Serial Peripheral Interconnect Bus
13.6.9 Controller Area Network Bus
13.6.10 Ethernet
13.6.11 USB
13.6.12 RF Link
13.6.13 Other Features and Enhancements
13.7 AT89C51: The Original Descendant
13.7.1 Pin Out and Architecture
13.7.2 Features of AT89C51’s Flash Memory
13.7.3 Programming the AT89C51’s Flash Memory
13.8 AT89C2051: The Baby 8051
13.8.1 Pinout and Architectur
13.8.2 Special Characteristics
13.8.3 Flash Memory Programming
13.8.4 Sample Application: Multiplexed Display
13.9 P89V51RD2: The Versatile Workhorse
13.9.1 Pinout and Architecture
13.9.2 Special Characteristics
13.10 8052-BASIC: BASIC on a Chip
13.10.1 Pinout and Architecture
13.10.2 8052-BASIC: Commands and Statements
13.10.3 Loading Assembly Language Routines
13.10.4 Sample 8052-BASIC System
13.11 Summary
13.12 Questions
14 C PROGRAMMING
14.1 Objectives
14.2 Introduction
14.3 Embedded C
14.3.1 Super Loops
14.3.2 Storage Classes
14.3.3 Absolute Addressing
14.3.4 Memory Models
14.3.5 Compiler Options and Outputs
14.3.6 Bits
14.3.7 Interrupts in C
14.3.8 Mixing Assembly with C
14.4 Summary
14.5 Questions
15 LAB EXERCISES USING THE UNI-51-SDK
15.1 Objectives
15.2 Introduction
15.3 Lab Exercise 1: Blink those LEDs!
15.4 Lab Exercise 2: Reading Switches
15.5 Lab Exercise 3: Brightness control of LEDs using PWM
15.6 Lab Exercise 4: – Serial Communications
15.7 Lab Exercise 5:—Calculator
15.8 Lab Exercise 6: Digital Clock
15.9 Lab Exercise 7 – Digital Thermostat
15.10 Exercises for Practice
APPENDIX A 8051 OPERATIONAL CODE MNEMONICS
A.1 Introduction
A.2 Mnemonics, Arranged by Function
Arithmetic
Logic
Data Moves
Calls and Jumps
Boolean
A.3 Mnemonics, Arranged Alphabetically
Mnemonic Acronyms
A.4 Intel Corporation Mnemonics, Arranged Alphabetically
Acronyms
A.5 8051 Instruction Hexadecimal Codes
APPENDIX B CONTROL REGISTERS
B.1 Introduction
B.2 Control Special-Function Register Figures
B.3 Internal RAM and SFR Addresses
B.4 ASCII Codes for Text and Control Characters—No Parity
APPENDIX C THE 8255 PROGRAMMABLE I/O PORT
C.1 Introduction
C.2 Functional Description
Addressing the 8255
C.3 Programming the 8255
8255 I/O Modes
Reset Condition
APPENDIX D USING KEIL’S C51 TOOLS
D.1 Introduction
D.2 Installing Keil’s C51 Tools
D.3 Keil’s A51 Assembler
The Big Picture
Assembler Directives
Numbers
Labels
Reserved Symbols as Labels
Uppercase and Lowercase
D.4 Using µVision3 IDE
D.5 Running the program on real hardware
D.6 C Programming using Keil C51 Tools
APPENDIX E USING SDCC & FLASHMAGIC
E.1 Introduction
E.2 Installation
Step 1 – Installing SDCC
Step 2 – Installing Java Runtime Environment
Step 3 – Installing Eclipse
Step 4 – Installing EclipseSDCC
Step 5 – Installing FlashMagic
Developing an application
APPENDIX F THE UNI-51-SDK
F.1 Introduction
F.2 Various Sections of the UNI-51-SDK Experimentation Board
F.3 Contents of the UNI-51-SDK Package
F.4 Supported Microcontrollers
F.5 Schematics of UNI-51-SDK Experimentation Board
INDEX