We use cookies to enhance your experience on our website. By continuing to use our website, you are agreeing to our use of cookies. You can change your cookie settings at any time. Find out more

Microcontrollers and Microcomputers Principles of Software and Hardware Engineering

Second Edition

Frederick M Cady

Publication Date - June 2009

ISBN: 9780195371611

496 pages
7 1/2 X 9 1/4 inches

In Stock

Retail Price to Students: $119.95

While most texts discuss only one specific microcontroller, this book offers a unique approach by covering the common ground among all microcontrollers in one volume.


Microcontrollers and Microcomputers: Principles of Software and Hardware Engineering, Second Edition, is an ideal introductory text for an embedded system or microcontroller course. While most texts discuss only one specific microcontroller, this book offers a unique approach by covering the common ground among all microcontrollers in one volume.
Since the text does not focus on a particular processor, it can be used with processor-specific material--such as manufacturer's data sheets and reference manuals--or with texts, including author Fredrick M. Cady's Software and Hardware Engineering: Motorola M68HC11 or Software and Hardware Engineering: Motorola M68HC12. Now fully updated, the second edition covers the fundamental operation of standard microcontroller features, including parallel and serial I/O interfaces, interrupts, analog-to-digital conversion, and timers, focusing on the electrical interfaces as needed. It devotes one chapter to showing how a variety of devices can be used, and emphasizes C program software development, design, and debugging.

Previous Publication Date(s)

February 1997

