
Because Knetbooks knows college students. Our rental program is designed to save you time and money. Whether you need a textbook for a semester, quarter or even a summer session, we have an option for you. Simply select a rental period, enter your information and your book will be on its way!
| Microcomputer-Based Systems | p. 1 |
| Computer Architecture | p. 2 |
| Embedded Computer Systems | p. 6 |
| The Design Process | p. 10 |
| Top-Down Design | p. 10 |
| Bottom-Up Design | p. 14 |
| Digital Logic and Open Collector | p. 15 |
| Digital Representation of Numbers | p. 20 |
| Fundamentals | p. 20 |
| 8-Bit Numbers | p. 22 |
| Charac... MORE | p. 23 |
| 16-Bit Numbers | p. 23 |
| Fixed-Point Numbers | p. 25 |
| Common Architecture of the 6811 and the 6812 | p. 27 |
| Registers | p. 28 |
| Terminology | p. 29 |
| Addressing Modes | p. 30 |
| Numbering Scheme Used by Freescale for the 6811 and the 6812 | p. 33 |
| 6811 Architecture | p. 33 |
| 6811 Family | p. 33 |
| MC68HC711E9 | p. 35 |
| MC68HC11D3 | p. 37 |
| 6812 Architecture | p. 37 |
| 6812 Family | p. 37 |
| MC9C12C32 | p. 38 |
| MC68HC812A4 | p. 41 |
| MC68HC912B32 | p. 42 |
| Parallel I/O Ports | p. 43 |
| Basic Concepts of Input and Output Ports | p. 43 |
| Introduction to I/O Programming and the Direction Register | p. 46 |
| Our First Design Problem | p. 47 |
| Choosing a Microcontroller | p. 53 |
| Exercises | p. 54 |
| Lab Assignments | p. 56 |
| Design of Software Systems | p. 58 |
| Quality Programming | p. 58 |
| Quantitative Performance Measurements | p. 59 |
| Qualitative Performance Measurements | p. 59 |
| Assembly Language Programming | p. 60 |
| Introduction | p. 60 |
| Assembly Language Syntax | p. 62 |
| Memory and Register Transfer Operations | p. 64 |
| Indexed Addressing Mode | p. 66 |
| Arithmetic Operations | p. 69 |
| Extended Precision Arithmetic Instructions on the 6812 | p. 74 |
| Shift Operations | p. 75 |
| Logical Operations | p. 77 |
| Subroutines and the Stack | p. 78 |
| Branch Operations | p. 82 |
| Assembler Pseudo-ops | p. 84 |
| Memory Allocation | p. 88 |
| Self-Documenting Code | p. 91 |
| Comments | p. 91 |
| Naming Convention | p. 94 |
| Abstraction | p. 95 |
| Definitions | p. 95 |
| 6811 Timer Details | p. 96 |
| 6812 Timer Details | p. 96 |
| Time Delay Software Using the Built-in Timer | p. 97 |
| Moore Finite State Machine Traffic Light Controller | p. 98 |
| Mealy Finite State Machine Robot Controller | p. 101 |
| Modular Software Development | p. 104 |
| Local Variables in Assembly Language | p. 104 |
| Modules | p. 109 |
| Dividing a Software Task into Modules | p. 113 |
| Rules for Developing Modular Software in Assembly Language | p. 116 |
| Layered Software Systems | p. 118 |
| Device Drivers | p. 119 |
| Basic Concept of Device Drivers | p. 119 |
| Design of a Serial Communications Interface (SCI) Device Driver | p. 121 |
| Object-Oriented Interfacing | p. 122 |
| Encapsulated Objects Using Standard C | p. 122 |
| Object-Oriented Interfacing Using C++ | p. 123 |
| Portability Using Standard C and C++ | p. 124 |
| Threads | p. 126 |
| Single-Threaded Execution | p. 126 |
| Multithreading and Reentrancy | p. 126 |
| Recursion | p. 128 |
| Debugging Strategies | p. 128 |
| Debugging Tools | p. 128 |
| Debugging Theory | p. 129 |
| Functional Debugging | p. 131 |
| Performance Debugging | p. 133 |
| Profiling | p. 136 |
| Exercises | p. 137 |
| Lab Assignments | p. 141 |
| Interfacing Methods | p. 142 |
| Introduction | p. 142 |
| Performance Measures | p. 142 |
| Synchronizing the Software with the State of the I/O | p. 143 |
| Variety of Available I/O Ports | p. 146 |
| Handshake protocols | p. 148 |
| 6811 Handshake Protocol | p. 148 |
| MC68HC812A4 Key Wakeup Interrupts | p. 149 |
| MC9S12C32 Key Wakeup Interrupts | p. 150 |
| Blind Cycle Counting Synchronization | p. 151 |
| Blind Cycle Printer Interface | p. 151 |
| Blind Cycle ADC Interface | p. 152 |
| Gadfly or Busy Waiting Synchronization | p. 153 |
| Parallel I/O Interface Examples | p. 155 |
| Blind Cycle Printer Interface | p. 156 |
| Blind Cycle ADC Interface | p. 157 |
| Gadfly Keyboard Interface Using Latched Input | p. 158 |
| Gadfly ADC Interface Using Simple Input | p. 159 |
| Gadfly External Sensor Interface Using Input Handshake | p. 161 |
| Gadfly Printer Interface Using Output Handshake | p. 163 |
| Gadfly Synchronous Serial Interface to a Temperature Sensor | p. 164 |
| Serial Communications Interface (SCI) Device Driver | p. 173 |
| Transmitting in Asynchronous Mode | p. 174 |
| Receiving in Asynchronous Mode | p. 175 |
| 6811 SCI Details | p. 177 |
| 6812 SCI Details | p. 178 |
| SCI Device Driver | p. 179 |
| Exercises | p. 181 |
| Lab Assignments | p. 187 |
| Interrupt Synchronization | p. 189 |
| What Are Interrupts? | p. 190 |
| Interrupt Definition | p. 190 |
| Interrupt Service Routines | p. 191 |
| When to Use Interrupts | p. 192 |
| Interthread Communication | p. 192 |
| Reentrant Programming | p. 197 |
| First-In-First-Out Queue | p. 204 |
| Introduction to FIFOs | p. 204 |
| Two-Pointer FIFO Implementation | p. 205 |
| Two-Pointer/Counter FIFO Implementation | p. 208 |
| FIFO Dynamics | p. 209 |
| General Features of Interrupts on the 6811/6812 | p. 210 |
| 6811 Interrupts | p. 212 |
| 6812 Interrupts | p. 213 |
| Interrupt Vectors and Priority | p. 214 |
| MC68H11E Interrupt Vectors and Priority | p. 214 |
| MC68HC812A4 Interrupt Vectors and Priority | p. 216 |
| MC68HC912B32 Interrupt Vectors and Priority | p. 217 |
| MC9S12C32 Interrupt Vectors and Priority | p. 218 |
| External Interrupt Design Approach | p. 219 |
| Polled Versus Vectored Interrupts | p. 221 |
| Keyboard Interface Using Interrupts | p. 223 |
| Printer Interface Using IRQ Interrupts | p. 226 |
| Power System Interface Using XIRQ Synchronization | p. 229 |
| Interrupt Polling Using Linked Lists | p. 231 |
| 6811 Interrupt Polling Using Linked Lists | p. 232 |
| 6812 Interrupt Polling Using Linked Lists | p. 234 |
| Fixed Priority Implemented Using One Interrupt Line | p. 235 |
| Fixed Priority Implemented Using XIRQ | p. 237 |
| Round-Robin Polling | p. 238 |
| Periodic Polling | p. 238 |
| MC68HC711E9 Periodic Interrupts | p. 240 |
| MC68HC812A4 Periodic Interrupts | p. 243 |
| MC9S12C32 Periodic Interrupts | p. 245 |
| Exercises | p. 249 |
| Lab Assignments | p. 254 |
| Threads | p. 255 |
| Multithreaded Preemptive Scheduler | p. 256 |
| Round-Robin Scheduler | p. 257 |
| Other Scheduling Algorithms | p. 262 |
| Dynamic Allocation of Threads | p. 262 |
| Semaphores | p. 262 |
| Spin-Lock Semaphore Implementation | p. 263 |
| Blocking Semaphore Implementation | p. 265 |
| Applications of Semaphores | p. 267 |
| Thread Synchronization or Rendezvous | p. 268 |
| Resource Sharing, Nonreentrant Code or Mutual Exclusion | p. 268 |
| Thread Communication Between Two Threads Using a Mailbox | p. 268 |
| Thread Communication Between Many Threads Using a FIFO Queue | p. 268 |
| Fixed Scheduling | p. 269 |
| Exercises | p. 274 |
| Lab Assignments | p. 275 |
| Timing Generation and Measurements | p. 276 |
| Input Capture | p. 276 |
| Basic Principles of Input Capture | p. 276 |
| Input Capture Details | p. 277 |
| Real Time Interrupt Using an Input Capture | p. 281 |
| Period Measurement | p. 283 |
| Pulse-Width Measurement | p. 288 |
| Output Compare | p. 294 |
| General Concepts | p. 294 |
| Output Compare Details | p. 295 |
| Square-Wave Generation | p. 298 |
| Pulse-Width Modulation | p. 301 |
| Delayed Pulse Generation | p. 303 |
| Frequency Measurement | p. 304 |
| Frequency Measurement Concepts | p. 304 |
| Frequency Measurement with [Delta]f = 100Hz | p. 305 |
| Conversion Between Frequency and Period | p. 306 |
| Using Period Measurement to Calculate Frequency | p. 306 |
| Using Frequency Measurement to Calculate Period | p. 307 |
| Measurements Using Both Input Capture and Output Compare | p. 307 |
| Period Measurement with [Delta]p = 1 ms | p. 307 |
| Frequency Measurement with [Delta]f = 0.1Hz | p. 309 |
| Pulse Accumulator | p. 311 |
| MC68HC711 Pulse Accumulator Details | p. 311 |
| MC9S12C32 Pulse Accumulator Details | p. 312 |
| Frequency Measurement | p. 313 |
| Pulse-Width Measurement | p. 314 |
| Pulse-width Modulation on the MC9S12C32 | p. 314 |
| Exercises | p. 318 |
| Lab Assignments | p. 323 |
| Serial I/O Devices | p. 326 |
| Introduction and Definitions | p. 326 |
| RS232 Specifications | p. 332 |
| RS422/USB/RS423/RS485 Balanced Differential Lines | p. 334 |
| RS422 Output Specifications | p. 337 |
| RS422 Input Specifications | p. 338 |
| RS485 Half-Duplex Channel | p. 338 |
| Other Communication Protocols | p. 339 |
| Current Loop Channel | p. 339 |
| Introduction to Modems | p. 339 |
| Optical Channel | p. 340 |
| Digital Logic Channel | p. 340 |
| Serial Communications Interface | p. 341 |
| Transmitting in Asynchronous Mode | p. 341 |
| Receiving in Asynchronous Mode | p. 343 |
| MC68HC711E9 SCI Details | p. 345 |
| MC9S12C32 SCI Details | p. 346 |
| SCI Software Interfaces | p. 349 |
| Full Duplex Serial Channel | p. 349 |
| Use of Data Terminal Ready (DTR) to Interface a Printer | p. 352 |
| Use of XON/XOFF to Interface a Printer | p. 354 |
| Synchronous Transmission and Receiving Using the SPI | p. 355 |
| SPI Fundamentals | p. 355 |
| MC68HC711E9 SPI Details | p. 358 |
| MC9S12C32 SPI Details | p. 359 |
| SPI Applications | p. 361 |
| Exercises | p. 368 |
| Lab Assignments | p. 370 |
| Parallel Port Interfaces | p. 375 |
| Input Switches and Keyboards | p. 375 |
| Interfacing a Switch to the Computer | p. 375 |
| Hardware Debouncing Using a Capacitor | p. 377 |
| Software Debouncing | p. 381 |
| Basic Approaches to Interfacing Multiple Keys | p. 386 |
| Sixteen-Key Electronic Piano | p. 389 |
| 4 by 4 Scanned Keyboard | p. 393 |
| Multiplexed/Demultiplexed Scanned Keyboard | p. 396 |
| Output LEDs | p. 398 |
| Single LED Interface | p. 400 |
| Seven-Segment LED Interfaces | p. 402 |
| Scanned Seven-Segment LED Interface | p. 402 |
| Scanned LED Interface Using the 7447 Seven-Segment Decoder | p. 405 |
| Integrated LED Interface Using the MC14489 Display Driver | p. 408 |
| Liquid Crystal Displays | p. 410 |
| LCD Fundamentals | p. 410 |
| Simple LCD Interface with the MC14543 | p. 412 |
| Scanned LCD Interface with the MC145000, MC145001 | p. 414 |
| Parallel Port LCD Interface with the HD44780 Controller | p. 416 |
| Transistors Used for Computer-Controlled Current Switches | p. 419 |
| Computer-Controlled Relays, Solenoids, and DC Motors | p. 421 |
| Introduction to Relays | p. 421 |
| Electromagnetic Relay Basics | p. 422 |
| Reed Relays | p. 424 |
| Solenoids | p. 424 |
| Pulse-Width Modulated DC Motors | p. 424 |
| Interfacing EM Relays, Solenoids, and DC Motors | p. 425 |
| Solid-State Relays | p. 430 |
| Stepper Motors | p. 431 |
| Stepper Motor Example | p. 431 |
| Basic Operation | p. 434 |
| Stepper Motor Hardware Interfaces | p. 438 |
| Stepper Motor Shaft Encoder | p. 441 |
| Exercises | p. 443 |
| Lab Assignments | p. 446 |
| Memory Interfacing | p. 448 |
| Introduction | p. 448 |
| Address Decoding | p. 451 |
| Full-Address Decoding | p. 452 |
| Minimal-Cost Address Decoding | p. 454 |
| Special Cases When Address Decoding | p. 457 |
| Flexible Full-Address Decoder | p. 458 |
| Integrated Address Decoder on the MC68HC812A4 | p. 459 |
| Timing Syntax | p. 461 |
| Available and Required Time Intervals | p. 461 |
| Timing Diagrams | p. 463 |
| General Memory Bus Timing | p. 463 |
| Synchronous Bus Timing | p. 464 |
| Partially Asynchronous Bus Timing | p. 465 |
| Fully Asynchronous Bus Timing | p. 466 |
| External Bus Timing | p. 468 |
| Synchronized Versus Unsynch-ronized Signals | p. 468 |
| Freescale MC68HC11A8 External Bus Timing | p. 469 |
| Freescale MC68HC812A4 External Bus Timing | p. 472 |
| Freescale MC9S12C32 External Bus Timing | p. 477 |
| General Approach to Interfacing | p. 483 |
| Interfacing to a 6811 | p. 483 |
| Interfacing to a 6812 in Expanded Narrow Mode | p. 484 |
| Interfacing to a 6812 in Expanded Wide Mode | p. 485 |
| Memory Interface Examples | p. 487 |
| 32K PROM Interface | p. 487 |
| 8K RAM Interface | p. 492 |
| 32K by 16-bit PROM Interface to a MC68HC812A4 | p. 505 |
| 8K by 16-bit RAM Interface | p. 507 |
| Extended Address Data Page Interface to the MC68HC812A4 | p. 509 |
| Extended Address Program Page Interface to the MC68HC812A4 | p. 511 |
| Dynamic RAM (DRAM) | p. 514 |
| Exercises | p. 514 |
| Lab Assignments | p. 523 |
| High-Speed I/O Interfacing | p. 524 |
| The Need for Speed | p. 524 |
| High-Speed I/O Applications | p. 525 |
| Mass Storage | p. 525 |
| High-Speed Data Acquisition | p. 526 |
| Video Displays | p. 527 |
| High-Speed Signal Generation | p. 527 |
| Network Communications | p. 527 |
| General Approaches to High-Speed Interfaces | p. 528 |
| Hardware FIFO | p. 528 |
| Dual Port Memory | p. 529 |
| Bank-Switched Memory | p. 529 |
| Fundamental Approach to DMA | p. 530 |
| DMA Cycles | p. 530 |
| DMA Initiation | p. 531 |
| Burst Versus Cycle Steal DMA | p. 531 |
| Single-Address Versus Dual-Address DMA | p. 532 |
| DMA Programming | p. 534 |
| LCD Graphics | p. 535 |
| LCD Graphics Controller | p. 535 |
| Practical LCD Graphics Interface | p. 538 |
| Exercises | p. 539 |
| Lab Assignments | p. 540 |
| Analog Interfacing | p. 541 |
| Resistors and Capacitors | p. 541 |
| Resistors | p. 541 |
| Capacitors | p. 542 |
| Operational Amplifiers (Op Amps) | p. 543 |
| Op Amp Parameters | p. 543 |
| Threshold Detector | p. 546 |
| Simple Rules for Linear Op Amp Circuits | p. 547 |
| Linear Mode Op Amp Circuits | p. 549 |
| Instrumentation Amplifier | p. 553 |
| Current-to-Voltage Circuit | p. 555 |
| Voltage-to-Current Circuit | p. 555 |
| Integrator Circuit | p. 555 |
| Derivative Circuit | p. 556 |
| Voltage Comparators with Hysteresis | p. 556 |
| Analog Isolation | p. 557 |
| Analog Filters | p. 558 |
| Simple Active Filter | p. 558 |
| Butterworth Filters | p. 559 |
| Bandpass and Band-Reject Filters | p. 560 |
| Digital-to-Analog Converters | p. 561 |
| DAC Parameters | p. 561 |
| DAC Using a Summing Amplifier | p. 563 |
| Three-Bit DAC with an R-2R Ladder | p. 564 |
| Twelve-Bit DAC with a DAC8043 | p. 566 |
| DAC Selection | p. 567 |
| DAC Waveform Generation | p. 570 |
| Analog-to-Digital Converters | p. 573 |
| ADC Parameters | p. 573 |
| Two-Bit Flash ADC | p. 574 |
| Successive Approximation ADC | p. 575 |
| Sixteen-Bit Dual Slope ADC | p. 576 |
| Sigma Delta ADC | p. 577 |
| ADC Interface | p. 578 |
| Sample and Hold | p. 579 |
| BiFET Analog Multiplexer | p. 580 |
| ADC System | p. 582 |
| ADC Block Diagram | p. 582 |
| Power and Grounding for the ADC System | p. 584 |
| Input Protection for High-Speed CMOS Analog Inputs | p. 584 |
| Multiple-Access Circular Queue | p. 585 |
| Internal ADCs | p. 587 |
| 6811 ADC System | p. 587 |
| 6812 ADC System | p. 589 |
| ADC Software | p. 591 |
| Exercises | p. 593 |
| Lab Assignments | p. 595 |
| Data Acquisition Systems | p. 597 |
| Introduction | p. 597 |
| Accuracy | p. 599 |
| Resolution | p. 601 |
| Precision | p. 601 |
| Reproducibility or Repeatability | p. 602 |
| Transducers | p. 602 |
| Static Transducer Specifications | p. 602 |
| Dynamic Transducer Specifications | p. 606 |
| Nonlinear Transducers | p. 607 |
| Position Transducers | p. 608 |
| Velocity Measurements | p. 609 |
| Force Transducers | p. 611 |
| Temperature Transducers | p. 612 |
| DAS Design | p. 617 |
| Introduction and Definitions | p. 617 |
| Using Nyquist Theory to Determine Sampling Rate | p. 618 |
| How Many Bits Does One Need for the ADC? | p. 621 |
| Specifications for the Analog Signal Processing | p. 621 |
| How Fast Must the ADC Be? | p. 626 |
| Specifications for the S/H | p. 626 |
| Analysis of Noise | p. 627 |
| Thermal Noise | p. 627 |
| Shot Noise | p. 630 |
| 1/f, or Pink Noise | p. 630 |
| Galvanic Noise | p. 630 |
| Motion Artifact | p. 630 |
| Electromagnetic Field Induction | p. 631 |
| Techniques to Measure Noise | p. 631 |
| Techniques to Reduce Noise | p. 633 |
| Data Acquisition Case Studies | p. 635 |
| Temperature Measurement | p. 635 |
| EKG Data Acquisition System | p. 639 |
| Position Measurement System | p. 642 |
| Exercises | p. 643 |
| Lab Assignments | p. 650 |
| Microcomputer-Based Control Systems | p. 652 |
| Introduction to Digital Control Systems | p. 652 |
| Open-Loop Control Systems | p. 653 |
| Open-Loop Control of a Toaster | p. 654 |
| Open-Loop Robotic Arm | p. 654 |
| Simple Closed-Loop Control Systems | p. 659 |
| Bang-Bang Temperature Control | p. 659 |
| Closed-Loop Position Control System Using Incremental Control | p. 661 |
| PID Controllers | p. 663 |
| General Approach to a PID Controller | p. 663 |
| Design Process for a PID Controller | p. 666 |
| Velocity PID Controller | p. 668 |
| Proportional-Integral Controller with a PWM actuator | p. 669 |
| Fuzzy Logic Control | p. 672 |
| DAC, ADC Fuzzy Controller | p. 675 |
| PWM Fuzzy Controller | p. 681 |
| Temperature Controller Using Fuzzy Logic | p. 687 |
| Exercises | p. 691 |
| Lab Assignments | p. 694 |
| Simple Networks | p. 696 |
| Introduction | p. 696 |
| Communication Systems Based on the SCI Serial Port | p. 698 |
| Design and Implementation of a Controller Area Network (CAN) | p. 700 |
| The Fundamentals of CAN | p. 700 |
| Details of the 9S12C32 CAN | p. 703 |
| 9S12C32 CAN Device Driver | p. 706 |
| Inter-Integrated Circuit (I[superscript 2]C) Network | p. 709 |
| The Fundamentals of the I[superscript 2]C Network | p. 709 |
| I[superscript 2]C Synchronization | p. 712 |
| 9S12 I[superscript 2]C Details | p. 714 |
| 9S12 I[superscript 2]C Single Master Example | p. 717 |
| Modem Communications | p. 718 |
| FSK Modem | p. 718 |
| Phase-Encoded Modems | p. 721 |
| Quadrature Amplitude Modems | p. 722 |
| X-10 Protocol | p. 723 |
| Universal Serial Bus (USB) | p. 730 |
| Introduction | p. 730 |
| Modular USB Interface | p. 734 |
| Integrated USB Interface | p. 735 |
| Exercises | p. 735 |
| Lab Assignments | p. 739 |
| Digital Filters | p. 742 |
| Basic Principles | p. 743 |
| Simple Digital Filter Examples | p. 745 |
| Impulse Response | p. 752 |
| High-Q 60-Hz Digital Notch Filter | p. 755 |
| Effect of Latency on Digital Filters | p. 760 |
| High-Q Digital High-Pass Filters | p. 762 |
| Digital Low-Pass Filter | p. 763 |
| Direct-Form Implementations | p. 765 |
| Exercises | p. 766 |
| Lab Assignments | p. 767 |
| Appendix 1 | p. 769 |
| Appendix 2 | p. 789 |
| Index | p. 802 |
| Table of Contents provided by Ingram. All Rights Reserved. |