A variety of aspects of the design and implementation of microcontrollers are presented. The book is divided into two major parts. The first part (chapters 1 to 4) describes general principles of microcontroller architecture, structure, and programming. The second part (chapters 5 to 7) is devoted to a presentation of selected modern microcontrollers, including practical design examples.
The book is mainly a textbook for senior-level or graduate courses on microcontrollers. Chapter 1 presents microcontroller architecture as a particular case of computer and microprocessor architectures. The distinction among them lies primarily in three areas: the I/O capabilities, the interrupt handling capability, and the instruction set. Each area is examined thoroughly.
The second chapter is devoted to a detailed presentation of a microcontroller instruction set: the structure of instructions, the modes of addressing operands, and the functions of instructions. SISC, RISC, and CISC computers are compared. The chapter ends with a comparison of the specific instruction sets of four representative 8- to 32-bit microcontrollers and a brief discussion of relay logic and ladder diagrams and their relation to programming a microcontroller.
Chapter 3 presents controller software design. The authors define a set of actions common to different microcontrollers (in fact, an abstract, hypothetical microcontroller) and present two general design models for microcontroller software: state tables and Petri tables. One model is suitable for applications of the control flow approach, and the other is suitable for the dataflow approach. Several small examples of Petri nets show the conversion from Petri nets to Petri tables. A more comprehensive example is also given.
Microcontroller software implementation is discussed in chapter 4. The authors show how individual transitions in the Petri table can be converted into executable code in assembly language or in a high-level language. Elements of real-time kernels are also presented. C is recommended at least for the first version of the code. After the code has been demonstrated to be operational, one can apply other techniques to reduce the size, the execution time, or both. The authors present the INTROL cross-compiler and cross-assembler to demonstrate the principles of writing, compiling, linking, and downloading executable code into a target microcontroller system.
Chapter 5 surveys 4- and 8-bit microcontrollers, highlighting the architectural characteristics of the various families. Microcontrollers from Motorola, Intel, NEC, and Texas Instruments are included. The Motorola MC68HC11 is presented in more detail, since it is representative of the capabilities of 8-bit microcontrollers.
Sixteen-bit microcontrollers are presented in chapter 6, which covers the Intel MCS-96 microcontroller family and the Motorola MC68332. The description is concluded by a design example--an 80C196KB-based command and telemetry interface unit.
Chapter 7 presents four 32-bit microcontrollers designed to serve as embedded processors: the Intel 80960CA, LSI Logic LR33000, AMD Am29050, and National Semiconductor NS32SF641. Several 80960CA-based examples are given: a disk drive controller, a packetized audio mixer, and a universal processor board. They were worked out by graduate students and reviewed by professionals at Intel.
Concluding comments are given in chapter 8. Appendices list source code in assembly language and C for some of the worked examples.
A useful list of abbreviations and an index are included. A recommended bibliography and proposed exercises are included in each chapter.
The goal of the book is to present a uniform view of microcontrollers. The authors fulfill this goal by using the design and implementation of various applications as a vehicle. Thus, the presentation of actual microcontrollers with different capabilities becomes natural.
The book is intended for students, practicing engineers, computer scientists, and other professionals involved in the design and implementation of microcontrollers. They must be familiar with the organization of a computer and at least one assembly language and one high-level programming language.