Microprocessor Architecture, Programming, and Applications with the 8085
This book was first published in 1984, and it has been in the field for the last eighteen years. The microprocessor concepts that were at the cutting edge of the technology in the 1970s and '80s have become fundamentals of the computer field. It is gratifying to see such acceptance of the integrated approach to teaching microprocessor concepts. The text is intended for introductory microprocessor courses at the undergraduate level in technology and engineering. It is a comprehensive treatment of the microprocessor, covering both hardware and software based on the 8085 microprocessor family. The text assumes a course in digital logic as a prerequisite; however, it does not assume any background in programming. At the outset, though; we need to answer the following three critical questions.
1. In the early years of the twenty-first century, is an 8-bit microprocessor an appropriate device through which to teach microprocessor concepts when 32- and 64-bit microprocessors are readily available?If we consider the worldwide sales volume of microprocessor chips, the answer is a resounding yes: 8-bit microprocessors (including single-chip microcontrollers) account for more than 90 percent of the total. The 8-bit microprocessor has already established its market in the areas of industrial control, such as machine control, process control, instrumentation, and consumer appliances; these systems that include a microprocessor are known as embedded systems or microprocessor-based products. The recent 32- and 64-bit microprocessors are used primarily in microcomputers and workstations; they are so powerful that their applications are better suited to such tasks as high-speed data processing, CAD/CAM, multitasking, and multiuser systems. The 32- or 64-bit microprocessors are less likely to replace 8-bit microprocessors in industrial control applications.
From the teaching point of view, we are interested in teaching the basic concepts underlying a programmable device, such as buses, machine cycles, various processes of data flow (parallel, serial, interrupts, and DMA), internal register architecture, programming, and interfacing. A general-purpose 8-bit microprocessor is an ideal device to teach these concepts, especially in a rapidly changing technological environment. When students master the basic concepts, they will be able to apply those concepts in such an environment, whether it is based on a microcontroller, an 8-bit processor with a different set of instructions, or a 64-bit processor.
2. Why shouldn't we focus on the Intel high-end 32- or 64-bit processors when PCs (personal computers) are commonly available in college laboratories?This is similar to asking why shouldn't we use LSI devices to teach basic logic concepts of AND, NAND, and OR. To teach basic concepts, we need a simple processor with an adequate instruction set. The Intel high-end processors are too difficult to comprehend at the introductory level because of their complex architecture and large instruction set. They are suitable for high-level languages and handling large databases and graphics. These processors are used primarily in PCs and network servers.
3. Why teach the 8085 microprocessor?This question has several answers. One is that any 8-bit microprocessor that is commonly available will meet the teaching criteria, and another is that the 8085 is one of the most widely used microprocessors in college laboratories. It has simple architecture and an adequate instruction set that enable instructors to teach necessary programming concepts. It is inconsequential which microprocessor is selected as the focus; the concepts are easily transferable from one device to another. Having learned basic concepts with the 8085 microprocessor, students can adapt to the microcontroller environment (such as the Intel 8051 or Motorola 68HC 11) or to the PC environment. Furthermore, peripheral devices (such as the 8255A, 8254, and 8259) are commonly used in the PC environment. One can argue for a microcontroller as a basis for an introductory course. However, the experience, of many institutions suggest that a microcontroller is an appropriate device for a higher-level course; at an introductory level, the pedagogy becomes quite cumbersome. Furthermore, general-purpose 8-bit processors are now being used in small systems such as graphic calculators, coffee machines, home appliances, and serving web pages over a TCP/IP network.PEDAGOGICAL APPROACH AND TEXT ORGANIZATION
The microprocessor is a general-purpose programmable logic device. A thorough understanding of the microprocessor demands concepts and skills from two different disciplines: hardware concepts from electronics and programming skills from computer science. Hardware is the physical structure of the microprocessor, and the programming makes it come alive; one without the other is meaningless. Therefore, this text presents an integrated approach to hardware and software in the context of the 8085 microprocessor. Part I focuses on the microprocessor architecture, the 8085 instruction set, and interfacing; Part II introduces programming; and Part III integrates hardware and software concepts from the earlier sections in interfacing and designing microprocessor-based products. Each topic is covered in depth from basic concepts to industrial applications and is illustrated by numerous examples with complete schematics. The material is supported with assignments of practical applications.
Part I has five chapters dealing with the hardware aspects of the microcomputer as a system, presented with the spiral approach that is similar to the view from an airplane that is getting ready to land. As the plane circles around, what one observes is a view without any details. As the plane starts descending, one begins to see more details. This approach is preferable because students need to use a microcomputer as a system in their laboratory work in the early stages of a course, without having an understanding of all aspects of the system. Chapter 1 presents an overview of microprocessor-based systems with an illustration of a microprocessor-controlled temperature system (MCTS). It presents the 8-bit microprocessor as a programmable device and an embedded controller, rather than a computing device or CPU used in computers. Chapter 2 introduces the instruction set of the 8085 processor. Chapters 3, 4, and 5 examine microprocessor architecture, memory, and I/O, with each chapter having increasing depth-from registers to instruction timing and interfacing.
Part II has six chapters dealing with 8085 instructions, programming techniques, program development, and software development systems. The contents are presented in a step-by-step format. A few instructions that can perform a simple task are selected. Each instruction is described fully with illustrations of its operations and its effects on the selected flags. Then these instructions are used in writing programs, accompanied by programming techniques and troubleshooting hints. Each illustrative program begins with a problem statement, provides the analysis of the problem, illustrates the program, and explains the programming steps. The chapters conclude with reviews of all the instructions discussed. The contents of Part II are presented in such a way that, in a course with heavy emphasis on hardware, students can teach themselves assembly language programming if necessary.
Part III synthesizes the hardware concepts of Part I and the software techniques of Part II. It deals with the interfacing of I/Os, with numerous industrial and practical examples. Each illustration analyzes the hardware, includes software, and describes how hardware and software work together to accomplish given objectives. Chapters 12 through 16 include various types of data transfer between the microprocessor and its peripherals such as interrupts, interfacing of data converters, I/O with handshake signals using programmable devices, and serial I/O. Chapter 14 discusses special-purpose programmable devices used primarily with the 8085 systems (such as the 8155), while Chapter 15 discusses general-purpose programmable devices (such as the 8255A, 8254, 8259, and 8237). Chapter 17 deals primarily with the project design of a single-board microcomputer that brings together all the concepts discussed in the text. Chapter 18 discusses trends in microprocessor technology ranging from recent microcontrollers to the latest general-purpose 32- and 64-bit microprocessors.NEW AND IMPROVED FEATURES IN THE FIFTH EDITION
The fifth edition preserves the focus as described and includes the following changes and additions, suggested by reviewers and by faculty who have used the book in their classrooms:
This text is based on my teaching experience, my course development efforts, and my association with industry engineers and programmers. It is an attempt to share my classroom experiences and my observations of industrial practices. Some of my assumptions and observations of eighteen years ago appear still valid today:
In the last eighteen years, numerous faculty members have shared their classroom experiences, concerns, and student difficulties with me through letters and e-mail messages. I have made every effort to incorporate those concerns and suggestions in the fifth edition. This revised edition can be used flexibly to meet the objectives of various courses at the undergraduate level. If used for a one-semester course with 50 percent hardware and 50 percent software emphasis, the following chapters are recommended: Chapters 1 through 5 for hardware lectures and Chapters 6 through 9 and selected sections of Chapter 10 for software laboratory sessions. For interfacing, the initial sections of Chapters 12 and 16 (introduction to interrupts and serial I/O) are recommended. If the course is heavily oriented toward hardware, Chapters 1 through 5 and Chapters 12 through 17 are recommended, and necessary programs can be selected from Chapters 6 through 9. If the course is heavily oriented toward software, Chapters 1 through 11 and selected portions of Chapters 12 and 16 can be used. For a two-semester course, it is best to use the entire text.A WORD WITH STUDENTS
The microprocessor is an exciting, challenging, and growing field; it will pervade industry for decades to come. To meet the challenges of this growing technology, you will have to be conversant with the programmable aspect of the microprocessor. Programming is a process of problem solving and communication in the language of mnemonics. Most often, hardware-oriented students find this communication process difficult. One of the questions frequently asked by students is: How do I get started in a given programming assignment? One approach to learning programming is to examine various types of programs and imitate them. You can begin by studying the illustrative program relevant to an assignment, its flowchart, its analysis, program description, and particularly the comments. Read the instructions from Appendix F as necessary and pay attention to the flags. This text is written in such a way that simple programming aspects of the microprocessor can be self-taught. Once you master the elementary programming techniques, interfacing and design become exciting and fun.