Table of Contents

    1: Introduction
    1.1 Computers, Microprocessors, Microcomputers, Microcontrollers
    1.2 Moore's Law
    1.3 Microcontrollers
    1.4 Some Basic Definitions
    1.5 Notation
    1.6 Study Plan
    2: General Principles of Microcontrollers
    2.1 Introduction
    2.2 A Typical Microcontroller
    2.3 The Picocontroller
    2.4 The Microcontroller's Memory
    2.5 The Central Processor Unit
    2.6 Timing
    2.7 The I/O Interface
    2.8 The Address, Data, and Control Buses
    2.9 Some More Instructions
    2.10 The Final Picocontroller Design
    2.11 Software/Firmware Development
    2.12 The Software Development Tool Set
    2.13 Remaining Questions
    2.14 Conclusion and Chapter Summary Points
    2.15 Problems
    3: Structured Program Design
    3.1 The Need for Software Design
    3.2 The Software Development Process
    3.3 Top-Down Design
    3.4 Design Partitioning
    3.5 Bottom-Up Design
    3.6 The Real-World Approach
    3.7 Types of Design Activity
    3.8 Design Tools
    3.10 Structured Programming in Assembly Language
    3.11 Program Comments
    3.12 Software Documentation
    3.13 A Top Down Design Example
    3.14 Chapter Summary Points
    3.15 Bibliography and Further Reading
    3.16 Problems
    4: Introduction to the CPU: Registers and Condition Codes
    4.1 Introduction
    4.2 CPU Registers
    4.3 Register Transfers
    4.4 The Condition Code Register
    4.5 The Programmer's Model
    4.6 Conclusion and Chapter Summary Points
    4.7 Problems
    5: Memory Addressing Modes
    5.1 Introduction
    5.2 Addressing Terminology
    5.3 Memory Types
    5.4 Computer Types and Memory Maps
    5.5 Memory Architectures
    5.6 Addressing Modes
    5.7 Stack Addressing
    5.8 Chapter Conclusion and Summary Points
    5.9 Problems
    6: Assembly Language Programming
    6.1 Assembly Language Programming Style
    6.2 Structured Assembly Language Programming
    6.3 Interprocess Communication
    6.4 Assembly Language Tricks of the Trade
    6.5 Making it Look Pretty
    6.6 Conclusion and Chapter Summary Points
    6.7 Bibliography and Further Reading
    6.8 Problems
    7: C Programming for Embedded Systems
    7.1 Introduction
    7.2 Major Differences between C for Embedded and Desktop Applications
    7.3 Architecture of a C Program
    7.4 Assembly Language Interface
    7.5 Bits and Bytes - Accessing I/O Registers
    7.6 Interrupts
    7.7 Conclusion and Chapter Summary Points
    7.8 Bibliography and Further Reading
    7.9 Problems
    8: Debugging Microcontroller Software and Hardware
    8.1 Introduction
    8.2 Program Debugging
    8.3 Debugging Your Code
    8.4 Debugging Tools
    8.5 Typical Assembly Language Program Bugs
    8.6 Debugging and Testing C Programs
    8.7 Other Debugging Techniques
    8.8 Conclusion and Chapter Summary Points
    8.9 Bibliography and Further Reading
    8.10 Problems
    9: Computer Buses and Parallel I/O
    9.1 Introduction
    9.2 The Computer Bus
    9.3 I/O Addressing
    9.4 More Bus Ideas
    9.5 Microcontroller I/O
    9.6 More I/O Ideas
    9.7 I/O Software
    9.8 Conclusion and Chapter Summary Points
    9.9 Problems
    10: Interrupts and Real-Time Events
    10.1 Introduction
    10.2 The Interrupt Process
    10.3 Multiple Sources of Interrupts
    10.4 Simultaneous Interrupts - Priorities
    10.5 Nested Interrupts
    10.6 Other Interrupts
    10.7 The Interrupt Service Routine or Interrupt Handler
    10.8 An Interrupt Program Template
    10.9 Advanced Interrupts
    10.10 Watchdog Timer or Computer Operating Properly (COP)
    10.11 Real-Time Interrupt
    10.12 Conclusion and Chapter Summary Points
    10.13 Problems
    11: Memory
    11.1 Introduction
    11.2 A Short History of Random-Access Memory
    11.3 Semiconductor Memory
    11.4 Memory Timing Requirements
    11.5 Chapter Conclusion and Summary Points
    11.6 Problems
    12: Serial I/O
    12.1 Introduction
    12.2 The Asynchronous Serial Communication System
    12.3 Standards for the Asynchronous Serial I/O Interface
    12.4 Asynchronous Serial Hardware Interfaces
    12.5 ASCII Data and Control Codes
    12.6 Asynchronous Data Flow Control
    12.7 Debugging and Trouble Shooting
    12.8 Asynchronous Serial I/O Software
    12.9 Synchronous Serial Peripheral Interface (SPI)
    12.10 SPI Interface Examples
    12.11 Inter-Integrated Circuit (IIC or I2C)
    12.12 The Controller Area Network (CAN) Bus
    12.13 Conclusion and Chapter Summary Points
    12.14 Problems
    13: Analog Input and Output
    13.1 Introduction
    13.2 Data Acquisition and Conversion
    13.3 Shannon's Sampling Theorem and Aliasing
    13.4 A/D Errors
    13.5 Choosing the A/D Converter
    13.6 The Analog-to-Digital Converter Interface
    13.7 Analog-to-Digital Converter Types
    13.8 Digital-to-Analog Conversion
    13.9 Other Analog I/O Methods
    13.1 Conclusion and Chapter Summary Points
    13.11 Problems
    14: Counters and Timers
    14.1 Introduction
    14.2 The Timer/Counter
    14.3 Pulse-Width Modulation (PWM) Waveforms
    14.4 "Real" Real-Time Clock - Clock Time
    14.5 Conclusion and Chapter Summary Points
    14.6 Problems
    15: Single-Chip Microcontroller Interfacing Techniques
    15.1 Microcontroller Chip I/O
    15.2 Simple Input Devices
    15.3 Simple Display Devices
    15.4 Parallel I/O Expansion
    15.5 Parallel I/O Electronics
    15.6 Temperature Measurements
    15.7 Motor Control
    15.8 Conclusion and Chapter Summary Points
    15.9 Bibliography and Further Reading
    15.10 Problems
    16: Real-Time Operating Systems
    16.1 Introduction
    16.2 The Real-Time Operating System (RTOS)
    16.3 Conclusion and Chapter Summary Points
    16.4 Bibliography and Further Reading
    16.5 Problems
    Appendix A: Binary Codes
    A.1 Binary Codes Review
    A.2 Problems