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

Oxford University Press is a department of the University of Oxford. It furthers the University's objective of excellence in research, scholarship, and education by publishing worldwide.

Print Price: $214.99

Format:
Paperback
496 pp.
8 b/w halftones, 243 line drawings, 7 1/2" x 9 1/4"

ISBN-13:
9780195371611

Copyright Year:
2010

Imprint: OUP US


Microcontrollers and Microcomputers

Principles of Software and Hardware Engineering, Second Edition

Frederick M. Cady

This book takes a unique "processor-agnostic" approach to teaching the core course on microcontrollers or embedded systems, taught at most schools of electrical and computer engineering. Most books for this course teach students using only one specific microcontroller in the class. Cady, however, studies the common ground between microcontrollers in one volume. As there is no other book available to serve this purpose in the classroom, readership is broadened to anyone who accepts its pedagogical value, not simply those courses that use the same microcontroller. Because the text is purposefully processor non-specific, it can be used with processor-specific material, such as manufacturer's data sheets and reference manuals, or with texts such as Software and Hardware Engineering: Motorola M68HC11 or Software and Hardware Engineering: Motorola M68HC12. The fundamental operation of standard microcontroller features such as parallel and serial I/O interfaces, interrupts, analog-to-digital conversion, and timers is covered, with attention paid to the electrical interfaces needed.

Readership : Suitable for Microcontrollers, undergrad Computer Engineering, undergrad Electrical Engineering, and first year undergrad Computer Science, embedded systems or microcontrollers.

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.10 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

There are no Instructor/Student Resources available at this time.

Fredrick M. Cady is an Emeritus Professor of Electrical and Computer Engineering at Montana State University. He has been honored with several teaching awards, including MSU Bozeman Mortar Board Professor of the Month, MSU Alumni-Chamber of Commerce Award for Excellence, and the Phi Kappa Phi Anna Krueger Fridley Award for Distinguished Teaching.

Special Features

  • Not processor specific - can be used in any course.
  • Covers both structured program design and hardware interface design, including interface electronics.