1985_Intel_Microcontroller_Handbook 1985 Intel Microcontroller Handbook
User Manual: 1985_Intel_Microcontroller_Handbook
Open the PDF directly: View PDF .
Page Count: 860
Download | ![]() |
Open PDF In Browser | View PDF |
MICROCONTROLLER HANDBOOK 1985 About Our Cover:" The design on our front cover is an abstract portrayal of the basic microcontrol/er function. The center sphere, symbolic of a microcontroller, contains a molecular orbital diagram of the architectural construction of a cubic unit of silicon. The red pathways lead!ng from the central sphere, are symbolic of distant or remote controlled applications. Intel Corporation makes no warranty for the use of its products and assumes no responsibility for any errors which may appear in this document nor does it make a commitment to update the information contained herein. Intel retains the right to make changes to these specifications CIt any time, without notice. Contact your local sales office to obtain the latest specifications before placing your order. The following are trademarks of Intel Corporation and may only be used to identify Intel Products: 'f. BITBUS, COMMputer, CREDIT, Data Pipeline, GENIUS, i, ICE, iCS, iDBP, iDIS, 12 1CE, iLBX, im , iMMX, Insite, Intel, intel, inIeIBOS, Intelevision, inteligent Identifier, inleligent Programming, Intellec, Intellink, iOSP, iPDS, iSBC, iSBX, iSDM, iSXM, Library Manager, MCS, Megachassis, MICROMAINFRAME, MULTlBUS, MULTICHANNEL, MULTIMODULE, Plug-A-Bubble, PROMPT, Promware, QUEST, QUEX, Ripplemode, RMX/80, RUPI, Seamless, SOLO, SYSTEM 2000, and UPI, and the combination of ICE, iCS, iRMX, iSBC, MCS, or UPI and a numerical suffix. MDS is an ordering code only and is not used as a product name or trademark. MDS® is a registered trademark of Mohawk Data Sciences Corporation . • MULTIBUS is a patented Intel bus. Additional copies of this manual or other Intel literature may be obtained from: .Intel Corporation literature Department 3065 Bowers Av.enue Santa Clara, CA ~5()51 @INTEL CORPORATION 1984 Table of Contents ALPHANUMERIC INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .iii MCS®-96 FAMILY CHAPTER 1 Introduction To MCSII!>-96 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . '" . 1-1 CHAPTER 2 Architectural Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1 CHAPTER 3 MCSII!>-96 Software Design Information .... " . . . . . . . . . . . . . . . . . . . . . . . . ; . . . . . . . 3-1 CHAPTER 4 MCSII!>-96 Hardware Design Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4-1 CHAPTER 5 MCSII!>-96 Data Sheet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-1 CHAPTER 6 MCS®-96 Article Reprint AR-321: High Performance Event Interface For A Microcomputer . . . . . . . . . . . . . . . . . . . .6-1 MCS®-S1 FAMILY CHAPTER 7 MCS®-51 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . • . . . . . . . . . . . .7-1 CHAPTER 8 . MCSII!>-51 Instruction Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . • . .S-1 CHAPTER 9 MCS®-51 Data Sheets S031/S051 S031AH/S051AH S032AH/S052AH S751 H/S751 H-12 . . . . . . . . . . . . . . . . . . . . . 9·1 S052AH-Basic. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-15 SOC51BH/SOC51BH-2 SOC31 BH/SOC31 BH-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-24 S031 AH/S051 AH S032AH/S052AH S751 H/S751 H Express. . . . . . . . . . . . . .;. . . . . . . . . • ·9-39 CHAPTER 10 ' MCS®-51 Application Notes AP-69: An Introduction To The Intel MCS®·51 Single-Chip Microcomputer Family. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-1 AP-70: Using The Intel MCS®-51 Boolean Processing Capabilities . . . . . . . . . . . . . . . . . : . . . . . . . . . . ' ..... .' . . . . . . ; ... 10;3~ AP-223: S051 Based CRTlTerminal Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-65 CHAPTER 11 . MCS®-51 Article Reprint· AR-224: Controller Chip Takes On Many Industrial, Computer Uses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-1 MCS®-48 FAMILY CHAPTER 12 MCS®-4S Single Component System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .'12-1 CHAPTER 13 MCSII!>-4S Expanded System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13·1 CHAPTER 14 MCS®-4S Instruction Set. . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . 14·1 CHAPTER 15 MCS®-48 Data Sheets S243 . . . . . . . . . . . . . . . . . . . . . . . . : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15·1 S048AH/S035AHUS049AH/S039AHUS050AH/S040AHL . . . . . . . . . . . . . . . . . . . . . . . . . 15·7 S748H/S035H/S749H/S039H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15·17 MCS®·48 Express . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15·30 SOC39·9/S0C49-7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-34 THE RUPI'M FAMILY: MICROCONTROLLER WITH ON-CHIP COMMUNICATION CONTROLLER CHAPTER 16 The RUPI'"·44 Family . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16·1 CHAPTER 17 8044 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17·1 CHAPTER 18 8044 Serial Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .-.18·1 CHAPTER 19 8044 Application Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-1 CHAPTER 20 RUPI'" Data Sheets 8044AH/8344AH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-1 8744 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-20 CHAPTER 21 RUPI'· Article Reprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .'21-1 DESIGN CONSIDERATIONS CHAPTER 22 Application Notes AP-125: Designing Microcontroller Systems For Electrically Noisy Environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-1 AP-155: Oscillators For Microcontrollers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-23 DESIGN CONSIDERATIONS WHEN USING CHMOS CHAPTER 23 . . . . . . . . . . . , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23-1 Article Reprints AR-302. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , . . . . . . . . 23-6 AR-332 . . . . . . . . . . . , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23-17 ADVANCED PACKAGING INFORMATION CHAPTER 24 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. '.' . . . . . . . . . . . . . . . 24-1 ii ALPHANUMERICAL INDEX 8031 Data Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9·1 8031AH Data Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9·1 8031AH Express Data Sheet . . . . . . . . . . . . . . . . ; . . . . . . . . . . . . . . . . . . . . . . . . . . . 9·39 8032AH Data Sheet .' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9·1 8032AH Data Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9·39 8035H Data Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15·7 8035AHL Data Sheet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..'. 15·7 8039H Data Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15·7 8039AHL Data Sheet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15·7 8040AHL Data Sheet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15·7 8044 Application Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19·1 8044 Architecture................................................. '. . 17·1 8044 Serial Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , . . . . . . . . . . . . . . . . 18·1 8044AH Data Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20·1 8048AH Data Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15·7 8049AH Data Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15·7 8050AH Data Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . 15·7 8051 Data Sheet . . . . . . . . . , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ' . . . . . . ; ..... 9·1 8051AH . Data Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . : ..... , .... , .. 9·1 8051AH Express Data Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9~39 8052AH Data Sheet .... ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . '... 9·1 8052AH Basic Data Sheet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9·15 8052AH Express Data Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9·39 8243 Data Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15·1 8344AH Data Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-1 8744 Data Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20·20 8748H Data Sheet . . . . . . . ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15·17 8749H Data Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-7 8751 H Data Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9-1 8751 H Express Data Sheet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9·39 8751H·12 Data Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9·1 80C31BH Data Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-24 80C31BH-2 Data Sheet . . . . . . . . . . . . , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ,9·24 8OC39·9 Data Sheet. . . . . . . . . . . . . . . . '.' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15·34 80C51 BH Data Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9·24 80C51 BH·2 Data Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9·24 ADVANCED Packaging Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24-1 Design Considerations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-1 iii ALPHANUMERICAL INDEX Design Considerations Application Notes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22-2, 22-24 Design Considerations When Using CHMOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23-1 Design Considerations When Using CHMOS Article Reprints . . . . . . . . . . . . . . . . . . . . . ' .23-6, 23'17 MCS-48 Data Sheets. . . . . . . . . . . . . . . . . . . . . . . . , . . . . . . . . 15-1,15-7,15-17,15,-30,15-34 MCS-48 Expanded System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-1 MCS-48 Instruction Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14·1 MCS-48 Single Component System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-1 MCS-51 Application Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-1,10-31,10-65 MCS-51 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7"1 MCS-51 Article Reprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 11 ~ 1 MCS-51 Data Sheets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-1, 9-15, 9-24, 9-39 MCS-51 Instruction Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-1 MCS-96 ArchitecturalOverview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; ... 2-1 MCS-96 Article Reprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6·1 MCS'96 Data Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-1 MCS-96 Hardware Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4-1 MCS-96 Introduction................................................ ..1-1 MSC-96 Software Design Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-1 RUPI Data Sheets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . : . . . . . . . . . ' ... 20-1,20·20 RUPI Article Reprints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-1 RUPI-44 Family . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ·.... 16-1 iv Introduction to MCS®,96 1 CHAPTER 1 INTRODUCTION TO MCS®·96 1.0 CONTINUING MICROCONTROLLER EVOLUTION Beginning with the introduction of the world standard 8048 (MCS®-48) Microcontroller in 1976, Intel has continued to drive the evolution of single chip microcontrolleTS. In 1980, Intel introduced the 8051 (MeS-51) offering performance levels significantly higher than the' 8048. With the advent of the 8051, the microcontroller applications base took a marked vertical leap. These versatile chips are used in applications· from keyboards and terminals to controlling automobile engines. The 8051 quickly gained the position of the second generatiOIi world standard microcontroller. being pushed to new limits, it has become possible to integrate more than 100,000 transistors onto a single silIcon chip. Microcontroller designers at Intel have taken today's process technology achievements and forged a new genention of single chip microcontrollers called the MCS-96. The 8096 (generic part nUinber for MCS-96) offers the highest level of system integration ever achieved on a single chip microcontroller. It uses over 120,000 transistors to implement a high performance 16-bit CPU, 8K bytes of progTam memory, 232 bytes of data memory and both\analog and digital types of 110 features. Figure I-I shows the evolution of single chip microcontroller at Intel. Now that the semiconductor process technologies are 8394 , 8395 8396 8397 .8 BIT CPU 8051 8052 • 4/8K ROM • 1281256 BYTE RAM • TIMER/COUNTER • PARALLEL I/O • SERIAL I/O MCS~-48 8048 8049 8050 8021 8022 • 16 BIT CPU .8KROM • 232 BYTE RAM • • • • • TIMER/COUNTER' PARALLEL I/O SERIAL ~O 10 BIT AID HIGH SPEED ~O • PWM • WATCH DOG TIMER .8 BITqPU • • • • • 1/214K ROM 64/1281256 BYTE RAM TIMER/COUNTER PARALLEL 110 8 BIT AID 1980 1976 Figure 1·1. Evolution of Microcontrollers at Intel 1-1 1983 INTRODUC:TIO,. TO MCS®·96 , '~ ; 1.1 INTRODUCTION TO THE MCS®·96 The 8096 consists of a 16-bit powerful CPU tightly coupled with program and data memory along with several I/O features all integrated onto a single piece of silicon. The CPU supports bit, byte, and word operations. 32-bit dou.ble words are also supported for a subset of the ..instruction set. With· a 12 MHz il!-put frequency, the 80fl6 can perform a 16-bit addition in 1.0 I!-s and 16 x 16 multiply or 32/.16 divide in 6.5 iJ-s. 16-bit software timers can be in operation at once in addition :to the two 16-bit hardware timers. An optional on-chip AID converter converts up to four (in the 48-pin version) or 8 (in the 68-pin version) analog input channels into lO-bit digital values. Also provided on-chip, is a serial port, a watchdog timer, and a pulsewidth modulated output signal. Table 1.1 shows the features and benefits :rummary for the MCS-96. Four high-speed trigger inputs are provided to record the times,at which external eV!!nts oc.cur with a resolution of 2 iJ-S (at 12 MHz crystal frequency). Up to six high-speed pulse generator outputS are provided to trigger external events at preset, times. The high speed output unit can simultaneously perform timer functions, up to four such Table 1·1 MCS~·96 The'8096.with its 16-bit CPU and all the I/O features and interface resources on a ,single piece of silicon represents the highest level of system integration in the world of micr~ontrollers. It will open up new applications which had to use multiple chip solutions in the past. Features and Benefits Summary FEATURES BENEFITS 16-BitCPU Efficient machine with higher throughput 8K Bytes ROM Large program space for more complex, larger programs. 232 Bytes RAM· Large on-board register file. Hardware MUUDIV Provides good math capability 16 by 16 multiply or 32 by 16 divide in 6.5 iJ-S @ 12 MHz .. 6 Addressing Modes Provides greater flexibility of programming and data manipulation. High Speed I/O Uriit 4 dedicated I/O lines 4 programmable 110 lines Can measure and generate pulses with high resolution (2 iJ-S @ 12 MHz). 10-Bit ND Converter Reads the' external analog inp\lts. Full Duplex Serial Port Provides asynchronous serial link to other processors or systems. Up to 40 110 Ports Provides TTL compatible digital data I/O including system expansion with standard 8 or 16-,bit peripherals. Programmable 8 Source Priority Interrupt System Respond to asynchronous events. Pulse Width Modulated Output Provides a programmable pulse train with variable duty cycle. Also used to generate analog output. Watchdog Timer Provides ability to recover from software malfunction or hardware upset. 48 Pin (DIP) & 68 Pin (Flatpack, Pin Grid Array) Versions Offers a variety of package types to choose from to better fit a specific application need for number of 1I0's and package size. 1-2 INTRODUCTION TO MOS®.96 1.2. MCSall-96 APPLICATIONS combining analog and digital 110 processing in the single chip. 'The MCS-96 products are stand-alone high performance >single chip mili:rocontrollers designed for use in sophisticated real-time demanding applications such as industrial control, instrumentation and intelligent computer peripherals. The wide base of applications cut across all industry segments' (see table 1.2). With the 16-bit CPU horsepower, hlgh-speed math processing and high-speed 1/0, the 8096 is ideal for complex motor control and axis control systems. Examples include three phase, large horse'power AC motors and robotics. With its 100bit AID converter option, the device finds usage in data acquisition systems and closed-loop analog controllers. It permits considerable system integration by This chip is ideally suited in the area of instrumentation products such as gas chromatographs, which combine analog processing with high speed number crunching. The same features make it a desirable component for aerospace applications like missile guidance and control. 1.3. MCSiIl-96 FAMILY DEVELOPMENT SUPPORT TOOLS The product family is supported by a range of Intel software and hardware development tools. These tools shorten ,the product development cycle, thus bringing the product to the market sooner. 1.3.1. MCS®-96 Software Development Package , The 8096 software development package provides development system support specifically designed for the MCS96 family of single chip microcontrollers. The package consists of a'symbolic macro assembler ASM-96, Linkerl Relocator RL-96 and the librarian LIB-96. Among the high level languages, PLM-96 is offered along with a floating point math package. Additional high level languages being developed for the MCS-96 product family. Table 1·2 MCS@·96 Broad Base of Applications INDUSTRIAL >Motor Control Robotics Discrete and Continuous Process Control ,Numerical Control Intelligent Transducers are INStRUMENTATION Medical Instrumentation Liquid and Gas Chromat6graphs Oscillioscopes 1.3.2. ASM-96 MACRO Assembler The 8096 macro assembler translates the symbolic assembly language instructions into the machine executable object code. ASM-96 enables the programmer to write the program in a modular fashion. The modular programs divide a rather complex program into smalltr functional uriits, thllt are easier to code, to debug, and to change. The separate modules can then be linked and located into one program module using the RL-96 utility, This utility combines the selected input object modules into a single output object module. It also allocates memory to input segments and binds the relocatable addresses to absolute addresses. It then produces a print file that consists of a link summary, a symbol table listing and an intermediate cross-reference listing. LlB-96, another utility helps to create, modify, and examine library files. The ASM-96 runs on Intellec Series III or IV. CONSUMER Video Recorder Laser Disk Drive High-end Video Games GUIDANCE & CONTROL Missile Control Torpedo Guidance Control Intelligent Ammunition Aerospace Guidance Systems DATA PROCESSING Plotters Color and B&W Copiers Winchester Disk Drive Tape Drives Impact and Non-Impact Printers 1.3.3. PLlM-96 The PUM-96 compiler translates the PUM-96 language into 8096 relocatable object modules, This allows improved programmer productivity and application reliability. This high level language has been efficiently designed to map into the machine architecture, so as not to trade off higher programmer productivity with inefficient code. Since the language and the compiler are optimized for the 8096 and its application environment, developing software with PUM-96 is a 'low-risk' project. TELECOMMUNICATIONS Modems Intelligent Line Card Control AUTOMOTIVE Ignition Control Transmission Control Anti Skid Braking Emission Control 1-3 INTRODUCTION TO. MCS<1ll~96 1.3.4. Hardware Development Support: iSBE·96 1.4. MCS®-96 'FAMILY .OF PRODUCTS· The iSBE-96 is a hardware executiDn and debug tDDI fDr the MCS-96 products. It,cDnsistsDf a mDnitDr/debugger resident in an 8096 system. This develDpment system interfaces with the user's 8096 system via tWD ribbDn cables, .one fDr the 8096 I/O PDrts, and the .other fDr the memDry bus. The iSBE-96 is cDntrDliedby an Intellec Series III Dr .other cDmputer system .over a serial link. PDwer fDr the iSBE-96 can be supplied by plugging it intD the MULTIBUS® card slDt, Dr by an external pDwer supply. The iSBE-96 is cDntained .on .one standard MULTIBUS bDard. AlthDUgh 8096 is the generic part number .often, used.for the MCS-96 prDducts throughout this. manual, the product family cDnsists .of eight cDnfiguratiDns with eight part numbers including the 8096. This wide variety of products is offered tD best meet user's application requirements in terms of number .of 1I0's and package size,. The Dpti.ons include Dn-bDard 8K bytes .of mask programmed memDry, lO-bit A/D cDnverter, and 48 Dr 68 pin package type. Table 1-3 summarizes all the current products in the MCS®-96 product family. The iSBE-96 prDvides the mDst .often used features fDr real-time hardware emulatiDn. The user. can display and mDdify memDry, set up break pDints, execute with Dr withDut breakpDints and change the memDry map. In additiDn, the user can single step thrDugh the system prDgram. Table 1·3 MCS®·96 Family. of Products 68 PIN 48 PIN ROMLESS 8096 8094 ROM 8396 8394 OPTIONS 1.3.5. MCS®-96 Workshop The wDrkshDp provides the design engineer Dr system designer hands-Dn experience with the MCS-96 family .of products. The course includes an explanatiDn .of the Intel 8096 architecture, system timing, input/Dutput desigri. The lab sessiDns allDw the attendees tD gain in-depth knDwledge .of the MCS-96 product family and SUpPDrt tDDls. DlGITAL I/O . ANALOG AND DIGITAL 110 1.3.6. Insite ™ Library The Intel Insite'Library cDntains several applicatiDn p~D grams. A very useful program cDntained in the Insite is SIM-96, the sDftware" simulatDr fDr 8096. It allDws SDftware simulatiDns .of user's system. The 'simulatDr prDvides the ability tD set'breakpDints, examine'and mDdify memDry, disassemble the Dbje,ct cDde and single step thrDugh the cDde. ROMLESS 8097 8095 ROM 8397 8395 The 48 pin versiDn is available in a DIP (dual inline) package. The 68 pin versiDn CDmes in two packages, the .Plastic Flatpack and the Pin Grid Array. . 1-4 Architectural Overview 2 CHAPTER 2 ARCHITECTURAL OVERVIEW 2.0. INTRODUCTION operations are possible by directly controlling the 110 through the SFRs. The main benefits of this structure are the ability to quickly change context, the absence of accumulator bottleneck, and fast throughput ,and 110 times. The 8096 can be separated into several sections for the purpose of describing its operation. There is a CPU, a programmable High Speed I/O Unit, an analog to digital converter, a serial port, and a Pulse Width Modulated (PWM) output for digital to analog conversion. In addition to these functional units, there are some sections which support overall operation of the chip such as the clock generator and the back-bias generator. The CPU and the programmable I/O make the 8096 very different from any other microcontroller, let us first examine the CPU. 2.1.1. CPU Buses A "Control Unit" and two buses connect the Register File and RALU. Figure 2-1 shows the CPU with its major bus connections. The two buses are the "A-Bus" which is 8-bits wide, and the "D-Bus" which is 16-bits wide. The D-Bus transfers data only between the RALU and the Register File or Special Function Registers (SFRs). The A-Bus is used as the address bus for the above transfers or as a multiplexed address/data bus connecting to the "Memory Controller". Any accesses of either the internal ROM or external memory are done through the Memory Controller. 2.1. CPU OPERATION The major components of the CPU on the 8096 are the Register File and the RALU. Communication with the outside world is done through either the Special Function Registers (SFRs) or the Memory Controller. The RALU (Register/Arithmetic Logic Unit) does not use an accumulator, it operates directly on the 256-byte register space made up of the Register File and the SFRs. Efficient 110 VSS Within the memory controller is a slave program counter (Slave PC) which keeps track of the PC in the CPU. By having most program fetches from memory referenced to VBB EA ALE BHi AD ViR READY ~~::;::==I=:"~ RESET VREF ANGND I I I I P3l I I I I I I I IL __________ _ PO/ACH ADDRIDATA BUS P4 P1 P2lALT. FUNCTIONS HS1 HSO Figure 2-1. Block Diagram (For simplicity, lines connecting port registers to port buffers are not shown.) 2-1 ARCHITECTURAL OVERVIEW the slave PC, the processor saves time as addresses seldom have to be sent to the memory controller. If the address jumps sequence !!ten the slave PC is loaded with a new value and processing continues. Data fetches from memory are also done through the memory controller, but the slave PC is bypassed for this operation. Unit decodes the instructions and generates the correct sequence of signals to have the RALU perform the desired function. Figure 2-1 shows the instruction register and the control unit. 2.1.4. RALU Most calculations performed by the 8096 take place in the RALU. The RALU, shown in Figure 2-2, contains a 17bit ALU, the Program Status Word (PSW), the Program Counter (PC), a loop counter, and three temporary registers. All of the registers are 16-bits or 17-bits (16+ sign extension) wide. Some of the registers have the ability to perform simple operations to off-load the ALU. 2.1.2. CPU Register File The Register File contains 232 bytes of RAM which cart be accessed as bytes, words, or double-words. Since each of these locations can be used by the RALU, there are essentially 232 "accumulators". The first word in the Register File is reserved for use as the stack pointer so it can not be used for data when stack manipulations are taking place. Addresses for accessing the Register File and SFRs are temporarily stored in two 8-bit address registers by the CPU. hardware. A separate incrementer is used for the PC; however, jumps must be handled through the ALU. Two of the temporary registers have their own shift logic. These registers are used for the operations which require logical shifts, including Normalize, Multiply, and Divide. The "Lower Word" register is used only when double-word quantities are being shifted, the "Upper Word" register is used 2.1.3. RALU Control Instructions to the RALU are taken from the A-Bus and stored temporarily in the instruction register. The Control 8-BIT A·BUS UPPER WORD REGISTER/SHIFTER LOWER WORD REGISTER/SHIFTER 1-_ _ _ _ _""7'..:.1::.6_ _ _ _-+~ TEMPORARY REGISTER ...._.p.8!----/ CONSTANTS (0,1,2) 16 8 LOWER Figure 2·2. RALU Block D.lagram 2-2 ARCHITECTURAL OVERVIEW' wheneveJ a shift is perfonned ot as a temporary register for many instructions, Repetitive shifts are counted by the 5-bit "Loop Counter". INTERNAL CIRCUITRY A temporary .register is used to store the second operand of two operand instructions. This includes !he multiplier during, multiplications and the divisor during divisions. To perfonn.subtractions, the output of this register can be clding register). has six entries in it. Since all interrupts are rising edge triggered. ifIOCl. 7 = 1, the processor will l).ot be re-interrupted until the FIFO first contains 5 or less rec· ords. then contains six or more. Interrupts can also be generated by pin HSI.O. which has its own interrupt vector. . A block diagram of the HSO unit is shown in Fig\lfe 218.. The Content Addressable Memory (CAM) file is the center of control. One CAM regi,Ster is, compared with a time value ~very state time. Theref9re. it takes 8 state times to cOlJlpare all CAM registers with a timer. HSI STATUS REGISTER (HSI_STATUS) LOCATION 08H 2.7.4. HSI Status Bits 6 and 7 of the 1/0 Status register 1 (lOS 1) indicate the status of the HSI FIFO. If bit 6 is a 1•. the FIFO ' contains at least six entries. If bit 7 is a 1.· the FIFO contains at least 1 entry and the holding registet,has been loaded. The FIFO may be read after verifyillg that it contains valid data. Caution must be used ,when reading or testing bits in IOSI, as this action dears,the entire byte. including the software and hardware timer overflow flags: It is best to store the byte and .then test the stored value. See Section 3.7.2. HSI,o STATUS .....- - - HSI.1 STATUS L.._ _ _ _ _ HSI.2 STATUS .....- - - - - - - HSI.3 STATUS WHERE FOR EACH 2-alT STATUS FIELD THE LOWER alT INDICATES WHETHER OR NOT AN EVENT HAS 0cCURRED ON THIS PIN AND THE UPPER BIT INDICATES THE CURRENT STATUS OF THE PIN. "Figure 2·17.HSI Status Register Diagram Reading the HSI is done in two steps. First,the HSI Status 2-13, ARCHITECT.URALOVERVIEW . 2.0 ,..S CLOCK CONTROL LOGIC HIGH SPEED OUTPUT CONTROLS 6 PINS 4 SOFTWARE TIMERS 2 INTERRUPTS INITIATE AID CONVERSION RESET "FIMER 2' Figure 2"18. High Speed Output Unit Each CAM register is 23 bits wide. Sixteen bits specify the time at which the action is to be carried tiut and 7 bits specify both the nature of the action 'and whether Timer 1 or Timer 2 is the reference, The format of the comm;md to the HS9 unit is shown iriFigure 2-19: reference; the minimum time that can be'loadedisTimer I 1. A' similar restriction applies if Timer 2 is used as the reference. " +" Care must:be taken when writing the command tag for the HSO. If an interrupt occurs during the time between writing the command tag and loading t.l~e,time value, and the interrupt service routine writes to the HSO time register, the command tag used in the interrupt routine will be written to the CAM at both the time specified by the interrupt routine and the time specified by the main 'program. The command tag from the main program will not be executed. One way of avoiding this problem would be to disable interrupts when writing co~ands and times to the HSO unit. See also Section 3: 7,3. ' To enter a command into the CAM file, write the 7c bit "Command Tag" into location 0006H followed by the time at which the action is to be carried out into word address 0004H. Writing the time value loads the HSO Holding Register with both the time and the last written command tag. The comiI]and does not actually enter the CAM file until an empty CAM register becomes available. It can take 'up to 8 state times for a command to enter the CAM. For this reason, if Timer 1 is being used.as the, '76'S I x 4 I TID I I 3 I 2 0 CHANNEL I CHANNEL O-S HSO.O - HSO.S 6 HSO.oAND HSO.1 , 7 HSO.2 AND HSO.3 8-a SOFTWARE'TIMERS E RESElTIMER 2 F START AlD'CONVERSION .......-...;;,.--;--- INTERRUPT/NO,INTERRUPT, ......- - - - - - - SET/CLEAR, ......- - - - - -......- - - - - T1~ER 2/T1MER 1 , 'Figure 2-1c9. HSO Command Tag Format 2-14 ARCHITECTURAL OVERVIEW 2.8.3. HSO Status 2.8.6. Software Timers Before writing to the HSO, it is desirable to ensure that the Holding Register is empty. If it is not, writing to the HSO will overwrite the value in the Holding Register. 110 Status Register 0 (10S0) bits 6 and 7 indicate the status of the HSO unit. This register is described in section 2.13.4. If IOSO.6 equals 0, the holding register is empty . and at least one CAM register is empty. If IOSO.7 equals 0, the holding tegister is empty. The HSO can be programmed to generate interrupts at preset times. Up to four such "Software Timers" can be in operation at a time. As each preprogrammed time is reached, the HSO unit sets a Software Timer Flag. If the interrupt bit in the command tag was set then a Software Timer Interrupt will also be generated. The interrupt service routine can then examine 110 Status register 1 (10S 1) to determine which software timer expired and caused the interrupt. 'When the HSO resets Timer 2 or starts an A to D conversion, it can also be programmed to generate a software timer interrupt but there is no flag to indicate that this has occurred. See also Section 3.7.4. One location in the CAM file is checked each state-time. Thus, it takes 8 state-times for the Holding Register to have had access to all 8 CAM registers. Similarly, it takes 8 state-times for the comparator to have had access to all 8 CAM registers. This defines the time-resolution of the HSO unit to be 8 state-times (2.0 JJ-sec, if the oscillator frequency is 12 MHz1 Note that the comparator does not look at the holding register, so instructions in the Iiblding register do not execute. If more than one software timer interrupt occurs in the same time frame it is possible t4at multiple software timer interrupts will be generated. Each read or test of any bit in lOS 1 will clear the whole byte. Be certain to save the byte before testing it unless you are only concerned with 1 bit. See also Section 3.2.2. 2.8.4. Clearing The HSO All 8 CAM locations of the HSO are compared before any action is taken. This allows a pending external event to be cancelled by simply writing the opposite event to the CAM. However, once an entry. is placed in the CAM, it cannot be removed until either the specified timer matches the written value or the chip is reset. Internal even~ are not synchronized to Timer 1, and therefore cannot be cleared. This includes events, on HSO channels 8 through F and all interrupts. Since interrupis are not synchronized it is possible to have multiple interrupts at the same.time value. 2.8.5. Using Timer 2 With The HSO Timer 1 is incremented only once every 8 state-times. When it is being used as the reference timer for an HSO action" the comparator has a chaqce to look at all 8 CAM registers before Timer 1 changes its value. Following the same reasoning, Timer 2 has been synchronized to allow it to change at a maximum rate of once per 8 state-times. Timer 2 increments on both edges of the input signal. A complete listing of the functions of 10SO, 10SI, and lOCI can be found in section 2.13. The Timers are described in section 2.6 and the HSI is described in section 2.7. 2.9. ANALOG INPUTS The A to D converter on the 8096 provides a lO-bit result on one of 8 input channels. Conversion is done using successive approximation with a result equal to the ratio of the input voltage divided by the analog supply voltage. . If the ratio is 1.00, then the result will be all ones. The AID converter is available on the 8097, 8397, 8095 and 8395 members of the MCS®-96 family. 2.9.1. AID Accuracy Each conversion requires 168 state-times (42jJ.S at 12 MHz) i1'ldependent of the accuracy desired or value of input voltage. The input voltage must' be in the range of o to VREF, the analog reference and s~pply voltage. Fpr proper operation, VREF (the reference voltage and analog power supply) must be held at VCC ± 0.3V with VREF = 5.0 ± 0.5V. The ND result is calculated from the formula: . When using Timer 2 as the HSO reference, caution must be taken that Timer 2 is not reset prior to the highest value for a Timer 2 match in the CAM. This is because the HSO CAM will hold an event pending until a time match occurs, if that match is to a time vlllue on Timer 2 which is never reached, the event will remain pending in the CAM until the part is reset. 1023 )( (input voltage-ANGND) / (VREF-ANGND~ It can be seen from this formula that changes in VREF or ANGND effect the output Of the corverter. This can be advantageous if a ratiometric sensor is used since these sensors have an output that can be measured as a proportion of VREF. Additional caution must be used when Timer 2 is being reset using the HSO unit, since resetting Timer 2 using the HSO is an internal event and can therefore happen at ,any time within the eight-state-time window. For this reason, any events scheduled to occur at the same time as a Timer 2 reset should be logged into the CAM with a Timer 2 value of zero. When using this method to make a programmable modulo counter, the count will stay at the maximum Timer 2 value only until the,Reset T2 command is recognized. The count will stay at zero for the transition which would have changed the count from "N" to zero, and then change to a one on the next transition. If high absolute accuracy is needed it may be desirable to use a separate power supply, or power traces, to operate the ND converter. There is no sample and hold circuit internal to the chip, so the input voltage must be held constant for the entire 168 state times. Examples of connecting the ND converter to various devices are given in section 4.3. 2-15 ARCHITECTURAL OVERVIEW AID COMMAND REGISTER (LOCATION 02H) CHANNEL # SELECTS WHICH OF THE 8 ANALOG INPUT CHANNELS IS TO BE CONVERTED TO DIGITAL FORM; ' - - - - - - - GO INDICATES WHEN THE CONVERSION IS TO BE INITIATED (GO=1 MEANS START NOW, GO=O MEANS THE CONVERSION IS TO BE INITIATED BY THE HSO UNIT AT A SPECIFIED TIME). Figure 2·20. AID Command Register 2.9.2. AID Commands Result Register at locations 02H and 03H. Although these addresses are on a word boundary, they must be read as individual bytes. Information in the ND Result register is formatted as shown in Figure 2-21. Note that the status bit may not be-set until 8 state times after the go command. Information on using the HSO is in section 2.8. Analog signals can' be sampled by anyone of the 8 analog input pins (ACHO through ACH7) which are shared with Port O. ACH7 can also be used as anextemal interrupt if IOCLl is set (see section 2.5). The ND Command Register, at location 02H, selects which channel is to be converted and whether the conversion should start immediately or when the HSO (Channel #OFH) triggers it. A to D commands are formatted as shown in Figure 2-20. 2.10. PULSE WIDTH MODULATION OUTPUT (D/A) The command register is double buffered so it is possible to write a command to start a conversion triggered by the HSO while one is still in progress. Care must be taken when' this is done since if a new conversion is started while one is already in progress, the conversion in progress is cancelled and the new one is started. When a conversion is started, the result register is cleared. For this reason the result register must be read before a new conversion is started or data will be lost. Digital to analog conversion can be done with the pulse width modulation output; a block diagram of the circuit is shown in Figure 2-22. The 8-bit counter is incremented every state time. When it equals 0, the PWM output is set to a one: When the counter matches the value in the PWM register,' the output is switched low. When the counter overflows, the output is once again switched high. A typical output waveform is shown in Figure 2-23. Note that when the PWM register equals 00, the output is always low. 2.9.3. AID Results The output waveform is a variable duty cycle pulse which repeats every 256 state times (64 p,S at l2MHz). Changes Results of the arialog conversions are read from the ND AID RESULT REGISTER AID CHANNEL NUMBER ' - - - - - STATUS = AID CURRENTLY IDLE 1 = CONVERSION IN PROCESS o '--------- AID RESULT: LEAST SIGNIFICANT 2 BITS MOST SIGNIFICANT BYTE Figure 2·21. AID Result Register 2-16 ARCHITECTURAL OVERVIEW some form of buffer and integrator are needed to obtain the most usefulness from this feature. The PWM output shares a pin with Port 2, pin 5 so that these two features cannot be used at the same time. 10CI.0 equal to I selects the PWM function instead of the standard port function. More information on lOCI is in section 2.13.3. 2.11. SERIAL PORT The.serial port is compatible with the MCS-Sl serial port. It is full duplex, meaning it can transmit and receive simultaneously. It is also receive-buffered, meaning it can commence reception of a second byte before a previously received byte has been read from the receive register. The serial port registers (SBUF) are both accessed at location 07H. A write to this location accesses the transmit register, and a read accesses a physically separate receive register. PWM OUTPUT STATE TIME CLOCK (F(XTAL1)/3) The serial port can operate in 4 modes (explained below). Selection of these modes is done through the Serial Port Status/Control register at location IIH, shown in Figure 2-27. • PERIOD = 64 "S, FREQUENCY = 15.625 KHz • DUTY FACTOR PROGRAMMABLE IN 256 STEPS 2.11.1. Serial Port Modes Figure 2·22. Pulse Width Modulated (D/A) Output MODE 0 Mode 0 is a shift register mode. The 8096 outputs a train of 8 shift pulses to an external shift register to clock 8 bits of data into or out of the register from or to the 8096. Serial data enters and exits the 8096 through RXD. TXD outputs the shift clock. 8 bits are transmitted or received, LSB first. A timing diagram of this mode is shown in Figure 2-24. This mode is useful as an 110 expander in which application external shift registers can be used as additional parallel 110 ports. An example of using the port in this mode is given in section 4.5. in the duty cycle are made by writing to the PWM register at location 17H. There are several types of motors which require a PWM waveform for most efficient operation. Additionally, if this waveform is integrated it will produce a DC level which can be changed in 256 steps by varying the duty cycle. Details about the hardware required for smooth, accurate D/A conversion can be found in section 4.3.2. Typically, DUTY CYCLE PWM CONTROL REGISTER VALUE OUTPUT WAVEFORM 0% 00 HI LO 10% 25 ~~Jl~____~n~____~n~_____ 50% 128 HI LO .-J 90% 230 HI LO .-J 99.6% 255 u u .HI-TI------,------r-----LO . Figure 2·23. Typical PWM Outputs 2-17 ARCHITECTURAL OVERVIEW TXO , OUT RXO .. IN Figure 2-24. Serial Port Mode 0 Timing STOP Figure 2-25. Serial Port Frame - Mode 1 STOP STOP PROGRAMMABLE 9TH BIT - - _.... 11-BIT FRAME -I Figure 2-26. Serial Port Frame Modes 2 and 3 MODE 1 IO-bit frames are transmitted through TXD, and received through RXD: a start bit (0), 8 data bits (LSB first), and a stop bit (1). If PEN = 1 then an even parity bit is transmitted instead of the eighth data bit. This mode is the one commonly used for CRT terminals. The data frame for Mode 1 is shown in Figure 2-25. the 9th data bit can be assigned the value of 0 or 1 using the TB8 bit. If PEN = 1 the 9th bit will be parity. On receive, the received 91h data bit is stored and the serial port intenupt is activated regardless of its value. The data frame for Modes 2 and 3 is shown in Figure 2-26. 2.11.2. Multiprocessor Communications Mode 2 and 3 are provided for multiprocessor communications. In mode 2 if the received 9th data bit is not I, the serial port intenupt is not activated. The way to use this feature in multiprocessor systems is described below. MODE 2 ll-bit frames are transmitted through TXD and received through RXD: a start bit (0), 8 data bits (LSB first), a programmable 9th data bit, and a stop bit (1). On transmit, the 9th data bit can be assigned the value of 0 or 1 using the TB8 bit. This bit is cleared on each transmission. On receive, the serial port intenupt is not activated unless the received 9th data bit is 1. Parity cannot be enabled in this mode. This mode is commonly used along with mode 3 in a multi processor environment. When the master processor wants to transmit II block of data to one of several slaves, it first sends out an address frame which identifies the target slave. An address frame will differ from a data frame in that the 9th data bit is 1 in an address frame and 0 in a data frame. No slave in mode 2 will be intenupted by a data frame. An address frame, however, will intenupt all slaves so that e~ch slave can examine the received byte and see if it is being ad~ dressed. The addressed slave switches to mode 3 to receive the coming data frames, while the slaves that were not addressed stay in mode 2 and go on about their business. MODE 3 II-bit frames are transmitted through TXD and received through RXD: a start bit (0), 8 data bits (LSB first), a programmable 9th data bit, and a stop bit (1). On transmit, 2-18 ARCHITECTURAL OVERVIEW 2.11.3. Controlling the Serial Port The unsigned integer represented by the lower 15 bits of the baud rate register defines a number B, where B has a maximum value of 32767. The baud rate for the four serial modes using either XTAL I or T2CLK as the clock source is givenby: Using XTALI: XTALI frequency. B oF 0 Mode 0: Baud Rate 4*(B + I) , Control of the Serial Port is done through the Serial Port Control/Status register. The fonnat for the control word is shown in Figure 2-27. Note that reads access only part of the byte, as do writes, and that TB8 is cleared after each byte is transmitted. In Mode 0, if REN = 0, writing to SBUF will start a transmission. Causing a rising edge on REN, or clearing RI with REN = I, will start a reception. Setting REN = 0 will stop a reception in progress, and inhibit further receptions. To avoid a partial or complete undesired reception, REN must be set to zero before clearing Rl. This can be handled in an interrupt environment by using software flags, or in a straight-line code environment by using the Interrupt Pending register to signal the completion of a receive. In any mode, it is necessary to set IOCI.5 to a I to enable the TXD pin. Some examples of the software involved in using the serial port can be found in section 3.8. More infonnation on lOCI is in section 2.13.3. Others: XT ALI frequency 64*(B + I) Mode 0: Baud Rate T2CLK frequency . B oF 0 B ' Baud Rate Using T2CLK: Others: Baud T2CLK frequency. B oF 0 Rate 16*B' Note that B cannot equal 0, except when using XTALI in other than mode O. Common baud rate values, using XTALI at 12MHz, are shown below. Baud Register Value Baud Rate Others Mode 0 2.11.4. Determining Baud Rates Baud rates in all modes are detennined by the contents of a 16-bit register at location OOOEH. This register must be loaded sequentially with 2 bytes (least significant byte first). The MSB of this register selects one of two sources for the input frequency to the baud rate generator. If it is a I, the frequency on the XTALI pin is selected, if not, the extemal frequency from the T2CLK pin is used. It should be noted that the maximum speed of T2CLK is one transition every 2 state times, with a minimum period of 16 XTALl cycles. 8137H 8270H 84E1H 89C3H A70FH 9600 4800 2400 1200 300 8013H 8026H 804DH 809BH 8270H The maximum asynchronous baud rate is 187.5 Kbaud, with a 12MHz clock. LOCATION 11H SP_STAT (READ ONLy) IRB8~RPE I SP_CON (WRITE ONLY) 6 RI I 5 n 4 188 3 REN ~ I 1 1 J J 2 PEN I L-'~ NOTE: n 1 M2 1 0 M1 J SPECIFIES THE MOD E: 0,0 = MODE 0 0,1 = MODE 1 1,0= MODE 2 1,1 = MODE 3 PEN ENABLE THE PARITY FUNCTION (EVEN PARITY): REN ENABLES THE RECEI VE FUNCTION: TB8 TI PROGRAMS THE 9TH DATA BIT (IF NOT PARITy) ON TRANSMISSION: (CLE ARS AFTER TRANSMISSION) IS THE TRANSMIT INTERRUPT FLAG: RI IS THE RECEIVE INTE RRUPTFLAG: RB8, RPE IS THE 9TH DATA BIT RECEIVED (IF NOT PARITy), IS THE PARITY ERROR INDICATOR (IF PARITY ACTIVE). AND RI ARE CLEARED WHEN SP _ STAT IS READ. Figure 2-27. Serial Port Control/Status Register 2·19 ARCHITECTURAL OVERVIEW, 2.12. 1/0 PORTS 0, 1, 2, 3, AND 4 to speed up the O-to-l transition time. See also Sections 3.7.1 and 4.2.2. There are five 8-bit 110 ports on the 8096. Some of these ports are input only, some output only, some bidirectional and some have alternate functions. Input ports connect to the internal bus through an input buffer. Output ports connect through an output buffer to an intemal register that holds the output bits. Bidirectional ports consist of an internal register, an output buffer, and an input buffer. 2.12.3. Port 2 Port 2 is a multi-functional port. Six of its pins are shared with other functions in the 8096, as shown below. AHernate Function Port Function P2.0 output TXD (serial port transmit) P2.1 input RXD (serial port receive) P2.2 input EXTINT (external interrupt) P2.3 input T2CLK (Timer 2 input) T2RST (Timer P2.4 input 2 reset) P2.S output PWM (pulse-width modulation) quasi-bidirectional P2.6 P2.7 quasi-bidirectional When an instruction accesses a bidirectional port as a source register, the question often arises as to whether the value that is brought into the CPU comes from the internal port register or from the port pins through the input buffer. In the 8096, the value always comes from the port pins, never from the internal register. 2.12.1. Port 0 Port 0 is an input only port which shares its pins with the analog inputs to the AID Converter. One can read Port 0 digitally, and/or, by writing the appropriate control bits to the AID Command Register, select one of the lines of this port to be the input to the AID Converter. While a conversion is in process, the impedance of the selected line is lower than normal. See the data sheet for the specific values. Controlled by 10CI.S N/A 10Cl.I lOCO. 7 10CO.S 10CI.O 2.12.2. Port 1 Port I is a quasi-bidirectional 1/0 port. "Quasi-bidirectional" means the port pin has a weak internal pullup that is always active and an internal pulldown which can either be on (to output a 0) or off (to output a 1). If the internal pulldown is left off (by writing a 1 to the pin), the pin's logic level can be controlled by an external pulldown 'which can either be on (to input a 0) or off (to input a 1). From the user's point of view the main distinction is that a quasi-bidirectional input will source current while being externally held low and will pull itself high if left alone. 2.12.4. Ports 3 and 4 Ports 3 and 4 have two functions. They are either bidirectional ports with open-drain outputs or System Bus pins which the memory controller uses when it is accessing off-chip memory. If the EA line is. low, the pins always act as the System Bus. Otherwise they act as bus pins, only during a memory access. If these pins are being used as ports and bus pins, ones must be written to them prior to bus operations. In parallel with the weak internal pullup, is a' much stronger internal pullup that is activated for one state time when the pin is internally driven from 0 to J. This is done Strong internal pullups are used during external memory read or write cycles when the pins are used as address or data outputs. At any other time, the internal pullups are HSI.O INPUT ENABLE/DiSABLE TIMER 2 RESET EACH WRITE ~--- HSI.1 INPUT ENABLE/DISABLE ,1.-_ _ _ _ TIMER'2 EXTERNAL RESET ENABLE/DiSABLE ~----- HSI.2 INPUT ENABLE/DiSABLE ' - - - - - - - - TIMER 2 RESET SOURCE HSI.orT2FiSf ' - - - - - ' - - - - " - - - - - HSI.3 INPUT ENABLE/DISABLE ' - - - - - - - - - - - 'TIMER 2 CLOCK SOURCE HSI.1tT2CLK Figure, 2-28. 1/0 Control Register 2-20 o (lOCO) ARCHITECTURAL OVERVIEW 2.13.3. 1/0 Control Register 1 (IOC1) disabled. The port pins and their system bus functions are shown below: Port Pin System Bus Function P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 P4.0 P4.1 P4.2 P4.3 P4.4 P4.5 P4.6 P4.7 ADO ADI AD2 AD3 AD4 AD5 AD6 AD7 AD8 AD9 AD 10 ADll ADl2 ADl3 ADI4 ADI5 10C I is used to select some pin functions and enable or disable some interrupt sources. Its location is 0016H. Port pin P2.5 can be selected to be the PWM output instead of a standard output. The external interrupt source can be selected to be either EXTINT (same pin as P2. 2) or Analog Channel 7 (ACH7, same pin as PO.7). Timer I and Timer 2 overflow interrupts can be individually enabled or disabled. The HSI interrupt can be selected to activate either when there is I FIFO entry or 7. Port pin P2.0 can be selected to be the TXD output. HSO.4 and HSO.5 can be enabled or disabled to the HSO unit. More information on interrupts is availabldn section 2.5. The positions of the lOCI control bits are shown in Figure 2-29. 2.13.4. 1/0 Status Register 0 (1050) There are two I/O status registers, 10SO and lOS I. 10SO, located at 0015H, holds the current status of the HSO lines and CAM. The status bits of 10SO are shown in Figure 2-30. - 2.13.5. 1/0 Status Register 1 (IOS1) 10SI is located at 0016H. It contains status bits for the timers and the HSI. Every access of this register clears all of the timer overflow and timer expired bits. It is, therefore, important to first store the byte in a temporary location before attempting to test any bit unless only one bit will ever be of importance to the program. The status bits of 10SI are shown" in Figure 2-31. 2.13. STATUS AND CONTROL REGISTERS 2.13.1. I/O Control Registers There are two 110 Control registers, lOCO and lOCI. lOCO controls Timer 2 and the HSI lines. lOCI controls some pin functions, interrupt sources and 2 HSO pins. Whenever input lines are switched between two sources, or enabled, it is possible to generate transitions on these lines. This could cause problems with respect to edge sensitive lines such as the HSI lines, Interrupt line, and Timer 2 control lines. 2.14. WATCHDOG TIMER (WDT) This feature is provided as a means of graceful recovery from a software upset. Once the watchdog is initialized, if the software fails to reset the watchdog at least every 64K state times, a hardware reset will be initiated. 2.13.2. I/O Control Register 0 (lOCO) lOCO is located at 0015H. The four HSI lines can be enabled or disabled to the HSI unit by setting or clearing bits in lOCO. Timer 2 functions including clock and reset sources are also determined by lOCO. The control bit locations are shown in Figure 2-28. The watchdog is initialized by the first write of the clear WDT code to the WDT register. Once the watchdog is initialized it cannot be disabied by software. On reset the watchdog is not active. LOCATION 16H 17161s141312111 0 1 l:= SELECT PWMlSELECT P2.5 EXTERNAL INTERRUPT - ACH7/EXTINT TIMER 1 OVERFLOW INTERRUPT ENABLE/DISABLE TIMER 2 OVERFLOW INTERRUPT ENABLE/DISABLE HSO.4 OUTPUT ENABLEIDISABLE SELECT TXO/SELECT P2.0 HSO.S OUTPUT ENABLE/DiSABLE HSI INTERRUPT - FIFO FULLI;:;:HO;::;;L;-;D;;;IN;;;G ...... RE;;;G"'I;:;;ST..E;;;R"L-;:O~A-;;D=ED Figure 2-29.1/0 Control Register 1 (IOC1) 2-21 ARCHITECTURAL OVERVIEW LOCATION 1SH 17161S141312111 0 1 L-:= IHSO •O CURRENT STATE HSO.1 CURRENT STATE HSO.2 CURRENT STATE HSO.3 CURRENT STATE HSO.4 CURRENT STATE HSO.S CURRENT STATE CAM IS FULL OR HOLDING REGISTER IS FULL HSO HOLDING REGISTER IS FULL Figure 2-30. 1/0 Status Register 0 (IOSO) , LOCATION 16H 17161~14131211101 L-:= SOFTWARE TIMER 0 EXPIRED SOFTWARE TIMER 1 EXPIRED SOFTWARE TIMER 2 EXPIRED SOFTWARE TIMER 3 EXPIRED TIMER 2 HAS OVERFLOW TIMER 1 HAS OVERFLOW HSI FIFO IS FULL HSI HOLDING REGISTER DATA AVAILABLE Figure 2-31. HSIO Status Register 1 (IOS1) 2.14.1. Disabling The Watchdog The software can be designed so that the watchdog times out if the program does not progress properly. The watchdog will also time-out if the software error was due to ESD (Electrostatic Discharge) or other hardware related problems. This prevents the controller from having a malfunction for longer than 16 mS if a 12 MHz oscillator is used. The watchdog should be disabled by software not initializing it. If this is not possible, such as during program development, the watchdog can be disabled by holding the RESET pin at 2.0 to 2.5 volts. Voltages over 2.5 volts on the pin could quickly damage the part. Even at 2.5 volts, using this technique for other than debugging purposes is not recommended, as it may effect long term reliability. It is further recommended that any part used in this way for more than several seconds, not be used in production versions of products. The watchdog timer is a 16-bit counter which is incremented every state time. When it overflows it pulls down the RESET pin for at least two state times, resetting the 8096 and any other chips connected to the reset line. To prevent the timer from overflowing and resetting the system, it must be cleared periodically. Clearing the timer is done by writing a "OIEH" followed by an "OElH" to the WDT register at location OOOAH. 2.15. RESET 2.15.1. Reset Signal As with all processors, the 8096 must be reset each time the power is turned on. To complete a reset, the RESET pin must be held active (low) for at least 2 state times after VCC, the oscillator, and the back bias generator have, stabilized (-1.0 milliseconds). Then when RESET is brought high again, the 8096 executes a reset sequence that takes 10 state times. (It initializes some registers, clears the PSW and jumps to address 2080H.) Use of a large reset capacitor on the RESET pin will increase the length of time required for a 'watchdog initiated reset. This is because the capacitor will keep the RESET pin ,from responding immediately to the internal pull-ups and pull-downs. A large capacitor on the RESET pin may also interfere with the reset of other parts connected to the RESET pin. Under some circumstances, it may be desirable to use an open collector circuit. See section 4.4. The 8096 can be reset using a capacitor, I-shot, or any other method capable of providing a pulse of at least 2 2-22 ARCHITECTURAL OVERVIEW NMI state times longer than required for VCC and the oscillator to stabilize. For best functionality, it is suggested that the reset pin pe pulled low with an open collector device. In this way, several reset sources can be wire ored together. Remember, the RESET pin itself can be a reset source (see section 2.14). Details of hardware suggestions for reset can be found in section 4.4. A low to high transition causes a vector to external memory location OOOOH. Reserved for use in Intel Development systems. It is important to note that the Stack Pointer and Interrupt Pending Register are undefined, and need to be initialized in software. The Interrupts are disabled by both the mask register and pSW. 9 after a reset. 2.15.2. Reset Status 2.15.3. Reset Sync Mod, The I/O lines and control of the 8096 will be in their reset state within 2 state times after reset is low, with VCC and the oscillator stabilized. Prior to that time, the status of the 110 lines is indeterminate. After the 10 state time reset sequence, lite Special Function Registers will be set as follows: The RESET line can be used to Starnhe 8096 at an exact state time to provide for synchronization of test equipment and multiple chip systems. RESET is active low. To synchronize parts, RESET is brought high on the rising edge of XTALI. Complete details on synchronizing parts can be found in section 4.1. 5. SFR Port I Port 2 Port 3 Port 4 PWM Control Serial Port (Transmit) Serial Port (Receive) Baud Rate Register Serial ControVStatus AID Command AID Result Interrupt Pending Interrupt Mask Timer 1 Timer 2 Watchdog Timer HSI Mode HSI Status 10SO lOS 1 lOCO lOCI It is very possible that parts which start in sync may not stay that way. The best example of this would be when a "jump on 110 bit" is being used to hold the processor in a loop. If the line changes during the time it is being tested, one processor may see it as a one, while the other sees it as a zero. The result is that one processor will do an extra loop, thus putting it several states out of sync with the other. reset-value llllllllB 1l0XXXXIB llllllllB 1111111IB OOH undefined undefined undefined undefined undefined undefined undefined OOOOOOOOB OOOOH OOOOH OOOOH 11 11 11 llB undefined OOOOOOOOB OOOOOOOOB XOXOXOXOB XOXOXXXIB 2.16. PIN DESCRIPTION vee Main supply voltage (5V). VSS Digital circuit ground (OV).There are two VSS pins, both must be tied to ground. VPD RAM standby supply voltage (5V). This Voltage must be present during normal operation. See section 2.4.2 and 4. VREF Reference voltage and power supply for the analog portion of the AID converter. Nominally at 5 volts. See section 2.9.1 and 4. Other conditions following a reset are: Register HSI FIFO HSOCAM HSO lines PSW Stack Pointer Program Counter RD WR ALE BHE INST ANGNO Reference ground for the AID converter. Should be held at nominally the same potential as VSS. See section 2.9.1 and 4. reset value empty empty OOOOOOB OOOOH undefined 2080H high high low low high vaa Substrate voltage from the on-chip back-bias generator. This pin should be connected to ANGND through a 0.01 uf capacitor (and not connected to anything else). The capacitor is not required if the AID converter is not being ' used. XTALl Input of the oscillator inverter and input to the internal clock generator. See sections 2.2 and 4. 2·23 ARCHITECTURAL OVERVIEW XTAL2 WR Output of the oscillator inverter. See section 2.2. Write signal output to external memory. WR is activated only during external memory writes. See section 2.3.6 and 4,6. CLKOUT Output of the internal clock generator. The frequency of CLKOUT is y, the oscillatorfrequency. It has a 33% duty cycle. CLKOUT can drive' one TTL input. See section 2.2. SHE Bus High Enable signal output to external memory. BHE (O/l) selects/deselects the bank of memory that is connected to the high byte of the data bus. See section 2.3.5 and 4.6. RESET Reset input to the chip, also output to other circuits. Input low for at least 2 state times to reset the chip. RESET has a strong internal pullup. See section 2.15 and 4.1. READY TEST Input low enables a factory test mode. The user should tie this pin to VCC for llormal operation. The READY input is used to lengthen external memory bus cycles up to the time specified in the data sheet. It has a weak internal pullup. See section 2.3.6 and 4.6. NMI A low to high transition causes a vector to external memory location OOOOH. Reserved for use in Intel Development systems. INST Output high while the address is valid during an external read indicates the read is an instruction fetch. See section 2.3.6 and 4.6. EA Input for memory select (External Access). EA = 1 causes memory accesses to locations 2000H through 3FFFH to be directed to on-chip ROM. EA = 0 causes accesses to these locations to be directed to off-chip memory. EA has an internal puUdown, so it goes to 0 unless driven to 1. See section 2.3,3. HSI High impedance inputs to HSI Unit. Four HSI pins are available: HSI.O, HSl.l, HSI.2, and HSI.3. Two of them (HSI.2 and HSI.3) are shared with the HSO Unit. See section 2.7. HSO Outputs from HSO Unit. Six HSO pins are available: HSO.O, HSO.l, HSO.2, HSO.3, HSOA, and HSO.5. Two of them (HSOA and HSO.5) are shared with the HSI Unit. All HSO pins are capable of driving one TTL input. See section 2.8. PORT O/ANALOG CHANNEL High impedance input-only port. These pins can be,used as digital inputs and/or as analog inputs to the on-chip AID converter. See sections 2.9 and 2.12.1. ALE Address Latch Enable output. ALE is activated only during external memory accesses. It is used to latch the address from the multiplexed address/data bus. See section . 2.3.5 and 4.6. PORT 1 Quasi-bidirectional I/O port, All pins of PI are capable of driving one LS TTL input. See section 2.12.2. RD PORT 2 Multi-functional port. Six of its pins are shared with other functions in the 8096, as shown below. Read signal output to external memory. RD is activated only during external memory reads. See section 2.3.5 and 4.6. Port Function P2.0 P2.1 P2.2 P2.3 P2A P2.5 P2.6 P2.7 output input illput inI1ut input, output quasi-bidirectional quasi-bidirectional Alternate Function TXD (serial port transmit) RXD (serial port receive) EXTINT (external interrupt) T2CLK (Timer 2 input) T2R~T (Timer 2 reset) PWM (pulse-width modulator) 2-24 Reference sectic;m 2.11.3 2.11.3 2.5 2.6.2 2.6.2 2,10 ARCHITECTURAL OVERVIEW The multi-functional inputs are high impedance. See section 2.12.3. Name Pl.1 Pl.2 P1.3 Pl.4 Pl.5 Pl.6 Pl.7 P2.0/TXD P2.IIRXD P2.2/EXTINT P2.3/T2CLK P2.4!T2RST P2.5/PWM P2.6 P2.7 P3.0/ADO P3.IIADl P3.2/AD2 P3.3/AD3 P3.4/AD4 P3.5/AD5 P3.6/AD6 P3.7/AD7 P4.0/AD8 P4.IIAD9 P4.2/ADIO P4.3/AD11 P4.4/ADI2 P4.5/AD13 P4.6/ADI4 P4.7/ADl5 RD READY RESET RXD/P2.1 TEST TXD/P2.0 T2CLKlP2.3 T2RST/P2.4 VBB VCC VPD VREF VSS VSS WR XTALl XTAL2 PORTS 3 AND 4 8-bit bidirectional 110 ports. These pins are shared the multiplexed address/data bus when accessing external memory, with the Port 3 pins accessing the low byte and Port 4 pins accessing the high byte. They are open drain except when being used as system bus pins. See section 2.3.5. 2.17. PIN LIST The following is a list of pins in alphabetical order. Where a pin has two names it has been listed under both names, except for the system bus pins, ADO-ADI5, which are listed under Port 3 and Port 4. Name ACHO/PO.O ACHIIPO.1 ACH2/PO.2 ACH3/PO.3 ACH4/PO.4 ACH5/PO.5 ACH6/PO.6 ACH7/PO.7 ALE ANGND BHE CLKOUT EA EXTINT/P2.2 HSI.O HSI.1 HS1.2/HSO.4 HSI.3/HSO.5 HSO.O HSO.l HSO.2 HSO.3 HSO .4/HSI. 2 HSO.5/HSI.3 INST NMI PWM/P2.5 PO.O/ACHO PO.IIACHl PO.'2/ACH2 PO.3/ACH3 PO.4/ACH4 PO.5/ACH5 PO.6/ACH6 PO.7/ACH7 Pl.O 68-Pln 4 5 3 6 67 68 2 1 16 66 37 13 7 63 54 53 52 51 50 49 44 43 52 51 15 7 39 4 5 3 6 67 68 2 1 59 48-Pln - 43 42 40 41 34 44 15 39 47 3 4 5 6 7 8 9 10 5 6 - 13 - - 43 42 , 40 41 68-Pln 58 57 56 55 48 47 46 60 61 63 34 36 39 45 40 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 17 35 62 61 14 60 34 36 41 9 64 65 10 42 38 11 12 48-Pln 2 I 47 13 - 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 33 16 48 1 - 2 12 38 46 45 11 37 14 36 35 The Following pins are not bonded out in the 48-pin package: PLO through P1.7, PO.O through PO.3, P2.3, P2.4, P2.6, P2.7 CLKOUT, INST, NMI, TEST, T2CLK(P2.3), T2RST(P2.4). - 2-25 MCS®,96 Software Design Information 3 CHAPTER 3 MCS®-96 SOFTWARE DESIGN INFORMATION 3.0. INTRODUCTION operators can be applied to WORD operands but the result must be interpreted modulo 65536. Logical operations on WORDS are applied bitwise. Bits within words are labeled from 0 to 15 with 0 being the least significant bit. WORDS must be aligned at even byte boundaries in the MCS-96 address space. The least significant byte of the WORD is in the even byte address and the most significant byte is in the next higher (odd) address. The address of a word is the address of its least significant byte. This section provides information which will primarily interest those who must write programs to execute in the 8096. Several other sources of information are currently available which will also be of interest: MCS@·96 MACRO ASSEMBLER USER'S GUIDE Order Number 122048-001 MCS·96 UTILITIES USER'S GUIDE Order Number 12204'l-001 3.1.3. Short-Integers SHORT-INTEGERS are 8-bit signed variables which can take on the values between - 128 and + 127. Arithmetic operations which generate results outside of the range of a SHORT-INTEGER will set the overflow indicators in the program status word. The actual numeric result returned will be the same as the equivalent operation on BYTE variables. There are no alignment restrictions on SHORT-INTEGERS so they may be placed anywhere in the MCS-96 address space. MCS·96 MACRO ASSEMBLER AND UTILITIES POCKET REFERENCE . Order Number 122050-001 Throughout this chapter short segments of code are used to illustrate the operation of the device. For these sections it has been assumed that a set of temporary registers have been predeclared. The names of these registers have been chosen as follows: AX, BX, CX, and DX are 16 bit registers. 3.1.4. Integers AL is the low byte of AX, AH. is the high byte. .BL is the low byte of BX INTEGERS are 16-bit signed variables which can take on the values between - 32,768 and 32,767. Arithmetic operations which generate results outside of t~e range of an INTEGER will set the overflow indicators in the program status word. The actual numeric result returned will be the same as the equivalent operation on WORD variables. INTEGERS conform to the same alignment and addressing rules as do WORDS. CL is the low byte of CX DL is the low byte of DX These are the same as the names for the general data ~gisters used in 8086. It is important to note, however, that in the 8096, these are not dedicated registers but merely the symbolic names assigned by the programmer to an eight byte region within onboard register file. 3.1.5. Bits BITS are single-bit operands which can take on the Boolean'values of true and false. In addition to the normal support for bits as components of BYTE and WORD operands, the 8096 provides for the direct testing of any bit in the internal register file. The MCS-96 architecture requires that bits be addressed as components of BYTES or WORDS, it does not support the direct addressing of bits that can occur in the MCS-51 architecture. 3.1. OPERAND TYPES The MCS@-96 architecture provides support for a variety of data types which are likely to be useful in a control application. In the discussion of these operand types that follows, the names adopted by the PLM-96 programming language will be used where appropriate. To avoid confusion the name of an operand type will be capitalized. A "BYTE" is an unsigned eight bit variable; a "byte" is an eight bit unit of data of any type. 3.1.6. Double-Words DOUBLE-WORDS are unsigned 32-bit variables which can take on the values between 0 and 4,294,967,295. The MCS-96 architecture provides direct support for this operand type only for shifts and as the dividend in a 32 by 16 divide and the product of a 16 by 16 mUltiply. For these operations a DOUBLE-WORD variable must reside in the on-board register file of the 8096 and be aligned at an address which is evenly divisible by 4. A DOUBLEWORD operand is addressed by the address of its least significant byte. DOUBLE-WORD operations which are not directly supported can be easily implemented with two WORD operations. For consistency with INTEL provided software the user should adopt the conventions for addressing DOUBLE-WORD operands w/lich are discussed in section 3.5. 3.1.1. Bytes BYTES are unsigned 8-bit variables which can take on the values between 0 and 255. Arithmetic and relational operators can be applied to BYTE operands but the result must be interpreted in modulo 256 arithmetic. Logical operations on BYTES are applied bitwise. Bits within BYTES are labeled from 0 to 7 with 0 being the least significant bit. There are no alignment restrictions for BYTES so they may be placed anywhere in the MCS-96 address space. 3.1.2. Words WORDS are unsigned 16-bit variables which can take on the values between 0 and 65535. Arithmetic and relational 3·1, MCS®·96 SOFTWARE DESIGN INFORMATION 3.1.7. Long-Integers address which is evenly divisible by 4. A LONG-INTEGER is addressed by the address of its least significant byte. LONG-INTEGERS are 32-bit signed variables which can take on the values between -2,147,483,648 and 2,147,483,647. The MCS-96 architecture provides direct support for this data type only for shifts and as the dividend in a 32 by 16 divide and the product of a 16 by 16 mUltiply. LONG-INTEGER operations which are not directly supported can be easily implemented with two INTEGER operations. For consistency with Intel provided software, the user should adopt the conventions for addressing LONG operands which are discussed in section 3.5. LONG-INTEGERS can also be normalized. For these operations a LONG-INTEGER variable must reside in the onboard register file of the 8096 and be aligned at an 3.2. OPERAND ADDRESSING scribed as they are seen through the assembly language. The six basic addressing modes which will be described are termed register-direct, indirect, indirect with auto-increment, immediate, short-indexed, and long-indexed. Several other useful addressing operations can be achieved by combining these basic addressing modes with specific registers such as the ZERO register or the stack pointer. Operands are accessed within the address space of the 8096 with one of six basic addressing modes. Some of the details of how these addressing modes work are hidden by the assembly language. If the programmer is to take full advantage of the architecture, it is important that these details be understood. This section will describe the addressing modes as they are handled by the hardware. At the end of this section the addressing modes will be de- 3.2.1. Register-direct References register address must conform to the alignment rules for the operand type. Depending on the instruction, up to three registers can take part in the calculation. . The register-direct mode is used to directly access a register from the 256 byte on-board register file. The register is selected by an 8-bit field within the instruction and Examples AX,BX,CX AX,BX CL ADD MUL INCB ; AX:=BX+CX ; AX:=AX*BX : CL'=CL+ I 3.2.2. Indirect References The indirect mode is used to access an operand by placing its address in a WORD variable in the register file. The calculated address must conform to the alignment rules for the operand type. Note that the indirect address can refer to an operand anywhere within the address space of the 8096, including the register file. The register which contains the indirect address is selected by an eight bit field within the instruction. An instruction can contain only one indirect reference and th.e remaining operands of the instruction (if any) must be register-direct references. Examples LD ADDB POP AX,[AX] ; AX: = MEM _ WORD(AX) AL,BL,[CX] ; AL: = BL + MEM _ BYTE(CX) [AX] ; MEM _ WORD(AX) : = MEM _ WORD(SP), SP. = SP + 2 3.2.3. Indirect with Auto-increment References This addressing mode is the same as the indirect mode except that the WORD variable which contains the indirect address is incremented after it is used to address the operand. If the instruction operates on BYTES or SHORT- INTEGERS the indirect address variable will be incremented by one, if the instruction operates on WORDS or INTEGERS the indirect address able will be incremented by two. Examples LD ADD PUSH : AX: = MEM _ WORD(BX); BX: = BX + 2 AX,[BX]+ AL,BL,[CX] + AL:=AL+BL+MEM _ BYTE(CX); CX:=CX+ I SP: =SP-2; [AX] + MEM _ WORD(SP): = MEM _ WORD(AX) AX:=AX+2 3·2 MCS~.96 SOFTWARE DESIGN INFORMATION 3.2.4. Immediate References This addressing mode allows an operand to be taken directly from a field in the instruction. For operations on BYTE or SHORT-INTEGER operands this field is eight bits wide, for operations on WORD or INTEGER oper- ands the field is 16 bits wide. An instruction can contain only one immediate reference and the remaining operand(s) must be register-direct references. Examples ADD AX,#340; AX:=AX+340 PUSH #1234H ; SP· =SP-2; MEM _ WORD(SP):= 1234H DIVB AX,#l0 . AL:=AXIlO; AH:=AX MOD \0 3.2.5. Short-indexed References In this addressing mode an eight bit field in the instruction selects a WORD variable in the register file which is assumed to contain an address. A second eight bit field in the instruction stream is sign-extended and summed with the WORD variable to .form the address of the operand which will take part in the calculation. Since the Examples LD MULB AX,12[BX] AX,BL,3[CX] eight bit field is sign-extended the effective address can be up to 128 bytes before the address in the WORD variable and up to 127 bytes after it. An instruction cpn contain only one short-indexed reference and the rem "'1' ing operand(s) must be register-direct references . AX: = MEM _ WORD(BX + 12) . AX. = BL *MEM _ BYTE(CX + 3) 3.2.6. Long-indexed References This addressing mode is like the short-indexed mode except that a 16-bit field is taken from the instruction and added to the WORD variable to form the address of the operand. No sign extension is necessary. An instruction can contain only one long-indexed reference and the reo maining operand(s) must to register-direct references, Examples AND AX,BX,TABLE[CX] . AX: = BX AND MEM _ WORD(TABLE + CX) ST AX,TABLE[BX] , MEM _ WORD(TABLE + BX) . = AX ADDB AL,BL,LOOKUP[CX] .. AL' = BL + MEM _ BYTE(LOOKUP + CX) 3.2.7. ZERO Register Addressing The first two bytes in the register file are fixed at zero by the 8096 hardware. In addition to providing a fixed source of the constant zero for calculations and comparisons, this register can be used as the WORD variable in a longExamples ADD AX, 1234[0] POP 5678[0] 3.2~8. indexed reference. This combination of register selection and address mode allows any location ID memory to be addressed directly. ; AX: = AX + MEM _ WORD(l234) , MEM _ WORD(5678): = MEM _ WORD(SP) ; SP:=SP+2 Stack Pointer Register Addressing The system stack pointer in the 8096 can be accessed as register 18H of the internal register file. In addition to providing for convenient manipulation of the stack pointer, this also facilitates the accessing of operands in the stack. The top of the stack, for example, can be accessed by Examples PUSH LD [SP] AX,2[SP] using the stack pointer as the WORD variable in an indirect reference. In a similar fashion, the stack pointer can be used in the short-indexed mode to access data within the stack. ; DUPLICATE TOP _ OF _ STACK ; AX: = NEXT _ TO _ TOP 3-3 MCS®·96 SOFTWARE DESIGN INFORMATION 3.2.9. Assembly Language Addressing Modes The 8096 assembly language simplifies the choice of addressing modes to be used in several respects: Indexed Addressing. The assembly language will choose between short and long indexing depending on the value of the index expression. If the value can be expressed in eight bits then short indexing will be used, if it cannot be expressed in eight bits then long indexing will be used. Direct Addressing.The assembly language will choose between register-direct addressing and long-indexed with the ZERO register depending on where the operand is in memory. The user can simply refer to an pperand by its symbolic name; if the operand is in the register file, a register-direct reference will be used, if the operand is elsewhere in memory, a long-indexed reference will be generated. The use of these features of the assembly language simplifies the programming task and should be used wherever possible. 3.3 PROGRAM STATUS WORD The program status word (PSW) is a collection of Boolean flags which retain information concerning the state of the user's program. The format of the PSW is shown in figure 3-1. The information in the PSW can be broken down into two basic categories; interrupt control and condition flags. The PSW can be saved in the system stack with a single operation (PUSHF) and restored in a like manner (POPF). Figure 3-1. PSW Register eration generated a' negative result. Note that the N flag will be set to the algebraically correct state even if the calculation overflows. 3.3.1. Interrupt Flags The lower eight bits of the PSW are used to individually mask the various sources of interrupt to the 8096. A logical 'I' in these bit positions enables the servicing of the corresponding interrupt. These mask bits can be accessed as an eight bit byte (lNT-MASK - address 8) in the onboard register file. Bit 9 in the PSW is the global interrupt enable. If this bit is cleared then all interrupts will be locked out except for the Non Maskable Interrupt (NMI). Note that the various interrupts are collected in the INT _ PENDING register even if they are locked out. Execution of the corresponding service routines will procede according to their priority when they become enabled. Further information on the interrupt structure of the 8096 can be found in sections 2.5 and 3.6. V. The V (oVerflow) flag is set to indicate that the operation generated a result which is outside the range that can be expressed in the destination data type. VT. The VT (oVerflow Trap) flag is set whenever the V flag is set but can only be cleared by an instruction which explicitly operates on it such as the CLRVT or IVT instructions. The operation of the VT flag allows for the testing for a possible overflow condition at the end of a sequence of related arithmetic operations. This is normally more efficient than testing the V flag after each instruction. C. The C (Carry) flag is set to indicate the state of the arithmetic carry from the most significant bit of the ALU for an arithmetic operation or the state of the last bit shifted out of the operand for a shift. Arithmetic Borrow after a subtract operation is the complement of the C flag (i.e. if the operation generated a borrow then C=O). 3.3.2. Condition Flags The remaining bits in the PSW are set as side effects of instruction execution and can be tested by the conditional jump instructions. Z. The Z (Zero) flag is set to indicate that the operation generated a result equal to zero. For the add-with-carry (ADDC) and subtract-with-borrow (SUBC) operations the Z flag is cleared if the result is non-zero but is never set. These two instructions are normally used in conjunction with the ADD and SUB instructions to perform multiple precision arithmetic. The operation of the Z flag for these instructions leaves it indicating the proper result for the entire multiple predsion calculation. ST. The S1 (STicky bit) set to indicate that during a right shift a I has been shifted first into the C flag and then been shifted out. The ST flag is undefined after a multiply operation. The ST flag can be used along with the C flag to control rounding after a right shift. Consider multiplying two eight bit quantities and then scaling the result' down to 12 bits: N. The N (Negativ~) flag is set to indicate that the op- MULUB SHR 3-4 AX,CL,DL AX,#4 : AX:=CL*DL ; Shift right 4 places , MCS®-96 SOFTWARE DESIGN INFORMATION If the C flag is set after the shift it indicates that the bits shifted off the end of o~rand were greater-than or equalto one half the least signi,ficant bit (LSB) of the result. If the C flag is clear after the shift it indicates that the bits shifted off the end of the operand were less than half the LSB of the result. Without the ST flag, the rounding decision must be made on the basis of this information alone. (Normally the result would be rounded up if the C ,flag is set.) The ST flag allows a finer resolution in the rounding decision: CST 00 Value of the bits shifted off Value = 0 o1 o< 1 0 1 1 Value performs a 32 bit addition, and the sequence SUB SUBC performs a 32 bit subtraction. Operations on REAL (i.e. floating point) variables are not supported directly by the hardware but are supported by the floating point library for the 8096 (FPAL-96) which implements a single precision subset of the proposed IEEE standard for floating p6int operations. The performance of this software is significantly improved by the 8096 NORML instruction which normalizes a 32-bit variable and by the existence of the ST flag in the PSW. Value 'S Y2 LSB Value = Y2 LSB In addition to the operations on the various data types, the 8096 supports conversions between these types. LDBZE (load byte zero extended) converts a BYTE to a WORD and LDBSE (load byte sign extended) converts a SHORT-INTEGER into an INTEGER. WORDS can be converted to DOUBLE-WORDS by simply clearing the upper WORD of the DOUBLE-WORD (CLR) and INTEGERS can be converted to LONGS with 1he EXT (sign extend) instruction., > Y2 LSB Figure 3-2. Rounding Alternatives Imprecise rounding can be a major source of error in a numerical calculation; use of the ST flag improves the options available to the programmer. The MCS-96 instructions for addition, subtraction, and comparison do not distinguish between unsigned words and signed integers. Conditional jumps are provided to allow the user to treat the results of these operations as either signed or unsigned quantities. As an example, the CMPB (compare byte) instruction is used to compare both signed and unsigned eight bit quantities. A JH (jump if higher) could be used following the compare if unsigned operands were involved or a JGT (jump if greater-than) if signed operands were involved. 3.4 INSTRUCTION SET The MCS-96 instruction set contains a full set of arithmetic and logical operations for the 8-bit data types BYTE and SHORT INTEGER and for the 16-bit data types WORD and INTEGER. The DOUBLE-WORD and LONG data types (32 bits) are supported for the products of 16 by 16 mUltiplies and the dividends of 32 by 16 divides and for shift operations. The remaining operations on 32 bit variables can be implemented by combinations of 16 bit operations. As an example the sequence: ADO ADOC AX,CX BX,OX Tables 3-1 and 3-2 summarize the operation of each of the instructions and Tables 3-3 and 3-4 give the opcode, byte count, and timing information for each of the instructions. AX,CX BX,DX 3-5 MCS I8l·96S0F'TWARE DESIGN INFORMATION Table 3-1. Instruction SLlmmary Mnemonic Flags Operands ADD/ADDB 2 D +-D+A ADD/ADDB 3 2 2 D +-D+A+C ADDC/ADDeB SUB/SUBB SUB/SUBB Z N C V VT ST Notes / / / / t / / / / t ~ / / / t / / / / t / / / / t ~ / / / t - Operation (Note 1) . D +- B+A D+-D-A D+-B-A MUUMULU 3 2 2 2 0, D + 2 +- D MUUMULU 3 0, D MULB/MULUB 2 0,0+ I+- D - MULB/MULUB 3 0, D + - - - - - DIV/DIVU 2 D +- (0, D + 2)/A 0+2 remainder - / 2 o +- (0,0 t DIVBIDIVUB AND/ANDB 2 D<-DandA AND/ANDB D<-BandA XORIXORB 3 2 2 o <- D (excl. or) A D+-A SUBC/SUBCB CMP/CMPB D+-D-A+C-I / / D-A + 2 +- B * A *A I+- B * A D+I ORiORB - + I)/A remainder - - - LD/LDB 2 ST/STB 2 A+-D LDBSE 2 o +-A; D LDBZE 2 D+-A;D+ 1+-0 PUSH I POP I A +- (SP); SP <-- SP + 2 PUSHF 0 SP <-- SP - 2; (SP) <-- PSW; PSW <-- ooooH 1+-0 1<--/ + I +- SIGN(A) A 0 0 0 POPF 0 PSW <-- (SP); SP +- SP + 2 SJMP I PC+-PC+ II-bit offset - UMP I - - - - BR(indirect) I PC +- PC + 16-bit offset PC +- (A) - - SCALL I SP <- SP - 2; (SP) +- PC; PC +- PC + II-bit offset - - - LCALL I SP +- SP - 2; (SP) +- PC; PC +- PC + 16-bit offset - - RET 0 PC +- (SP); SP +- SP + 2 J(conditional) 1 PC +- PC + 8-bit offset - JC I Jump if C JNC Note I Jump if C =I =0 / t - - ? - - ? - - ? ? 0 0 2 2 3 3 2 - - - - / t / / 0 0 - / / 0 0 - / / 0 0 - / / 0 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - D <- Dor A . SP <-- SP - 2; (SP) j - - - *A 3 3,4 3,4 0 / / / / / / - - - - 5 - - - - - 5 - - - - - - - - - - 5 5 - 5 - - - 5 5 1. If the mnemonic ends in "B", a byte operation is performed, otherwise a word operation is done Operands D, B. and A must conform to the alignment rules for the required operand type. D and B are locations in the register file; A Can be located anywhere in memory. 2. D, D + 2 are consecutive WORDS in memory; D is DOUBLE·WORD aligned. 3. D. D + 1 are consecutive BYTES in memory; D is WORD aligned. 4. Changes a byte to a word. 5. Offset is a 2' s complement numbe.r. 3-6 MCS®·96 SOFTWARE DESIGN INFORMATION Table 3-2. Instruction Summary Mnemonic JE JNE JOE 1 1 1 JLT JOT JLE JH JNH JV JNV JVT JNVT JST JNST JBS JBC DJNZ 1 1 1 1 1 1 1 I 3 3 1 DECIDECB I NEG/NEGB INCIlNCB EXT EXTB 1 1 1 1 1 NOT/NOTB CLRlCLRB SRUSHLB/SHLL SHRlSHRBISHRL SHRAISHRAB/SHRAL SETC CLRC CLRVT RST DI EI NOP SKIP NORML TRAP Flaas Operands I 1 1 I 2 2 2 0 0 0 0 0 0 0 0 2 0 Operation (Note 1) Z N C V VT ST Notes - - - - - 5 Jump if Z = Jump if Z = Jump if N = Jump ifN = Jump if N = Jump if N = Jum~ if C = 1 0 0 1 0 and Z = 0 I or Z = 1 1 and Z = 0 Jump if C = 0 or Z = 1 Jump if V = I Jum~ifV = 0 Jump if VT = I; Clear VT Jump if VT = 0; Clear VT Jump if ST = 1 Jump if ST = 0 Jump if Specified Bit = 1 Jump if Specified Bit = 0 D +- D - I; if D*"O then PC +- PC + 8-bit offset D+-D-l D<-O-D D+-D+I D +- D; D+ 2 +- Sign (D) D +- D; D + 1 +- Sign (D) D <- Logical Not (D) D+-O C +- msb - - - - - I s b +-0 o~ msb - - - - - Isb ~ C msb~ msb-----Isb~ C +-'1 C+-O VT<-O PC +- 2080H Disable All Interrupts (I +- 0) Enable All Interrupts (I +- I) PC+-PC+I PC+-PC+2 Normalize (See sec 3.13.66) SP +- SP - 2; (SP) +- PC; PC +(2010R) - - - - - - - ~ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 0 - - - - - - - - - - - - - - - / / / / t / / / / t / / / / t / / 0 0 - - - - / / / / 1 0 / ? / 0 C - ~ 0 .0 0 0 0 0 - - - / / t / 0 - / / / / 0 - / - - 1 - - - - 0 - - - 0 - - - 0 '0 0 0 5 5 5 5 5 5 5,6 5,6 5 2 3 7 7 7 ~ 0 8 - - - - - - - - - - - - - - - - - / I 0 - - - 7 - - - - 9 - 0 5 5 5 5 5 5 5 - - - Note I. If the mnemonic ends in "B", a byte operation is ,performed, otherwise a word operation is done. Operands 0, B and A must conform to the alignment rules for the required operand type. 0 and B are locations in the register file; A can be located anywhere in memory. Offset is a 2' s complement number. . Specified bit is one of the 2048 bits in the register file. The "L" (Long) suffix indicates double-word operation. Initiates a Reset by pulling RESET low. Software should re-initialize all th~ necessary registers with code starting at 2080H. The assembler will not accept this mnemonic. 5. 6. 7. 8, 9. 3-7 MCS(!!l·96 SOFTWARE DESIGN INFORMATION Table 3~3. Opcode and State Time Listing DIRECT S:! Z 0 :E INDEXED@ SHORT LONG f/) Q Z 0( II: W W :E 0 Z INDIRECT@ NORMAl:. AUTO-INC. IMMEDIATE Q. W Q 0 (,) Q. .0 W f/) W ~ m 1IJf/) !;(W I-'! f/)I- Q 0 (,) Q. 0 W f/) IIJ ~ m Wf/) !;(W I-'! f/)I- Q 0 ~ f/) W ~ Elf/) IIJIIJ !;(:E 1-'f/)I- f/) W Elf/) Ww !;(:E ~ ~i= m m 0 ARITHMETIC INSTRUCTIONS W Q 0 (,) Q. f/) W I- > 0 m Elf/) f/) Elf/) Ww !;(:E ~i= Ww !;(:E ~ 1-'m f/)IW ADD 2 64 3 4 65 4 5 66 3 6/11 3 7/12 67 4 6/11 5 ADD 3 44 4 5 45 5 6 46 4 7/12 4 8/13 47 5 7/12 6 8/13 ADDB 2 74 3 4 75 3 4 76 3 6/11 3 7/12 77 4 6/11 5 7/12 ADDB 3 54 4 5 55 4 5 56 4 7/12 4 8/13 57 5 7/12 6 8/13 ADDe 2 A4 3 4 A5 4 5 A6 3 6/11 3 7/12 A7 4 6/11 5 7/12 7/12 ADDeB 2 B4 3 .4 B5 3 4 B6 3 6/11 3 7/12 B7 4 6/11 5 '1112 SUB 2 68 3 4 69 4 5 6A 3 6/11 3 7/12 6B 4 6/11 5 7/12 SUB 3 48 4 5 49 5 6 4A 4 7/12 4 8/13 4B 5 7/12 6 8/B SUBB 2 78 3 4 79 3 4 7A 3 6/11 3 7/12 7B 4 6/11 5 7/12 SUBB 3 58 4 5 59 4 5 5A 4 7/12 4 8/13 5B 5 7/12 6 8/13 SUBC 2 A8 3 4 A9 4 5 AA 3 6/11 3 7/12 AB 4 6/11 5 7/12 SUBCB 2 B8 3 4 B9 3 4 BA 3 6/11 3 7/12 BB 4 6/il 5 7/12 CMP 2 88 3 4 89 4 5 8A 3 6/11 3 7/12 8B 4 6/11 5 7/12 CMPB 2 98 3 4 99 3 4 9A 3 6/11 3 7/12 9B 4 6/11 5 7/12 28/33 MULU 2 6C 3 25 6D 4 26 6E J 27/32 3 28/33 6F 4 27/32 5 MULU 3 4C 4 26 4D 5 27 4E 4 28/33 4 29/34 4F 5 28/33 6 29/34 MU(,UB 2 7C 3 17 7D 3 7E 3 19/24 3 20/25 7F 4 19/24 5 20/25 MULUB 3 5C 4 18 5D 4 17 18 5E 4 20/25 4 21126 5F 5 20/25 6 21/26 MUL 2 4 29 30 31/36 4 32/37 5 31136 6 32137 3 33/38 2 MULB 3 ® ® ® ® 4 MULB ® ® ® ® 5 MUL ® ® ® ® 5 30 4 21 5 22. 6 31 4 21 5 22 5 32/37 5 33/38 4 23/28 4 24/29 5 24/29 5 25/30 ® ® ® ® 6 32/37 7 5 23/28 6 24129 6 24/29 7 25/30 DIVU 2 8C 3 25 8D 4 26 8E 3 28/32 3 29/33 8F 4 28/32 5 29/33 DIVUB 2 9C 3 17 9D 3 17 9E 3 20/24 3 21/25 9F 4 20/24 5 21/25 DIV 2 4 29 30 32/36 4 33/37 32/36 6 33/37 21 4 21 4 24/28 4 25/29 ® ® 5 4 ® ® 4 2 ® ® 5 DIVB ® ® 5 24/28 6 25/29 Notes: @ Long indexed and Indirect + instructions have identical opocodes with Short mdexed and Indirect modes, respectively. The second byte of instructions using any indirect or indexed addressing mode specifies the exact mode used. If the second byte is even, use Indirect or Short Indexed, If it is odd, use Indirect + or Long indexed. In all cases the second byte of the instruction always specifies an even . (word) location for the address referenced.0 then PC ~ PC + disp (sign-extended to 16 bits) end_if A$sembly Language Format: DJNZ Object Code Format: [ breg,cadd 11100000 1[ breg 1[ disp 1 Bytes: 3 States: Jump Not Taken: 5 Jump Taken: 9 3.13.26. EI- ENABLE INTERRUPTS Operation: Interrupts are enabled following the execution of the next statement. Interrupt-calls cannot occur immediately following this instruction. . Interrupt Enable (PSW.9) Assembly Language Format: EI Object Code Format: [ 11111011 Bytes: 1 States: 4 3-36 ~ 1 ·MCS®-96 SOFTWARE ,DESIGN INFORMATION 3.13.27. EXT - SIGN EXTEND INTEGER INTO LONG-INTEGER· Operation: The low order word of the operand is sign-extended throughout the high order word of the operand. if (low word DEST)<8000H then (high word DEST) ~ 0 else (high word DEST) ~ OFFFFH end_if Assembly Language Format: EXT Ireg Object Code Format: [ 00000110 1[ Ireg Bytes: 2 States: 4 3.13.28. EXTB - SIGN EXTEND SHORT-INTEGER INTO INTEGER Operation: The low order byte of the operand is sign-extended throughout . the high order byte of the operand. if (low byte DEST)<80H then (high byte DEST) ~ 0 else (high byte DEST) ~ OFFH end_if Assembly Language Format: EXTB wreg Object Code Format: [ 00010110 1[ Bytes: 2 States: 4 .3-37 wreg 1 MCSI!>·96 SOFTWARE DESIGN INFORMATION 3.13.29. INC -INCREMENT WORD Operation: The value of the word operand is incremented by 1. (DEST) +- (DEST) +1 Assembly Language Format: INC wreg. Object Code Format: [ 00000111 1[ wreg 1 Bytes: 2 States: 4 3.13.30. INCB -INCREMENT BYTE Operation: The value of the byte operand is incremented by 1. (DEST) +- (DEST) + 1 Assembly Language Format: INCB breg Object COde Format: [ 00010111 1[ Bytes: 2 States: 4 3-38 breg 1 MCS®-96 SOFTWARE DESIGN INFORMATION 3.13.31. JBC - JUMP IF BIT CLEAR Operation: The specified bit is tested. If it is clear (Le., 0), the distance from the end of this instruction to the target label is added to the program counter, effecting the jump. The offset from the end of this instruction to the target label must be in the range of - 128 to + 127. Ifthe bit is set(Le., 1), control passes to the next sequential instruction. if (specified bit) = 0 then PC +- PC + disp (sign-extended to 16 bits) Assembly Language Format: JBC breg,bitno,cadd Object COde Format: [ 00110bbb 1[ breg 1[ disp 1 where bbb is the bit number within the specified register. Bytes: 3 States: Jump Not Taken: 5 Jump Taken: 9 3-39 'MCS~96 SO.FTWARIi.iiDESIGN'I,NFORMATION 3.13.32. JBS - JUMP IF BIT SeT Operation: The specified bit is tested. If it is set (i.e.;, . 1), the distance from . the end of this instruction .totJile target label is added to the program counter,effecting th~ jump, The offset from the end of this instruction to the target label must be in the range of - 128 to + 127. If the bit is clear (i.e., 0), control passes to the next sequential instruction. if (specified bit) = 1 then .. PC ~ PC + disp (sign-extended to 16 bits) Assembly Language Format: JBS breg,bitno,cadd Object Code Format: [ 00111 bbb 1[breg 1[ disp 1 where bbb is the bit number within the specified register. Bytes: 3 States: Jump Not Taken: 5 . Jump Taken: 9 3.13.33. JC - JUMP IF CARRY FLAG IS SeT Operation: If the carry flag is set (i.e., 1), the distance from the end of this instruction to the target label is added to the program counter, effecting the jump. The offset from the end of this instruction to the target label must be in the range of -128 to + 127. If the carry flag is clear (i.e" 0), control passes to the next sequential instruction, ifC = PC Assembly Language Format: JC 1 then ~ PC + disp (sign-extended to 16 bits) cadd Object Code Format: [ 11011011 1[ disp 1 Bytes: 2 States: Jump Not Taken: 4 ,Jump Taken: 8 3-40 ,MCS®·96.S0FTWARE DESIGN INF,ORMATION 3.13.34. JE - JUMP IF EQUAL Operation: If the zero flag is set ,(Le., 1), the distance from the end of this .instruction to the target label is added to the program counter, effecting .the jump. The offset from the end of this instruction to the target label must be in the range of - 128 to + 127. If the zero flag is clear (Le., 0), control passes to the next sequential instruction. ifZ = 1 then PC +- PC Assembly Language Format: JE Object Code Format: [ + disp (sign-extended te:> 16 bits) cadd 1[ 11011111 disp 1 Bytes: 2 States: Jump Not Taken: 4 Jump Taken: 8 3.13.35. JGE - JUMP IF SIGNED GREATER THAN: OR EQUAL Operation: If the negative flag is clear (Le., 0), the distance from the end of this instruction to the target label is added to the program counter, effecting the jump. The offset from the end of this instruction to the target label must be in the range of -128 to + 127. If the negative flag is set (i.e., 1), control passes to the next sequential instruction. if N = o then PC +- PC + disp (sign-extended to 16 bits) Assembly Language Format: JGE cadd Object Code Format: [ 11010110 1[ disp 1 Bytes: 2 States: Jump Not Taken: 4 Jump Taken: 8 3-41 MCS~.096 SOFTWARE'DESIGN INFORMATION 3:13.36. JGT - JUMP IF SIGNED GREATER THAN Operation: If both the negative flag and the zero flag are clear (Le., 0), the distance from the end of this instruction to the target label is added to the program counter, effecting the jump. The offset from the end of this' instruction to,the target label must be in the range of -128 to + 127. If either the ,negative flag or the zero flag are set (Le., 1,) control passes to the next sequential instruction. if N = 0 AND Z = 0 then PC +- PC + disp (sign-extended to 16 bits) Assembly Language Format: JGT cadd , Object Code Format: [ 11010010 ] [ disp ] Bytes: 2 States: Jump Not Taken: 4 Jump Taken: 8 3.13.37. JH - JUMP IF HIGHER (UNSIGNED) , Operation: If the carry flag is set (i.e., 1), but the zero flag is not, the distance from the end of this instruction to the target label is added to the program counter, effecting the jump. The offset from the end of this instruction to the target label must be in the range of - 128 to + 127. If either ,the carry flag is clear or the zero flag is set, control passes to the next sequential instruction. o ifC = 1 andZ = then ' PC +- PC + disp (sign-extended to 16 bits) Assembly Language Format: JH cadd . Object Code Format: [ 11011001 ] [ disp Bytes: , 2 States: Jump Not Taken: 4 Jump Taken: 8 ST Z 3-42 MCS®·96 SOFTWARE DESIGN INFORMATION 3.13.38. JLE - JUMP IF SIGNED LESS THAN OR EQUAL Operation: If either the negative flag or the zero flag are set (Le., 1), the distance from the end of this instruction to the target label is added to the program counter, effecting the jump. The offset from the end of this instruction to the target label must be in the range of - 128 to + 127. If both the negative flag and the zero flag are clear (Le, 0), control passes to the next sequential instruction. if N = 1 OR Z = 1 then PC? PC + disp (sign-extended to 16 bits) Assembly Language Format: JLE cadd Object Code Format: [ I [ disp I 11011010 Bytes: 2 States: Jump Not Taken: 4 Jump Taken: 8 3.13.39. JLT - JUMP IF SIGNED LESS THAN Operation: If the negative flag is set (Le., 1), the distance from the end of thiS instruction to the target label is added to the program counter, effecting the jump. The offset from the end of this instruction to the target label must be in the range of - 128 to + 127. If the negative flag is clear (i.e., 0), control passes to the next sequential instruction. if N = 1 then PC ~ PC Assembly Language Format: JLt Object Code Format: [ + disp (sign-extended to 16 bits) cadd 11011110 ] [ disp I Bytes: 2 States: Jump Not Taken: 4 Jump Taken: 8 3-43 MCS®~96 SOFTWARE DESIGN INFORMATION 3.13.40. JNC - JUMP IF CARRY FLAG IS CLEAR Operation: If the carry flag is clear (i.e., 0), the distance from the end of this instruction to the target label is added to the program counter, effecting the jump. The offset from the end of this instruction to the target label must be in the range of - 128 to + 127. If the carry flag is set (i.e., 1), control passes to the next sequential instruction. if C = 0 then PC ~ PC Assembly Language Format: JNC Object Code Format: [ + disp (sign-extended to 16 bits) cadd 11010011 ] [ disp ] Bytes: 2 States: Jump Not Taken: 4 8 Jump Taken:. 3.13.41. JNE - JUMP IF NOT EQUAL Operation: If the zero flag is clear (i.e., 0); the distance from the end of this instruction to the target label is added to the program counter, effecting the jump. The offset from the end of this instruction to the target label must be in the range of - 128 to + 127. If the zero flag is set (i.e., 1), control passes to the next sequential instruction. if Z = 0 then PC~ PC Assembly Language Format: JNE Object Code Format: [ + disp (sign-extended to cadd 11010111] [ disp ] Bytes: 2 States: Jump Not Taken: 4 Jump Taken: 8 3-44 16 bits) MCS®-96 SOFTWARE DESIGN INFORMATION 3.13.42. JNH - JUMP IF NOT HIGHER (UNSIGNED) Operation: If either the carry flag is clear (i.e., 0), or the zero flag is set (i.e., 1), the distance from the end of this instruction to the target label is added to program counter, effecting the jump. The offset from the end of this instruction to the target label must be in the range of -128 to + 127. If the carry flag is set (i.e., 1), or the zero flag is not, control passes to the next sequential instruction. if C = 0 OR Z = 1 then. PC ~ PC + disp (sign-extended to 16 bits) Assembly Language Format: JNH Object Code Format: [ cadd 1[ 11010001 disp 1 Bytes: 2 States: Jump Not Taken: 4 Jump Taken: 8 3.13.43. JNST - JUMP IF STICKY BIT IS CLEAR Operation: If the sticky bit flag is clear (i.e., O), the distance from the end of this instruction to the target label is added to the program counter, effecting the jump. The offset from the end of this instruction to the target label must be in the range of - 128 to + 127. If the sticky bit flag is set (i.e., 1), control passes to the next sequential instruction. if ST = 0 then PC ~ PC + disp (sign-extended to 16 bits) Assembly Language Format: JNST cadd Object Code Format: [ 11010000 ][ disp 1 Bytes: 2 States: Jump Not Taken: 4 Jump Taken: 8 3-45 MCS®·96 SOfTWARE DESIGN INFORMATION 3.13.44. JNV - JUMP IF OVERFLOW FLAG IS CLEAR Operation: If the overflow flag is clear (Le., 0), the distance from the end of this instruction to the target label is added to the program counter, effecting the jump. The offset from the end of this instruction to the target label must be in the range of - 128 to + 127. If the overflow flag is set (Le., 1), control passes to next sequential instruction. ifV=Othen PC ~ PC + di$p (sign-extended to 16 bits) Assembly Language Format: JNV cadd Object Code Format: [ 11010101 ][ disp 1 B~es: 2 States: Jump Not Taken: 4 Jump Taken: 8 3.13.45. JNVT - JUMP IF OVERFLOW TRAP IS CLEAR Operation: If the overflow trap flag is clear (Le., 0), the distance from the end of this instruction to the target label is added to the program counter, effecting the jump. The offset from the end of this instruction to the target label must be in the range of -128 to + 127. If the overflow trap flag is set (Le., 1), control passes to the next sequential instruction. if VT = 0 then PC ~ PC + disp (sign-extended to 16 bits) Assembly Language Format: JNVT cadd Object Code Format: [ 11010100 1[ disp 1 B~es: 2 States: Jump Not Taken: 4 Jumps Taken: 8 3-46 MCS®~96. SOFTWARI: 3.13.46. JST - DESIGN INFORMATION JUMP IF STICKY BIT IS SET Operation: If the sticky bit flag is set (i.e., 1), the distance from the end of this instruction to the target label is added to the program counter, effecting the jump. The offset from the end of this instruction to the target label must be in the range of -128 to + 127. If the sticky bit flag is clear (i.e., 0), control passes to the next sequential instruction. if ST = 1 then PC ....... PC Assembly Language Format: JST Object Code Format: [ + disp (sign-extended to 16 bits) cadd 1[ 11011000 disp 1 Bytes: 2 States: Jump Not Taken: 4 Jump Taken: 8 3.13.47. JV - JUMP IF OVERFLOW FLAG IS SET Operation: If the overflow flag is set (i.e., 1), the distance from the end of this instruction to· the target label is added to the program counter, effecting the jump. The offset from the end of this instruction to the target label must be in the range of - 128 to + 127. If the overflow flag is clear (i.e., 0), control passes to the next sequential instruction. if V = 1 then PC ....... PC Assembly Language Format: JV ObjectCodeFormat: [ + disp (sign-extended to 16 bits) cadd 11011101 ][ disp 1 Bytes: 2 States: Jump Not Taken: 4 Jump Taken: 8 3-47 MCS®·96SoFrWARE DESIGN ~INFORMATION 3.13.48. JVT - JUMP IF OVERFLOW TRAP IS SET Operation: If the overflow flag is set (Le., 1), the distance from the end of this instruction to the target label is added to the program counter, effecting the jump. The offset from the end of this instruction to the target label must be in the range of - 128 to + 127. If the overflow trap flag is clear (Le., 0), control passes to the next sequential instruction. if VT = 1 then PC ~ PC Assembly Language Format: JVT Object Code Format: [ + disp (sign-extended to 16 bits) cadd 11011100 ] [ disp ] Bytes: 2 States: Jump Not Taken: 4 Jump Taken: 8 3.13.49. LCALL - LONG CALL Operation: The contents of the program counter (the return address) is pushed onto the stack. Then the distance from the end of this instruction to the target label is added to the program counter, effecting the call. The operand may be any address in the entire address space. SP~SP-2 (SP) ~ PC PC ~PC + disp Assembly Language Format: LCALL cadd Object Code Format: [ 11101111 ] [ disp-Iow Bytes: 3 States: Onchip stack: 13 Offchip stack: 16 3-48 ][ disp-hi ] · MCS~-96 SOFTWARE DESIGN INFORMATION 3.13.50. LD - LOAD WORD Operation:. The value of the source (rightmost) word operand is stored into the destination (leftmost) operand. (DEST) - (SRC) Assembly Language Format: LD Object Code ForJ;nat: [ DST wreg, 101 OOOaa SRC waop 1[ waop 1[ wreg 1 Bytes: 2+BEA States: 4+CEA 3.13.51. LDB - LOAD BYTE. Operation: The value of the source (rightmost) byte operand is stored into the destination (leftmost) operand. (DEST) - (SRC) Assembly Lang~age Format: DST LDB . breg, Object Code Format: [ 1011 OOaa SRC baop 1[ Bytes: 2 + BEA States: 4 + CEA 3-49 baop 1[ breg 1 MCS®·96 SOFTWARE DESIGN INFORMATION 3.13.52. LDBSE - LOAD INTEGER WITH SHORT·INTEGER Operation: The value of the source (rightmost) byte operand is sign-extended and stored into the destination (leftmost) word operand. (low byte DEST) ~ (SRC) if (SRC) < 80H'then (high byte DEST) ~ 0 else (high byte DEST) ~ OFFH end_if . Assembly Language Format: LDBSE DST wreg, 1[ Object Code Format: [ 101111 aa SRC baop baop 1[ wreg 1 Bytes: 2 + BEA States: 4+CEA 3.13.53. LDBZE - LOAD WORD WITH BYTE Operation: The value of the source (rightmost) byte operand is zero-extended and stored into the destination (leftmost) word operand. (low byte DEST) ~ (SRC) (high byte DEST) ~ 0 Assembly Language Format: lDBZE DST wreg, Object Code Format: [ 101011 aa 1[ Bytes: 2 + SEA States: 4+CEA 3-50 SRC baop baop 1[ wreg 1 MC.S®"96 SOFTWARE DESIGN INf.ORMATION 3.13.54. LJMP - LONG JUMP Operation: The distance from the end of this instruction to the target label is added to the program counter, effecting the jump. The operand may be any address in the entire address space. PC ~PC + disp Assembly Language Format: LJMP cadd Object Code Format: [ 11100111 ] [ disp-Iow ] [ disp-hi ] Bytes: 3 States: 8 3.13.55. MUL (Two Operands) - MULTIPLY INTEGERS Operation: The two INTEGER operands are multiplied using signed arithmetic and the 32-bit result is stored into the destination (leftmost) LONG-INTEGER operand. The sticky bit flag is undefined after the instruction is executed. (DEST) ~ MUL DST Ireg, Assembly Language Format: (DEST) • (SRC) SRC waop Object Code Format: [ 11111110 ][ 011011 aa ][ waop ][ Ireg ] Bytes: 3 + BEA States: 29 + CEA 3-51 P.i'lCS®~96,S'OFTWARI: DESIGN INFORMATION 3.13.56. MUL (Three Operands) - MULTIPLY INTEGERS Operation: ' The second and third INTEGER operands are multiplied using signed arithmetic and the 32-bit result is stored into the destination (leftmost) INTEGER operand. The sticky bit flag is undefined after the instruction is executed. (PEST) +- (SRC1) * (SRC2) Assembly Language Format: MUL Object Code Format: [ DST Ireg, 11111110 SRC1 wreg, 1[ SRC2 waop 010011aa 1[ waop 1[ wreg 1[ Ireg 1 Bytes: 4 + BEA States: 30 + CEA 3.13.57. MULB (Two Operands) ...... MULTIPLY SHORHNTEGERS Operation: The two SHORT-INTEGER operands are multiplied using signed arithmetic and the i 6-bit result is stored into the destination (leftmost) INTEGER operand. The sticky bit flag is undefined after the instruction is executed. (DEST) +- (DEST) * (SRC) Assembly Language Format: MULB Object Code Format: [ DST wreg, 11111110 SRC baop 1[ Bytes: 3+BEA States: 21 + CEA 3-52 011111 aa 1[ baop 1[ wreg 1 MCS®·96 SOFTWARE DESIGN INFORMATION 3.13.58. MULB (Three Operands) - MULTIPLY SHORt~INTEGERS' Operation: The second and third SHORT·INTEGER operands are multiplied using signed arithmetic and the 16·bit result Is stored into the destination (leftmost) INTEGER operand. The sticky bit flag is undefined after the instruction is executed. (DEST) Assembly Language Format: MUlB ~ (SRC1) • (SRC2) DST Wreg, Object Code Format: [ 11111110 SRC1 breg 1[ SRC2 baop 010111aa 1[ baop 1[ breg 1[ wreg 1 Bytes: 4 + BEA States: 22 + CEA 3.13.59. MULU (Two Operands) - MULTIPLY WORDS Operation: The two WORD operands are multiplied using unsigned arithmetic and the 32·bit result is stored into the destination (leftmost) DOU· , BlE·WORD operand. The sticky bit flag is undefined after the instruction is executed. (DEST) Assembly ~anguage Format: ~ (DEST) • (SRC) DST MUlU· Ireg, Object Code Format: [ 011011 aa SRC waop 1[ Bytes: 2 + BEA' States: 25 + CEA 3-53 waop 1[ Ireg 1 ,; MCS:IRl·96·S0FTWARl: Dl:SI,GN INFORMATION 3.13.60. MULU (Three Ope~nds)-MULTIPLY WORDS • ·Operatlon:The second an,d third WORP operands are multiplied using unsigned arithmetic and the 32-bit result is stored into the destination (leftmost) DOUBLE-WORD operand. The sticky bit flag is undefined after the instruction is executed. (DEST)< - (SRC1) * (SRC2) DST Ireg, Assembly Language Format: MULU Object Code Format: [ 010011 aa SRC1 wreg, 1[ waop SRC2 waop 1[ wreg 1[ Ireg 1 Bytes: 3 + BEA States: 26 + CEA 3.13.61. MULUB (Two Operands) - MULTIPLY BYTES Operation: The two BYTE operands are multiplied using unsigned arithmetic and the WORD result is stored into the destination (leftmost) operand. The sticky bit flag is undefined after the instruction is executed. (DEST) Assembly Language Format: MULUB Object Code Format: [ +- (DEST) * (SRC) DST wreg, 011111 aa SRC baop 1[ Bytes: 2+BEA States: 17 + CEA 3-54 baop 1[ wreg 1 MCS®·96 SOFTWARE DESIGN JNFORMATION 3.13.62. MULUB (Three Operands) - MULTIPLY BYTES Operation: The second and third BYTE operands are multiplied using unSigned arithmetic and the WORD result is stored into the destination (leftmost) operand. The sticky bit flag is undefined after the instruction is executed. / (DEST) +- (SRC1) • (SRC2) Assembly Language Format: MULUB DST wreg, SRC1 breg, SRC2 baop J [ baop J [ breg J [ wreg J Object Code Format: [ 010111 aa Bytes: 3+BEA States: 18 + CEA 3.13.63. NEG - NEGATE INTEGER Operation: The value of the INTEGER operand is negated. (DEST) +- - (DEST) Assembly Language Format: NEG wreg Object Code Format: [ 00000011. J [ wreg J Bytes: 2 States: 4 3-.55 'MCSI!<-96 SOFTWARE ,DESIGN INFORMATION 3.13.64. NEGB - NEGATE SHORT-INTEGER' Operation: The va.lu~ (DEST) - ofthe SHORT-INTEGER operand is negated. - (DEST) Assembly Language Format: NEGB breg Object Code Format: [ 00010011 1[ breg 1 Bytes: 2 States: 4 3.13.65. NOP - NO OPERATION Operation: Nothing is done. Control passes to the next sequential instruction. Assembly Language Format: NOP Object Code. Format:.[ 11111101 Bytes: 1 States: 4 3·56 MCS®-96 SOFTWARE DESIGN INFORMA110N 3.13.66. NORML - NORMALIZE LONG-INTEGER Operation: The LONG-INTEGER operand is normalized; Le., it is shifted to the left until its most significant bit is 1. If the most significant bit is still 0 after 31 shifts, the process stops and the zero flag is set. The number of shifts actually performed is stored in the second operand. (COUNT) -0 do while (MSB(DEST) = 0) AND «COUNT) < 31) (PEST) - (DEST) * 2 (COUNT) - (COUNT) + 1 end_while Assembly Language Format: NORML Ireg,breg Object Code Format: [ 00001111 ] [ breg ] [ Ireg ] Bytes: 3 States: 8 + No. of shifts performed 3.13.67. NOT - COMPLEMENT WORD Operation: The value of the WORD operand is complemented: each 1 is ,replaced with a 0, and each 0 with a 1. (DEST) - NOT(DEST) Assembly Language Format: NOT wreg Object Code Format: [ 00000010 ] [ wreg ] Bytes: 2 States: 4 3-57 1MCS®-SS 'SOFTWARE.DESIGN INFORMATION 3.13.S8. NOTB - COMPLEMENT BYTE .' " ' oper~nd i$·complemented: each 1 is replaced with a 0, and each 0 .with a 1. Opet:atiQn: The. value of the. BYTE ,(DEST) - NOT .(DE~:r) Assembly Language Format: NOTB breg Object Code Format: [. 0001Q010 1[ ~reg Bytes: 2 States:' 4 3.13.S9. OR - LOGICAL OR WORDS. Operation: The source (rightmost) WORD is ORed with the destination (leftmost) WORD operand. Each bit is set to 1 if the corresponding bit in either the source operand or the destination operand is 1. The result replaces the original destination operand. (DEST) - (DEST) OR (SRC) As~em~ly La~g~age Format.:. OR DST wreg~' Object Code Format: [ 100000aa SRC waop 1[ Bytes: 2+BEA States: 4+CEA 3-58 waop 1[ wreg ·MCS®-96 SOFTWARE DESIGN INFORMATION 3.13.70. ORB - LOGICAL OR BYTES Operation: The source (rightmost) BYTE operand is ORed with the destination (leftmost) BYTE operand. Each bit is set to 1 if the corresponding bit in either the source operand or the destination operand was 1. The result replaces the original destination operand. (DEST) +- (DEST) OR (SRC) Assembly Language Format: ORB Object Code Format: [ breg,baop 1001 OOaa ][ baop ][ breg 1 Bytes: 2 + BEA States: 4+CEA 3.13.71. POP - POP WORD Operation: The word on top of the stack is popped and placed at the destination operand. (DEST) +- (SP) SP +-SP + 2 Assembly Language Format: POP Object Code For",a~: [ waop 110011 aa ][ waop ] Bytes: 1 + BEA States: Onchip Stack: 12+CEA Offchip Stack 14 + CEA §F~S~ rrl:I~ITI 3-59 MCS®·96SGIITWARE DESIGN INFORMATION 3.13.72. POPF - POP FLAGS Operation: The word on top of the stack is popped and placed in the PSW. Interrupt calls cannot occur immediately following this instruction. (PSW) -(SP) SP -SP + 2 Assembly Language Format: POPF Object Code Format: [ 11110011 Bytes: 1 States: Onchip Stack: 9 Offchip Stack: 13 z ST j j 3.13.73. PUSH - PUSH WORD Operation: The specified operand is pushed onto the stack. SP-SP - 2 (SP) - (DEST) Assembly Language Format: PUSH Object Code Format: [ waop 11001 Oaa 1[ waop 1 Bytes: 1+BEA States: Onchip Stack: 8 + CEA Offchip Stack: 12 + CEA §FI8Q' Affect? rrl:I~ITI 3-60 MCS®·96 SOFTWARE DESI~N INFORMATION 3.13.74. PUSHF - PUSH FLAGS Operation: The PSW is pushed on top of the stack, and then set to all zeroes. This implies that all interrupts are disabled. Interrupt-calls cannot occur immediately following this instruction. SP~SP (SP) - 2 ~PSW PSW~O Assembly Language Format: PUSHF Object Code Format: [ 11110010 Bytes: 1 States: Onchip Stack: 8 Offchip Stack: 12 z ST o o 3.13.75. RET -:-" RETURN FROM SUBROUTINE Operation: The PC is popped off the top of the stack. PC ~(SP) SP~SP +2 Assembly Language Format: RET Object Code Format: [ 1111 0000 Bytes: States: Onchip Stack: 12 Offchip Stack: 16 C0A~ Affect~ rrl~I~ITI MCS®·96 SOFTWARE..DESIGN INFORMATION 3.13.76. RST - RESET SYSTEM Operation: The PSW is initialized to zero, and the PC is initialized to 2080H. The 1/0 registers are set to their initial value (see section 2.15.2, "Reset Status"). Executing this instruction will cause a pulse to appear on the reset pin of the 8096. PSW~O PC~2080H Assembly Language Format: RST Object Code Format: [ 11111111 Bytes: 1 States: 16 z ST o o 3.13.n. SCALL - SHORT CALL Operation: The contents of the program counter (the return address) is pushed onto the stack. Then the distance from the end of this instruction to the target label is added to the program cQunter, effecting the call. The offset from the end of this instruction to the target label must be in the range of -1024 to + 1023 inclusive. SP~SP-2 (SP) ~PC PC ~ PC + disp (sign-extended to 16 bits) Assembly Language Format: SCALL cadd Object Code Format: [ 00101 xxx 1[ disp-Iow, 1 where xxx holds the three high-order bits of displacement. Bytes: 2 States: Onchip Stack: 13 Offchip Stack: 16 3-62 ,MCS®..gs SOFTWAAE.D.ESIGN INFORMATroN 3.13.78. SETC - SET CARRY FLAG Operation: The carry flag is set. C +-1 Assembly Language Format: SETC Object Code Format: [ 11111001 Bytes: 1 St~tes: 4 3.13.79. SHL - SHIFT WORD LEFT Operation: The destination (leftmost) word operand is shifted left as many times as specified by the count (rightmost) operand. The count may be specified eit):ler as an immediate value in the range of 0 to 15 inclusive, or as the content of any register, the address of which is 16. to 255. The right bits of the result are filled with zeroes. The last bit shifted out is saved in the carry flag. Temp +- (COUNT) do while Temp <>0 C +- High order bit of (DEST) (DEST) +- (DEST)*2 Temp +- Temp - 1 end_while Assembly Language Format: SHL wreg,#count SHL wreg,breg or Object Code Format: [ 00001001 1[ cnt/breg 1[ wreg Bytes: 3 States: 7 + No. of shifts performed note: 0 place shifts take 8 states. 3-63 MCS®·96 SOFTWARE 0 C +- High order bit of (DEST) (DES1) +- (DEST)*2 Temp +- Temp - 1 end_while A81embly Language Format: SHLB breg,#count SHLB breg,breg or Object Code Format: [ 00011001 ][ cnt/breg ][ breg Bytes: 3 States: 7 + No. of shifts performed note: 0 place shifts take 8 states. 3·64 MCS®..ge,SOFTWARE DESIGN INFORMATION 3.13.81. SHLL - SHIFT DOUBLE-WORD LEFT Operation: The destination (leftmost) double-word operand is shifted left as many times as specified by the count (rightmost) operand. The count may be specified either as an immediate value in the range of 0 to 15 inclusive, or as the content of any register, the address of which is 16 to 255. The right bits of the result are filled with zeroes. The last bit shifted out is saved in the carry flag. Temp - (COI,JNT) do while TemP <> 0 . C - High order bit of (DEST) (OEST) - (OEST)*2 Temp - Temp - 1 end_while Assembly Language Format: SHLL Ireg ,#count SHLL Ireg,breg or Object Code Format: [ 00001101 ] [ cnt/breg ][ Ireg Bytes: 3 States: 7 + No. of shifts performed nate: 0 place shifts take a, states. z ST / 3-65 · MOS®·96 SOF1WARE·OESIGN INFORMATION 3.13.82. SHR - LOGICAL RIGHT SHIFT WOAD Operation: The destination (leftmost) word operand is shifted right as many times as specified by tM count (rightmost) operand. The count maybe specified either as an immediate value in the range of 0 to 15 inclusive, or as the content of any register,_ the address of which is 16 to 255. The left bits of the result are filled with zeroes. The last bit shifted out is saved to the carry. The sticky bit flag is cleared atthe beginning of the Instruction, and set if at any time during the shift a 1 is shifted first into the carry flag, and a further shift cycle occurs. Temp +- (COUNT) do while Temp <> 0 C +- Low order bit of (DEST) (DEST) +- (DEST) / 2 where / is unsigned division Temp +- Temp - 1 end_while Assembly Language Format: SHR wreg,#Count or SHR wreg,breg_ Object Code Format: [ 00001000 I[ cnt/breg 1[ wreg Bytes: 3 States: 7 + No. of shifts performed' note: 0 place shifts take 8 states. 3-66 MCS-96 SOFTWARE DESIGN INFORMATldN 3.13.83. SHRA - ARITHMETIC RIGHT SHIFT WORI) Operation: The destination (leftmost) word operand is shifted right as many times as specified by the count (rightmost) operand. The count may be specified either as an immediate value in the range of 0 to 15 inclusive, or as the content of any register, the address of which is 16 to 255. If the original high order bit value was 0, zeroes are shifted in. If the value was 1, ones are shifted in. The last bit shifted out is saved in the carry. The sticky bit flag is cleared at the beginning of the instruction, and set if at any time during the shift a 1 is shifted first into the carry flag, and a further shift cycle occurs. Temp - (COUNT) do while Temp <> 0 C - Low order bit of (DEST) (DEST) - (DEST) / 2 where / is Signed division Temp - Temp - 1 end_while Assembly Language Format: SHRA wreg,#count SHRA wreg,breg or Object Code Format: [ 00001010 1[ cnVbreg 1[ wreg Bytes: 3 States: '7 + No. of shifts performed note: 0 place shifts take 8 states. 3-67 3.13.84. SHRAB - ARITHMETIC RIGHT SHIFT BYTE O\,eratlon: The. destination (leftmost) byte operand .is shifted right as many times.as specified by the count (rightmost) operand. The count may be specified either as an immediate value in the range of O. to 15 inclusive, or as the content of any register, the address of which is 16 to 255. If the original high order bit value was 0, zeroes are shifted in. If that value was 1, ones are shifted In. The last bit shifted out is saved in the carry. The sticky bit flag is cleared at the beginning of the instruction, and set if at any time during the shift a 1 is shifted first into the carry flag, and a further shift cycle occurs. Temp ~ (COUNT) do while Temp <> 0 C, = Low order bit of (DEST) (DEST) ~ (DEST) I 2 where lis signed division Temp ~ Temp - 1 end_while Assembly Language Format: SHRAB breg,#count SHRAB breg,breg or Object Code Format: [ 00011010 1[ cntlbreg 1[ breg Bytes: 3 . States: 7 + No. of shifts performed . note: 0 place shifts take 8 states. z ST j j 3-68 MCS®-96 SOFTWARE DESIGN INFORMATION 3.13.85. SHRAL - ARITHMETIC RIGHT SHIFT DOUBLE-WORD Operation: The destination (leftmost) double-word operand is shifted right as many times as specified by the count (rightmost) operand. The count may be specified either as an immediate value in the rangeof 0 to 15 inclusive, or as the content of any register, the address of which is 16 to 255. If the original high order bit value was 0, zeroes are shifted in. If the value was 1, ones are shifted in. The sticky bit is cleared at the beginning of the instruction, and set if at any time during the shift a 1 is shifted first into the carry flag, and a further shift cycle occurs. Temp - (COUNT) do while Temp < > 0 C - Low order bit of (DEST) (DEST) - (DEST) / 2 where/is signed division Temp - Temp - 1 end_while Assembly Language Format: SHRAL Ireg,#count SHRAL Ireg,breg or Object Code Format: [ OQ001110 1[ cnt/breg 1[ Ireg Bytes: 3 States: 7 + No. of shifts performed note: 0 place shifts take 8 states. 3-69 MCS®-96· SOFTWARE· DESIGN INFORMATION 3.13.86. SHRB - LOGICAL RIGHT SHIFT BYTE Operation: The destination (leftmost) bYte operand is shifted right as many times as specified by the count (rightmost) operand. The count may be specified either as an immediate value in the range of 0 to 15 inclusive, or as the content of any register, the address of which is 16 to 255. The left bits of the result are filled with zeroes. The last bit shifted out is saved in the carry. The sticky bit flag is cleared at the beginning of the instruction, and set if at any time during the shift a 1 is shifted first into the carry flag, and a further shift cycle occurs. Temp +- (COUNT) do while Temp < > 0 C +- Low order bit of (DEST) (DEST) +- (DEST) / 2 where/is unsigned division Temp +- Temp - 1 end_while Assembly Language Format: SHRB breg,#count SHRB breg,breg or Object Code Format: [ 00011000 1[ cnt/breg 1[ breg Bytes: 3 States: 7 + No. of shifts performed note: 0 place shifts take 8 states. 3-70 MCS®·96 SOFTWARE DESIGN INFORMATION 3.13.87. SHRL - LOGICAL RIGHT SHIFT DOUBLE·WORD Operation: The destination (leftmost) double-word operand is shifted right as many times as specified by the count (rightmost) operand. The count may be specified either as an immediate value in the range of 0 to 15 inclusive, or as the content of any register, the address of which is 16 to 255. The left bits of the result are filled with zeroes. The last bit shifted out is saved in the carry. The sticky bit flag is cleared at the beginning of the instruction, and set if at any time during the shift a 1 is shifted first into the carry flag, and a further shift cycle occurs. Temp - (COUNT) do while Temp < > 0 C - Low order bit of (DEST) (DEST) - (DEST) / 2 where/is unsigned division Temp - Temp - 1 end_while Assembly Language Format: SHRL Ireg,#count SHRL Ireg,breg or Object Code Format: [ 00001100 1[ cnt/breg 1[ Ireg Bytes: 3 ' States: 7 + No. of shifts performed note: 0 place shifts take 8 states. 3-71 MCS®·96 SOFTWARE DESIGN INf:ORMATION 3.13.88. SJMP - SHORT JUMP Operation: The distance from the end of this instruction to the target label is added to the program counter, effecting the jump. The offset from the end of this instruction to the target label must be in the range of - 1024 to + 1023 inclusive. PC - PC Assembly Language Format: SJMP + disp (sign-extended to 16 bits) cadd Object Code Format: [ 00100xxx 1[ disp-Iow 1 where xxx holds the three high order bits of the displacement. Bytes: 2 States: 8 3.13.89. SKIP - TWO BYTE NO·OPERATION Operation: Nothing is done. This is actually a two-byte NOP where the second byte can be any value, and is simply ignored. Control passes to the next sequential instruction. Assembly Language Format: SKIP breg Object Code Format: [ 00000000 1[ Bytes: 2 States: 4 3·72 breg 1 MCS®·96 SOFTWARE DESIGN INFORMATION 3.13.90. ST - STORE WORD Operation: The value of the leftmost word operand is stOred into the rightmost operand. (DEST) ~ (SRC) Assembly Language Format: ST SRC wreg, DST waop Object Code Format: [ 110000aa ] [ waop ] [ wreg ] Bytes: 2+BEA States: 4 + CEA z ST 3.13.91. STB - STORE BYTE Operation: The value of the leftmost byte operand is stored into the rightmost operand. (DEST) ~ (SRC) Assembly Language Format: STB SRC breg, OST baop Object Code Format: [ 110001aa ] [ baop ] [ breg ] Bytes: 2 + BEA States: 4+CEA 3-73 MCS®·96 SOFl'WARE DESIGN. INFORMATION 3.13.92. SUB (Two Operands) - SUBTRACT WORDS O.peratlon: The source (rightmost) word operand is subtracted from the destination (leftmost) word .operand, and the result is stored in the destination. The carry flaQ is set as complement of borrow. (DEST) Assembly Language Format: SUB ~ (DEST) - DST wreg, (SRC) SRC waop I[ Object Code Format: [ 01101 Oaa I[ waop wreg I. Bytes: 2+BEA States: 4+CEA z ST j 3.13.93. SUB (Thre$ Operands) - . SUBTRACT WORDS ' Operation: The source (rightmost) won:! operand is subtracted from the second word operand, and the result is stored in the destination (the leftmost operand). The carry flag is set as complement of borrow. (DEST) Assembly Language Format: SUB ~ (SRC1) - DST wreg, Object Code Format: [ 01001 Oaa (SRC2) SRC1 wreg, I[ Bytes: 3+ BEA States: 5+CEA 3-74 waop SRC2, waop I[ Swreg I[ Dwreg MCS®·96S()FTWARE DESIGN INFORMATION 3.13.94. SUBB (Two Operands) - SUBTRACT BYTES OperatIon: The source (rightmost) byte is subtracted from the destination (leftmost) byte operand, and the result is stored in the destination. The carry flag is set 'as complement of borrow. (DEST) +- (DEST) - (SRC) DSTSRC breg, baop Assembly Language Format: SUBB Object Code Format: [ 011110aa 1[ baop 1[ breg 1 Bytes: 2 + BEA States: 4 + CEA 3.13.95. SUBB (Three Operands) - SUBTRACT BYTES Operation: The source (rightmost) byte operand is subtracted from the destination (leftmost) byte operand, and the result is stored in the destination. The carry flag is set as complement of borrow. (DEST) Assembly Language Format: +- (SRC1) - DST SUBB breg, Object Code Format: [ 01011 Oaa (SRC2) SRC1 Sbreg 1[ Bytes: 3 + BEA States: 5+CEA 3-75 Mop SRC2 baop 1[Sbreg ) [ Dbreg MC~~-96$OF:lWARE. DeSIGN INfPRMATION , 3.13.96. SUBC - SUBTRACT WORDS ,WITH a.ORROW Operation: The source (rightmost) word operandi.s subtracted from the des. tin~tion (I~ftmost) word oper~nd. If the carry flag was clear, 1 is subtracted from .thE! abt;>ve result. The result replaces the original· destination operand. The carry flag is set as complement of borrow. (DEST) Assembly Language Format: SUBC Object Code Format: [ ~ (DEST) - DST wreg; 10101 Oaa (SRC) - (1-C) SRC weop 1[. 1{ waop 1 wreg Bytes: 2 + BEA States: 4 + CEA 3.13.97. SUBCB- SUBTRACT BYTES WITH BORROW Operation: The source (rightmost) byte operand is subtracted from the destination (leftmost) byte operand. If the carry flag was clear, 1 is subtracted from the above result. The result replaces the original destination operand. The carry flag is set as complement of borrow. (DEST) Assembly Language Format: SU8CB Object Code Format: [ ~ (DEST) DST breg, 10111 Oaa 1[ (SRC) SRC baop baop 1[ Bytes: 2+BEA States: 4 + CEA . ST 3-7q (1-C) breg 1 MCS®·96 SOFTWARE DESIGN INFORMATION 3.13.98. TRAP - SOFTWARE TRAP Operation: This instruction causes an interrupt-call which is vectored through locatioh 2010H. The operation of this instruction is not effected by the state of the interrupt enable flag in the PSW (I). Interruptcalls cannot occur immediately following this instruction. This instruction is intended for use by Intel provided development tools. These tools will not support user-application of this instruction. SP~SP - 2 (SP) ~PC PC ~(2010H) Assembly Language Format: This instruction is not supported by revision 1.0 of the 8096 as· sembly language. Object Code Format: [ 11110111 ] Bytes: States: Onchip Sta.ck: 21 Offchip Stack: 24 3.13.99. XOR - LOGICAL EXCLUSIVE·OR WORDS Operation: The source (rightmost) word operand is XORed with the desti· nation (leftmost) word operand. Each bit is set to 1 if the corre· sponding bit in either the source operand or the destination op· erand was 1, but not both. The result replaces the original destination operand. (DEST) ~ XOR DST wreg, Assembly Language Format: Object Code Format: [ (DEST) XOR (SRC) 100001 aa SRC waop ] [ waop ] [ wreg Bytes: 2 + BEA States: 4 + CEA [ili~9S Z j N j Affected 1TI I C0 I V0 IVT3-77 ST - , ] MCS®-96 SOFTWARE DESIGN INFORMATION 3.13.100. XORB - LOGICAL EXCLUSIVE-OR BYTES Operation: The source (rightmost) byte operand is XOAed with the destination (leftmost) byte operlind. Each bit is set to 1 if the corresponding bit in either the source operand or the destination operand was 1, but not both. The result replaces the original destination operand. (DEST) Assembly Language Format: XOAB +- (DEST) XOA (SAC) DST breg, SAC baop Object Code Format: [ 100101aa ][ baop ][ breg Bytes: 2 + BEA States: 4+CEA 3-78 1 MCS®,96 Hardware Design Information 4 CHAPTER 4 , MCS®·96 HARDWARE DESIGN INFORMATION 4.0. HARDWARE INTERFACING OVERVIEW be tied to 5 volts. When the analog to' digital converter is being used it may be desirable to connect the VREF pin to a separate power supply, ,or at least a separate power supply line. This ~on of the manual is devoted to the hardware engineer. All of the information you need to connect the coaect pin to the coaect external circuit is provided. Many of the special function pins have different characteristics which are under software control, therefore, it is necessary to define the system completely before the hardware is wired-up. The two VSS pins should be connected together with as short a lead as possible to avoid problems due to voltage drops across the wiring. There should be no measurable voltage difference betWeen VSSI and VSS2. The 2 VSS pins and the ANGND pin should all be nominally at 0 volts. The maximum current drain of the 8096 is around 200mA, with all lines unloaded. ' Frequently within this section a specification for a current, voltage, or time period is referred to; the values provided are to be used as an approximation only. Th~ exact spc:cification can be found in the latest data sheet for the particular part and temperature range that is being used. When the analog converter is being used, clean, stable power must be provided to the analog' section of the chip to assure highest accuracy. To achieve this, it may be desirable to separate the analog power supply from the digital power supply. The VREF pin supplies 5 volts to the analog circuitry and the ANGND pin is the ground for this section of the chip. More information on the analog power supply is in section 4.3.1. 4.1. REQUIRED HARDWARE CONNECTIONS Although the 8096 is a single-chip microcontroller, it still requires several external connections to make it work. Power must be applied, a clock source provided, and some form of reset circuitry must be present. We will look at each of these areas of circuitry separately. Figure 4-5 shows the connectionS that, are needed for a single-chip system. 4.1.2. Other Needed Connections Several of the pins on the 80% are used to configure the ,mode of operation. In normal operation the following pins should be tied directly to the indicated power supply. 4.1.1. Power Supply Information PIN Power for 8096 flows through 6 pins; one vee pin, two VSS pins, one VREF (analog Vee), one ANGND (Analog VSS), and one VPD (V Power Down) pin. All six of these pins must be connected to the 8096 for normal operation. The vee pin, VREF pin and VPD pin should NMI vee TEST vee EX vee (to allow internal execution) VSS (to force external execution) TO DIVIDER CIRCUITRY POWER SUPPLY , ptVlDER CIRCUITRY vee vee Q3 Q1 ~ ~u SUBSTRATE 30 pf ..,. XTAL1 3Qpf Flgur~ 4-2. Crystal Oscillator Circuit Figure 4-1. 8096 Oscillator ClrcuH 4-1 MCS~·96 HARDWARE DESIGN INFORMATION Although the £A' pin' ha~ an" i~~~al pulldO\\lll, it is ~si to tie this pin to the desired level if it is not left completely disconnected. This will prevent induced noise from disturbing the system. , responsci mode as iIiduc;ive read~cei~' parallel resonance with capacitance external to the crystal. an The crystal specifications, and capacitance, values (C 1 and C2 in Figure 4-2) are not critical. 301'1" can be used in these positions at any frequency with good quality crystals. For 0.5% frequency accuracy, the crystal frequency can be specified at series resonance or for parallel resonance with any load capacitance. (In other words, for that degree of frequency accuracy, the load capacitance si!Dply doesn't matter.) For 0.05% frequency accl!racy the crystal frequency should be specified for parallel resonance with 25 pF load capacitance, if Cl and C2 are 30 pF. 4.1.3. Oscillator Information The 8096 requires a clock source to operate. This clock can be provided to the chip through the XTALl input or the on-chip oscillator can ~ used. The frequency of operation is, froIll 6.0 MHz to 12 MHz. The on-Chip circuitry for the 8096 oscillator is a single stage linear inverter as shown in Figure 4-1. It is intended for use as a crystal-controll!Xi, po,sitive reactance oscillator with external connections as shown in Figure 4-2. In this application, the crystal is being operated in its fundamental A more in-depth discussion of crystal specifications and the selection of values for Cl and C2 can be found in the Intel Application Note, AP-155, "Oscillators for Microcontrollers. ", DIVIOER CIRCUITRY To drive the 8096 with an external clock source, apply the external clock signal to XTALl and let XTAL2 float. An example of this circuit is shown in Figure 4-3. The required voltage levels on XTALl are specified in the data sheet. The signal on XTALI must be clean with good solid levels. It is important that the minimum high and low times are met. vec ... VCC XTAL1 XTAU FLOAT 5K 74804 There is no specification on rise and fall times, but they should be reasonably fast (on the order of 30 nanoseconds) to avoid having the XTALI pin in the transition range for long periods of time. The longer the signal is in the transition region, the higher the probability that an external , noise glitch could be seen by the clock generator circuitry. Nois!l glitches on the 8096 internal clock lines will cause unreliable operation. The clock generator provides a 3 phase clock output from the XTALI pin input. Figure 4-4 shows the waveforms of the major internal timing signals. Figure 4-3. External Clock Drive XTAL1 PHASE A (CLKOUT) PHASES PHASEC PHASEK Flg~re 4-4. Internal Timings 4-2 MCS®-96 HARDWARE DESIGN INFORMATION is only two state times. If this is done, it is possible that the 8096 will be reset and start running before the other parts on the board are out of reset. The software must account for this possible problem. 4.1.4. Reset Information In order for the 8096 to function properly it must be reset. This is done by holding the reset pin low for at least 2 state times after the power supply is within tolerance, the oscillator has stabilized, and the back-bias generator has stabilized. Typically, the back-bias generator requires bne millisecond to stabilize. A capacitor directly connected to RESET cannot be used to reset the part if the pin is to be used as an output. If a large capacitor is used, the pin will pull down more slowly than normal. It will continue to pull down until the 8096 is reset. It could fall so slowly that it never goes below the internal switch point of the reset signal (I to 1.5 volts), a voltage which may be above the guaranteed switch point of external circuitry connected to the pin. Several circuit examples are shown in Figure 4-6. There are several ways of doing this, the simplest being just to connect a capacitor from the reset pin to ground. The capacitor should be on the order of 1 to 2 microfarads for every millisecond of reset time required. This method will only work if the rise time of VCC is fast and the total reset time is less than around 50 milliseconds. It also may not work if the reset pin is to be used to reset other parts on the board. An 8096 with the minimum required connections is shown in Figure 4-5. 4.1.5. Sync Mode If RESET is brought high at the same time as or just after the rising edge of XTALl, the part will start executing the 10 state time RST instruction exactly 6'12 XTALl cycles later. This feature can be used to synchronize several MCS-96 devices. A diagram of a typical connection is shown in Figure 4-7. It should be noted that parts that start in sync may not stay that way, due to propagation delays which may cause the synchronized parts to receive signals at slightly different times. The 8096 RESET pin can be used to allow other chips on the board to make use of the watchdog timer or the RST instruction. When this is done the reset hardware should be a one-shot with an open-collector output. The reset pulse going to the other parts may have to be buffered and lengthened with a one-shot, since the RESET low duration +5 VOLTS SEPARATE vee TRACE (2) VPD VREF NMI (1) TEST 0.1 ,.f ANGND EA VCC 0.1 TO 1.0 ,.f VSS1 VSS2 RESET 10,.f TO 25,.f + C,=C.=30pf XTAL2 SEPARATE GROUND TRACE (2) ":' NOTES: 1. THESE CAPACITORS ARE NEEDED ONLY IF A TO D IS USED. 2. VREF & ANGND MAY BE CONNECTED TO THE SAME TRACES AS THE DIGITAL POWER SUPPLY IF THE A TO D IS NOT USED. FIgure 4·5. MInimum Hardwa~e Connections 4-3 · MCS®·96 HARDWARE DESIGNINFORMA:r:ION OTHER CIRCUITRY I. 1.0,.f .... 8096 OTHER CIRCUITRY 1000 NOTE: 1. THE DIODE WILL PROVIDE A FASTER CYCLE TIME REPETITIVE POWER-ON-RESETS Figure 4·6, Multiple Chip Reset Circuits XTAL1 XTAL1 B096 RESET Figure 4·7. Reset Sync Mode 4.1.6. Disabling the Watchdog Timer high indefillitely. Just resetting the .Wlltchdog timer will not clear the flip-flop which keeps the RESET pull-down on. The watchdog timer will pull the RESET pin low when it overflows. If the pin is being externally held above the low going threshold, the pull-down transistor will remain on indefinitely. This means that once the watchdog overflows, the part must be reset or RESET mlist be held The pull-down is capable of sinking on the order of 30 milliamps if it is held at 2.0 volts. This amount of current 4-4 MCS®~96 HARDWARE DESIGN INFORMATION may cauSe some long term reliability problems due to localized chip heating. For this reason, parts that will be ,used in production should, never have had the watchdog timer over-ridden for more than a second or two. to operate the 8096 until it has completed its reset operation. 4.2. DRIVE AND INTERFACE LEVELS Whenever the reset pin is being pulled high while the pulldown is on, it should be through a resistor that will limit the voltage on RESET to 2.5 volts and the current through the pin to 40 milliamps. Figure 4-8 shows a circuit which will provide the desired results. Using the LED will provide the additional benefit of having a visual indicator that the part is trying to reset itself, although this circuit only works at room temperature and vee = 5 Volts. There are 5 types of 1/0 lines on the 8096. Of these, 2 are inputs and 3 are outputs. All of the pins of the same type have the same current/voltage characteristics. Some of the control input pins, such as XTALI and RESET, may have slightly different characteristics. These pins are discussed in section 4. I. ' If it is necessary to disable the watchdog timer for more than a brief test the software solution of never initiating the times should be used. See Section 2.14. While discussing the characteristics of the 110 pins some approximate current or voltage specifications will be given. The exact specifications are available in the latest version of the 8096 Data Sheet. 4.1.7. Power Down Circuitry 4.2.1. Quasi-Bidirectional Ports Battery backup can be provided on the 8096 with a I rnA current drain at 5 volts. This mode will hold locations OFOH through OFFH valid as long as the power to the VPD pin remains on. The required timings to put the part into power-down and an overview of this mode are given in section 2.4.2. The quasi-bidirectional port is both an input and an output port. It has, three states, low impedance current sink, low impedance current source, and high impedance current source. As a low impedance current sink, the pin has a specification of sinking up'to around .4 milliamps, while staying below 0.45 volts. The pin is placed in this condition by writing a '0' to the SFR (Special Function Register) controlling the pin. A 'key' can be written into power-down RAM while the part is running. This key can be checked on reset to determine if it is a start-up from power-down or a complete cold start. In this way the validity of the power-down RAM can be verified. The length of this key determines the probability that this procedure will work, however, there is always a statistical' chance that the RAM will power up witl1 a replica of the key. When a 'I' is written to the SFR location controlling the pin, a low impedance current source is turned on for one state time, then it is turned off and the depletion pull-up holds the line at a logical '" state. The low-impedance pull-up is used to shorten the rise time of the pin, and has current source capability on the order of '00 times that of the depletion pull-up. The configuration of a quasibidirectional port pin is shown in Figure 4-9. Under most circumstances, the power-fljil indicator which is used to initiljte a power-down condition must come from the unfiltered, unregulated section of the power supply~ The power supply must have sufficient storage capacity While the depletion mode pull-up is the only device on, the pin may be used as an input with a leakage of around r----1~---- o--VCC MY5020 TO OTHER CIRCUITS LM313 1N4001 IN4001 8096 OR 330fi 22 fi NOTE: SEE CAUTIONS IN SECTION 4.1.6. , Figure 4-et. Disabling the WDT 4-5 39fi VCC MCS®·96 HARDWARE DESIGN INFORMATIQN HIGH IMPEDANCE PULL UP - ALWAYS ON LOW IMPEDANCE PULL UP I1 ,I INPUT LOW IMPEDANCE PULL UP HIGH IMPEDANCE PULL UP -SOmA -160,.A -30mA -90 ,.A LOW IMPEDANCE PULL DOWN SOmA TYPICAL .9 .9 .9 30mA 10mA -30/LA OV 4V VOH tt~' 2V 4V VOL NOTE: THESE GRAPHS SHOW TYPICAL PIN CAPABILITIES, THEY, ARE NOT GUARANTEED SPECIFICATIONS Figure 4-9. Quasi-Bidirectional Port the current to a maximum of 0.2 milliamps per pin. If several pins are connected to a common ground through switches, it should be sufficient to limit the current through the common ground to 0.2 milliamps times the maximum number of pins that could be switched to ground. Many switches require a minimum amount of current flow through them to keep them clean. This could cause problems in long term reliability if it is not considered when designing a system. 100 microamps from 0.45 volts to VCe. It is ideal for use with TIL or CMOS chips and may even be used directly with switches, however if the switch option is used certain precautions should be taken. It is important to note that any time the pin is read, the value returned will be the value on the pin, not the value placed in the control register. This could prevent logical operations on these pins while they are being used as inputs. 4.2.2. Quasi-Bidirectional Hardware Connections If a switch is used on a long line connected to a quasibidirectional pin, a pull-up resistor is recommended to reduce the possibility of noise glitches and to decrease the rise time of the line. On extremely long lines that are handling slow signals a capacitor may be helpful in addition to the resistor to reduce noise. When using the quasi-bidirectional ports as inputs tied to switches, series resistors should pe used if the ports will be written to internally after the part is initialized. Every time any quasi-bidirectional pin is written from a zero to a one, the low impedance pull-up is turned on. If many of the pins are tied directly to ground, a large current· spike will be generated when all of these low impedance devices are turned on at once. 4.2.3. Input Ports, Analog and Digital .The high impedance input ports on tjte 8096 have an input leakage of a few microamps and are predominantly capacitive loads on the order of 10 pf. The Port 0 pins have For this reason, a series resistor is recommended to limit 4-6 MeS.... HARDWARE DESIGN INFORMATION an ad9itional function when the A to D converter is being used. These pins are the input to the A to D converter, and as such, are requiIed to provide current to the comparator when a conversion is in process. This means that the input characteristics of a pin will change if a conversion is being done on that pin. See section 4.3.1. than this. A ISk pull-up resistor will source a maximum of 0.33 milliamps, so it would be a reasonable value to choose if no other circuits with pullups were connected to the pin. 4.2.5. HSO Plna, Contro, Outputs and BUI Plna 4.2.4. Open Drain PortB ' The control outputs and HSO pins have output buffers with the same output characteristics as those of the bus pins. Included in the category of control outputs are: TXD, RXD(in mode 0), PWM, CLKOUT, ALE, BHE, RD. ,and Wi. The bus pins have 3 states: output higb. output low. and high impedance input. As a higb output. the pins are specified to source around 200 pA to 2.4 volts. but the pins can llOurce on the order of ten times that value in order to provide fast rise times. When used as a low output. the pins can sink around 2 mA at .4S volts. and considerably more as the voltage increases. When in the higb impedance state. the pin acts as a capacitive load with a few microamps of leakage. Figure 4-10 shows the internal configuration of a bus pin. Ports 3 and 4 on the 8096 are open drain ports. There is no pull-up when these pins are used as 110 ports. These pins have different qharacteristics when used as bus pins as desprib!:d in the next section. A diagram of the output buffers connected to ports 3 and 4 and the Bus pins is shown i,n Figure 4·10. When Ports 3 and 4 are to be used as inputs, or as Bus pins, they must first be written with a '1', this will put the ports in a higb impedance mode. When they are used as outputs, 1\ pull-Up resistor must be used externally. The sink capability of these pins is on the order of ~.4 milliamps so the total pull-up current to the pin must be less vee DATA IN JUS OUTPUT ENAeLE 8u8DATA -4- PORT 3,4 OPEN DRAIN DRIVER PORTENAeLE POfITDATA aus PULL DOWN aus PULL UP BUS IUS. PORT PULL DOWN P1. P2 IUS. P1. P2 2SmA 10mA -10mA ov e e ~ 1SmA -30mA j 2V VOlt 4V SmA OV 2V 4V VOl. OV 2V 4V VOl. NOTE: ntESE GRAPHS SHOW TYPICAL PIN CAPAIIUTIES. ntEl ARE NOT GUARANTEED SPECIFICATIONS Figure 4-10. Bus and Port 3 and 4 Pins 4-7 ,>MCS@l-96iHARDWARE'DESIGN'1NFORMA'tION sample and' hold circuit rtlliy vary (1/2048).'" " '" ' 4.3. ANALOG INTERFACE Intetfacing tire 8096 to analog signal can be done in several ways. If the 8096 needs to measure an analog signal the A to pco~verter can ~ used. Creation of analog outputs can be done with either the PWM output or theHSb unit. The 8096 can have 8 analog inputs and can convert one input at a time. into a digital value. Each conversion takes 42 microseconds with a 12 MHz signai on XTALI. The input signal is applied to one'ofthe Port O/Analog Channel inputs. Since there is no sample and hold on the A to D, the input signal must remain constant over: the sampling ' ' , ' period, The converter is a 10-bit, successive approXimation', 'ra~ tiometric converter, so the numerical value obtained from ' the conversion will be: When a conversion takes place, the 8096 compares the external signal to that of its internal D to A. Based on'the i:esult ofthe comparison it adjusts the D to A and compares again. Each comparison takes 8 state times and requires the input to the comparator to be charged up. 20 comparisons are made during a conversion, two times for each bit of resolution. An additional 8 states are used to load and store values. The total number of state times required is 168 fora lO-bit conversion. Attempting to do other than a 10-bit conversion is not recommended. 1023 * (VINcANGND) 1 (VREF-ANOND) It can be seen that' the 'power 'supply levels'strongly influence' !he' abs6lute accuracy' of the conversion. For this reason, it is recommended that the ANGND pin be tied to a clean ground, as close to the power supply as possible. VREF should be well regulated and used only for the A to- D converter. If ratiometric information, is desired, VREF can be connected to VCC, but this should be done at the power supply not at the chip. It needs to be able to source around IS milliamps. Bypass capacitors should be used between VREF and ANOND.ANGND should be within about a tenth of a volt of VSS and VREF should be within a few tenths of a volt of VCC. A 0.01 uf capacitor.should·be-connected between the ANGND and Since the capacitance of the comparator input is around O.Spf, the sample and hold circuit must be able to charge, a IOpf (20*0.Spt) capacitor without a significant voltage change. To keep the effect of the sample and hold circuit blliow ± Y2 Isb on a 10-bit converter, the voltage on the " -- HSO OR PWM BUFFER TO MAKE OUTPUT SWING RAIL TO RAIL more than O.OS% , The effectiv~ capacitance of the sample and' hold must, therefore ,be'at least20000pf or 0:02 ufo If there'is external leakage on the capacitor, its value must be' increased to compensate for the leakage. At IO~A leakage, 2.S mV (S/2048) will be lost from a 0.17 ilf capacitor in 42 ~S, The 'capa"citor connected externally 10 the pin should, therefore,'be at least 0.2 uffor best reSults. If the external signal' changes' slowly relative to 42 p,s',' thert a larger capacitor will work well and also filter out unwanted noise. 4.3.1. Analog Inputs' 8096 no FILT~R (PASSIVE OR ACTIVE) ,1~ ' f---- POWER AMP , ANALOG f----"- OUTPUT (OPTIONAL) (OPTIONAL) SUGGESTED CIRCUIT FOR NON-CRITicAL APPLICATIONS 8096 HSO OR PWM HIGH R IMPEDANCE 'lL._~ ANALOG X~--"""""""---_-----I OUTPUT AMP CD4049 RAND C ARE CHOSEN FOR BEST FILTERING AT THE USER'S FREQUENCY Figure 4-11. D/ABuffer Block Diagram 4-8 MCS®-96 HARDWARE DESIGN INFORMATION full state time to guarantee that it is recognized. This restriction applies even if the divide by eight mode is being used. If two events occur on the same pin within the same 8 state time window, only one of the events will be recorded. If the events occur on different pins they will always be recorded, regardless of the time difference. The 8 state time window, (ie. the amount of time during which Timer 1 remains constant), is stable to within about 20 nanoseconds. The window starts roughly around the rising edge of CLKOUT, however this timing is very approximate due to the amount of internal circuitry, involved. VBB pins to reduce the noise on VBB and provide the highest possible accuracy. Figure 4-5 shows all of these connections. 4.3.2. Analog Output Suggestions Analog outputs can be generated by two methods, either by using the PWM output or the HSO. Either device will generate a rectangular pulse train that varies in duty cycle and (for the HSO only} period. If a smooth analog signal is desired as an output, the rectangular waveform must be filtered. 4.4.3. Standard 110 Port Pins In most cases this filtering is best done after the signal is buffered to make it swing from 0 to 5 volts since both of the outputs are guaranteed only to TTL levels. A block diagram of the type of circuit needed is shown in Figure 4-11. By proper selection of components, accounting for temperature and power supply drift, a highly accurate 8bit D to A converter can be made using either the HSO or the PWM output. If the HSO is used the accuracy could be theoretically extended to 16-bits, however the temperature and noise related problems would be extremely hard to handle. Port 0 is different from the other digital ports in that it is actually part of the A to D converter. The port is sampled once every 8 state times, the same frequency at which the comparator is charged-up during an A to D conversion. This 8 state times counter is not synchronized with Timer 1. If this port is used the input signal on the pin must be stable 8 state times prior to reading the SFR. Port 1 and Port 2 have quasi-bidirectional 110 pins. When used as inputs the data on these pins must be stable one state time prior to reading the SFR. This timing is also valid for the input-only pins of Port 2. When used as outputs, the quasi-bidirectional pins will change state shortly after CLKOUT falls. If the change was from '0' to a '1' the low impedance pull-up will remain on for one state time after the change. When driving some circuits it may be desirable to use unfiltered Pulse Width Modulation. This is particularly true for motor drive circuits. The PWM output can be used to generate these waveforms if a fixed ,period on the order of 64 uS is acceptable. If this is not the case then the HSO unit can be used. The HSO can generate a variable waveform with a duty cycle variable in up to 65536 steps and a period of up to 131 milliseconds. Both of these outputs produce TTL levels. Ports 3 and 4 are addressed as off-chip memory-mapped 110. The port pins will change state shortly after the rising edge of CLKOUT. When these pins are used as Ports 3 and 4 they are open drain, their structure is different when they are used as part of the bus. See Section 2.12A. 4.4. 1/0 TIMINGS 4.5. SERIAL PORT TIMINGS The 1/0 pins on the 8096 are sampled and changed at specific times within an instruction cycle. The timings shown in this section are idealized; no propagation delay factors have been taken into account. Designing a system that depends on an 110 pin to change within a window of less than 50 nanoseconds using the information in this section is not recommended. The serial port on the 8096 was designed to be compatible with the 8051 serial port. Since the 8051 uses a divide by 2 clock and the 8096 uses a divide by 3, the serial port on the 8096 had to be provided with its own clock circuit to maximize its compatibility with the 8051 at high baud rates. This means that the serial port itself does not know about state times. There is circuitry which is synchronized to the serial port and to the rest of the 8096 so that information can be' passed back and forth. 4.4.1. HSO Outputs Changes in the HSO lines are synchronized to Timer 1. All of the external HSO lines due to change at a certain value of a timer will change just prior to the incrementing of Timer 1. This corresponds to an internal change during Phase C, every eight state times. From an external perspective the HSO pin should change around the rising edge ofCLKOUT and be stable by its falling edge. Internal events can occur anytime during the 8 state time window. The baud rate generator is clocked by either XTALl or T2CLK, because T2CLK needs to be synchronized to the XTALl signal its speed must be limited to 1/16 that of XTAL 1. The serial port will not function during the time between the consecutive writes to the baud rate register. Section 2.11 A discusses programming the baud rate generator. Timer 2 is synchronized to increment no faster than Timer J, so there will always be at least one incrementing of Timer 1 while Timer 2 is at a specific value. 4.5.1. Mode 0 Mode 0 is the shift register mode. The TXD pin sends out a clock train, while the RXD pin transmits or receives the data. Figure 4-12 shows the waveforms and timing. Note that the port starts functioning when a 'I' is written ,4.4.2. HSI Input Sampling The HSI pins are sampled internally once each state time. Any value on these pins must remain stable for at least 1 4-9 MCS®·96 HARDWARE DESIGN INFORMATION to the REN (Receiver Enable) bit in the serial port control register. If REN is already high, clearing the RI flag will start a reception. A schematic of a typical circuit is shpwn in Figure 4-13. This circuit inverts the data coming in; so it must be reinverted in software. The enable and latch connections to the shift registers can be driven by decoders, rather than directly fromllie low speed 110 ports, if the software and hardware are properly designed. In this mode the serial port can be used to expand the 110 capability of the 8096 by simply adding shift registers. RXO(O'iiT)\ DO DO X 01 X 02 01 02 X 03 03 X D4 X 04 05 X 05 06 06 RXO(IN) EXPANDED: RXO(OUT) ' ' -_ _ -----''C ,.....:;DO~_---'C,...:__......:;.0;...1 DO 01 02 ---Q----I'~---IDI-----Htl'--- RXO (IN) Figure 4.12. Serial Port Timings in Mode 0 CLOCK INHIBIT Figure 4-13. Mode 0 Serial Port Example 4·10 X 07 07 , MCS-96 HARDWARE· DESIGN INFORMATION 4.5.2. Mode 1 Timings when a 'I to 0' transition (start bit) is received. The transmit clock may therefore not be in sync with the receive clock, although they will both be at the same frequency. Mode 1 operation of the serial port makes use of IO-bit data packages, a start bit, 8 data bits and a stop bit. The transmit and receive functions are controlled by separate shift clocks. The transmit shift clock starts when the baud rate generator is initialized, the receive shift clock is reset The TI (Transmit Interrupt) and RI (Receive Interrupt) flags are set to indicate when operations are complete. TI I ~n!HCH -- CLKOUT I I I I I I ~ V J TCHCL - TCLLH ) READY !-TCLYX K VALID J TLLCH TYLYH TLHLL /~ !-TLLYV'" II ALE TLLYH""';"'" TLLRL TRHLH TRLRH TRXDZ TAVLL ~ - AD J l- TLLAX f- !-TRLDV_ -~ ADDR OUT I_TRLAZ .~ DATA IN 1 , TAVDV TLLRL ~ !-TWLWH , TAVLL I-- TLLAX f----4 AD ,INST , TWXQX ~TQVWX ADDR OUT VALID TWXLH_ DATA OUT / Figure 4-14, Bus Sig~al Timings 4-11 ,-\ MCS®·96 HARDWARE DESI~N INFORMATrON is set when the last data bit of the message has been sent, not when the stop bit is sent. If an attempt to send another byte is made before the stop bit is sent the port will hold off transmission until the stop bit is complete. RI is set when 8 data bits are received, not when the stog bit is received. Note that when the serial port status register is read both TI and RI are cleared. Caution should be used when using the serial port to connect more than two devices in half-duplex, (ie. one wire for transmit and receive). If the receiving processor does Tosc - Oscillator Period, one cycle time on XTALI. Timings The Memory System Must Meet TLLYH - ALE low to READY high: Maximum time after ALE falls until READY is brought high to ensure no more wait states. If this time is exceeded unexpected wait states may result. Nominally I Tosc + 3 Tosc* number of wait states desired. TLLYV - ALE low to READY VALID: Maximum time after ALE falls until READY must be valid. If this time is exceded the part could malfunction necessitating a chip reset. Nominally 2 Tosc periods. TYLYH - READY low to READY high: Maximum time the part can be in the not-ready state. If it is exceeded, the 8'096 dynamic nodes which hold the current instruction may 'forget' how to finish the instruction. TAVDV - ADDRESS valid to DATA valid: Maximum time that the memory has to output valid data after the 8096 outputs a valid address. Nominally, a maximum of 5 Tosc periods. TRLDV - READ low to DATA valid: Maximum time that the memory has to output data after READ goes low. Nominally, a maximum of 3 Tosc periods. TRXDZ - READ not low to DATA float: Time after READ is no longer low until the memory must float the bus. The memory signal can be removed as soon as READ is not low, and must be removed within thespecif\ed maximum time. Nominally, a maximum of I Tosc period. Timings the 8096 Will Provide TCHCH - CLKOUT high to CLKOUT high: The period of CLKOUT and the duration of one state time. Always 3 Tosc average, but individual periods could vary by a few nanoseconds. . TCHCL - CLKOUT high to CLKOUT low: Nominally I Tosc period. not wait for one bit time after RI is set before starting to transmit, the stop bit on the link could be squashed .. This could Gause a problem for other devices listening on the link. 4.5.3. Mode 2 and 3 Timings Modes 2 and 3 operate in a manner similar to that of mode I. The only difference is that the data is now made up of 9 bits, so ll-bit packages are transmitted and received. This means that TI and RI will be set on the 9th data bit TCLLH - CLKOUT low to ALE high: A help in deriving other timings, typically plus or minus 5 to 10 ns. TLLCH - ALE low to CLKOUT high: Used to derive other timings, nominally I Tosc period. TLHLL - ALE high to ALE low: ALE pulse width. Useful in determining ALE rising edge to ADDRESS valid time. Nominally I Tosc period. TAVLL"- ADDRESS valid to ALE low: Length of time ADDRESS is valid before ALE falls. Important timing for address latch circuitry. Nominally I Tosc period. TLLAX - ALE low to ADDRESS invalid: Length of time ADDRESS is valid after ALE falls. Important timing for address latch circuitry. Nominally I Tosc period. TLLRL - ALE low to READ or WRITE low: Length of time after ALE falls before RD or WR fall. Could be needed to ensure that proper memory decoding takes place before it is output enabled. Nominally I Tosc period. TRLRH - READ low to READ high: RD pulse width, nominally I Tosc period. TRHLH - READ high to ALE high: Time between RD going inactive and next ALE, also used to calculate time between RD inactive and next ADDRESS valid. Nominally I Tosc period. TWLWH - WRITE low to WRITE high: Write pulse width', nominally 2 Tosc periods. TQVWX - OUTPUT valid to WRITE not low: time that the OUTPUT data is valid before WR starts to go high. Nominally 2 Tosc periods. . TWXQX - WRITE not low to OUTPUT not valid: Time that the OUTPUT data is valid after WR starts to rise. Nominally I Tosc period. TWXLH - WRITE not low to ALE high: Time between write starting to rise and next ALE, also used to calculate the time between WR .starting to rise and next ADDRESS valid. Nominally 2 Tosc periods. Figure 4-15. Timing Specification. Explanations 4-12 MCS®·96 HARDWARE DESIGN INFORMATION rather than the 8th. The 9th bit can be used for parity or mUltiple processor communications (see section 2.11). could lock-up. There is no requirement as to when READY may go high, as long as the maximum READY low time (TYLYH) is not violated. To ensure that only one wait state is inserted it is necessary to bring READY high TLLYH after the falling edge of ALE. 4.6. BUS TIMING AND MEMORY INTERFACE 4.6.1. Bus Functionality 4.6.4. INST Line Usage The 8096 has a multiplexed (address/data) 16 bit bus. There are control lines provided to demultiplex the bus (ALE), indicate reads or writes (RD, WR), indicate if the access is for an instruction (lNST), and separate the bus into high and low bytes (BHE, ADO). 'Section 2.3.5 contains an overview of the bus operation. The INST (Instruction) line is high during the output of an address that is for an instruction stream fetch. It is low during the same time for any other memory access. At any other time it is not valid. This pin is not present on the 48-pin versions. The INST signal can be used with a logic analyzer to debug a system. In this way it is possible to determine if the fetch was for instrUctions or data, making the task of tracing the program much easier. 4.6.2. Timing Specifications Figure 4-14 shows the timing of the bus signals and data lines. Since this is a new part, the exact timing specifications are subject to change, please refer to the latest 8096 data sheet to ensure that your system is designed to the proper specifications. The major timing specifications are described in Figure 4-15. 4.6.5. Address Decoding The multiplexed bus of the 8096 must be demultiplexed before it can be used. This ca be done with 2 74LS373 transparent latches. As explained, in section 2.3,5, the latched address signal will be referred to as MAO through MAI5. (Memory Address), and the data lines will be called MOO through MDI5, (Memory Data). 4.6.3. READY Line Usage When the processor has to address a memory location that cannot respond within the standard specifications it is necessary to use the READY line to generate wait states. When the READY line is held low the processor waits in a loop for the line to come high. There is a maximum time that the READY line can be held low without risking a processor malfunction due to dynamic nodes that have not been refreshed during the wait states. This time is shown as TYLYH in the data sheet. Since the 8096 can make accesses to memory for either bytes or words it is necessary to have a way of determining the type of access desired. The BHE and MAO lines are used for this purpose. BHE must be latched, as it is valid only when the address is valid. The memory system is typically set up as 32K by 16, instead of 64K by 8. When the BHE line is low, the upper byte is enabled. When MAO is low, the lower byte is enabled when MAO is high BHE will be low, and the upper byte is enabled. In most cases the READY line is brought low after the address is decoded and it is determined ,that a wait state is needed. It is very likely that some addresses, such as those addressing memory mappe4 peripherals, would need wait states, and others would not. The READY line must be stable within the TLLYV specification after ALE falls (or the TYVCL before CLKOUT falls) or the processor ALE AD8-AD15 ~ When external RAM and EPROM are both used in the system the control logic can be simplified a little to some of the addresses. The 8096 will always output BHE to indicate if a read is of the high byte or the low byte, but it discards the byte it is not going to use. It is therefore possible to use the BHE and MAO lines only to control MA8-MA15 8096 ADO-AD7 r£l A7-A14 1 8 ~ I MAO-MA7 373 MAO, J I, I AO-A6 7 I I 2764 UPPER 2764 LOWER N.C. RD 8 I J 8 I I I I RD Figure 4·16. Memory Wiring Example-EPROM Only System 4-13 I MCS®-96 HARDWARE DESIGN INFORMATION memory writes, arid to ignore these liQes during me~ory reads. Figure 4-16 and 4-17 show block diagrams'of two memory systems, an external EPROM only system and ' a RAM/ROM system. . signal may be limited by either the ALE timing or the Address timing, these two cases must be considered. If Limited by ALE: Minimum ALE pulse width = rosc-l0 . (TLHLL) 4.6.6. System Verification Example To verify that a system such as the one in Figure 4-17 will work with the 8096, it is necessary to check 'all of the timing parameters. Let us examine this system one parameter at a time using the proposed 8096 specifications. These specifications are subject to change, refer to the latest 8096 data sheet for the current specifications. Minimum Addr set-up to ALE falling = Therefore ALE could occur 10 ns before Address valid. Total delay from 8096 Address stable to MA (Memory Address) stable would be: The timings of signals that the processor and memory use are effected by the latch and buffer circuitry. The timings of the signal provided by the processor are delayed by various amounts of time. S imilarly, the signals coming back from the memory are also delayed. The calculations involved in verifying this system follow: Address Valid Delay - Tosc-20 (TAVLL) ALE delay from address 74LS373 clock to output - 10 30 20 nanoseconds If Limited by Address Valid: 74LS373 Data Valid to Data Output = 18 nanoseconds 20 nanoseconds In the worst case, the delay in Address valid is controlled by ALE and has a value of 20 nanoseconds. The address lines are delayed by passing them through the 74LS373s, this delay is specified at 18ns after Address is valid or 30ns after ALE is high. Since the MA8-MA15 8 ALE A7A14 8 AD8-AD15 8 MA8-MA15 VCC MDO-MD7 PR D CLR 74LS 74 Q A7A14 LOWER BYTE OF MEMORY (EVEN LOCATIONS) 8096 ADO-AD7 AOA6 Ht---=,.-----=---, MAO UiHE (LATCHED BHE) '---+--I--~>CK Figure 4-17. RAM/ROM Memory System 4-14 WRLOW MCS®·96 HARDWARE DESIGN INFORMATION Delay of Data Transfer to/from Processor nanoseconds 12 Read low to Data in; TRLDV RD Delay Data Delay The RD low to Data valid specification (TRLDV) is 3 Tosc-50, (200 ns at 12 MHz). The 74LS245 is enabled by RD and has a delay of 40 ns from enable. The enable delay is clearly not a problem. 200.0 ns maximum 00.0 ns maximum 12.0 ns maximum 188.0 ns maximum Provided by System: The 74LS245 is enabled except during a read, so there is no enable delay to consider for write operaions. Address valid to Control; TLLRL TAVLL Address Delay . WR Delay The Data In to Data Out delay of the 74LS245 is 12 ns. Delay of WR signal to memory - '. - 15 nanoseconds 63.3 63.3 20.0 00.0 ns ns ns ns minimum minimum maximum minimum (no spec) 101.6 ns minimum Latched BHE is delayed by the inverter on ALE and the 74LS74. 74LS04 delay (Output low to high) 74LS74 delay (Clock to Output) Write Pulse Width; TWLWH 151.6 ns minimum Rising WR Delay: - 15.0 ns maximum 00.0 ns minimum (no spec) Falling WR Delay: = 22 = 40 Delay of Latched BHE from ALE falling = 62 nanoseconds 146.6 ns minimum Data Setup to WR rising; The 74LS74 requires data valid for 20 ns prior to the clock, the 8096 will have BHE stable Tosc-20 ns (TAVLL, 63 ns at 12 MHz) prior to ALE falling. There is no problem here. TQVWX Data Delay WRDelay Data Hold after WR; TWXQX Data Delay WRDelay· WR will fall no sooner than Tosc-20 ns (TLLRL, 63 ns at 12 MHz) after ALE goes low. It will therefore be valid just after the Latched BHE is valid, so it is the controlling signal. The two memory devices which are expected to be used most often with the 8096 are the 2764 EPROM and the 2128 RAM. The system verification for the 2764 is simple. 2764 \fac (Address valid to Output) < Address valid to Data in 250 ns < 354 ns O.K. Address Delay = 20 ns 12 ns Data Delay WRDelay 15 ns RD Delay o ns 2764 Toe < Read low to Data in < 188 ns O.K. (Output Enable to Output) 100 ns These calculations assume no address decoder delays and 'no delays on the RD (OE) line. If there are delays in these signals the delays must be added to the ,2764's timing. The read calculations for the 2128 are similar to those for the 2764. Required by system: Address valid to Data in; TAVDV Address Delay Data Delay 58.3 ns minimum 0.0 ns minimum (no spec) 15.0 ns maximum . 43.3 ns minimum WR High and WR Low are valid 15 ns after MAO, Latched BHE and WR are valid. Since WR is the last signal to go valid, the delay of WR (High and Low) to memory is 15 ns. .Characteristics of a 12 MHz 8096 system with latches: 136.6 ns minimum 12.0 ns maximum 00.0 ns minimum (no spec) 124.6 ns minimum MAO is valid prior to ALE falling, since the 20 ns Address Delay is less than TAVLL. Delay Summary - - 386.6 ns maximum - 20.0 ns maximum --' 12.0 ns maximum 354.6 ns maximum 4-15 2128-20 Tac 200 ns < Address valid to Data in < 354 ns O.K, 2128-20 Toe 65 ns < Read low to Data in < 188 ns O.K. MCS®.96 HARDWARE DESIGN INFORMATION this function on the iSBE-96 emulator board. It can be attached to any 8096 system which has the required address decoding and bus demultiplexing. The write calculations are a little more involved, but'still straight-forward. 2128 Twp (Write Pulse) < Write Pulse Width 100 ns < il46 ns O.K. The output circuitry is basically just a latch that operates when IFFEH or IFFFH are placed on the MA lines. The inverters surrounding the latch create an open-collector output to emulate the open-drain output found on the 8096. The 'reset' line is used to set the ports to all l's when the 8096 is reset. It should be noted that the voltage and current characteristics of this port will differ from those of the 8096, but the basic functionality will be the same., 2128 Tds (Data Setup) < Data Setup to WR rising 65 ns < 124 ns O,K. 2128 Tdh (Data Hold) < Data Hold after WR o ns < 43 ns All of the above calculations have been done assuming that no components are in the circuit except for' those shown in Figure 4-17. If additional components are added, as may be needed for address decoding or memory bank switching, the calcul)ltions must be updated to reflect the actual circuit. The input circuitry is just a bus transceiver that is addressed at IFFEH or IFFFH. If the ports are going to be used for either input or output, but not both, some of the circuitry can be eliminated. 4.7. NOISE PROTECTION TIPS 4.6.7. 1/0 Port Reconstruction When a single-chip system is being designed using a multiple chip system as a prototype, it may be necessary to reconstruct I/O ports 3 and 4 using a memory-mapped I/O technique. The circuit shown in Figure 4-18 provides Designing controllers differs from designing other computer equipment in the area of noise protection. A microcontroller circuit under the hood of a car, in a photocopier, CRT terminal, or a high speed printer is subject WRLOW----------~~~~--------------_, OUTPUT 74LS 05 (x11f.!) MDO-MD7------+--~~~ P3 ~---------r~ MD&-MD15---------r--~~8~ P4 RElfEIT------~~----------------------~--~ ADDR = P3, P4 -------+-(lI AD ---------~ 8 ADO-AD7 AD8-AD15 8 Figure 4-18. 110 Port Reconstruction 4-16 MCS@-96 HARDWARE DESIGN INFORMATION to many types of electrical nois~. Noise can get to the processor directly through the power supply, or it can be induced onto the board by electromagnetic fields. It is also possible for the pc board to find itself in the path of electrostatic discharges. Glitches and noise on the pc board can cause the processor to act unpredictably, usually by changing either the memory locations or the program counter. structures, bypass capacitors, transient absorbers and power busses with built-in capacitors can all be of great help. It is much easier to design a board with these features than to try to 'retrofit them later. Proper pc board layout is probably the single most important and, unfortunately, least understood aspect of project design. Minimizing loop areas and inductance, as well as providing clean grounds are very important. More information on protecting against noise can be found in the Intd Application Note AP-125, "Designing Microcontroller Systems For Noisy Environments. " There are both hardware and software solutions to noise problems, but the best solution is good design practice and a few ounces' of prevention. The 8096 has a watchdog timer which will reset the part if it fails to execute the software properly. The software should be set up to take advantage of this feature. 4.8. PACKAGING PINOUTS AND ENVIRONMENT The MCS-96 family of products is offered in many versions. They are available in 48-pin or 68-pin packages, with or without ROM, and with or without an A to D converter. A summary of the available options is shown in Figure 4-19. It is also recommended that unused areas of code be filled with Naps and periodiC jumps to an error routine or RST (reset chip) instructions. This is particularly important in the code around lookup tables, since if lookup tables are executed all sorts of bad things can happen. Wherever space allows, each table should be surrounded by 7 Naps (the longest 8096 instruction has 7 bytes) and a RST or jump to error routine instruction. This will help to ensure a speedy recovery should the processor have a glitch in the program flow. The 48-pin versions are available in a 48-pin DIP (Dual In-Line) package, in either ceramic or plastic. The 68-pin versions are available in a ceramic pin grid array, and a plastic flatpack. A plastic pin grid array will be available in the near future. Many hardware solutions exist for keeping pc board noise to a minimum. Ground planes, gridded ground and VCC ROM LESS WITH ROM 68-pln 48-pln 68-pin 48-pin Without A to D 8096 8094 8396 8394 With A to D 8097 8095 8397 8395 Figure 4-19. The MCS®-96 Family of Products 4-17 MCS®~96 Data Sheets 5 8094/8095/8096/8097 8394/8395/8396/8397 16·81T MIC.ROCONTROLLERS • - - 839X: an 809X with 8K Bytes of On-chip ROM High Speed Pulse 1/0 - 232 Byte Register File 10-bit AID Converter - Memory-to-Memory Architecture S Interrupt Sources - Full Duplex Serial Port Pulse-Width Modulated Output _ Five S-bit 1/0 Ports Four 16-bitSoftware Timers - Watchdog Timer The MCS~96 family of 16-bit microcontrollers consists of 8 members, all of which are control functions. d~signed for high-speed The CPU supports bit, byte, and word operations. 32-bit double-words are supported for a subset of the instruction set. With a 12 MHz Input frequency the 8096 can do a 16-bit addition in 1.0 p,Sec and a 16 x 16-bit multiply or 321 16-bit divide in 6.5 /Lsec. Instruction execution times average 1 to 2 /Lsec in typical applications. Four high-speed trigger inputs are provided to record the times at which external events occur. Six high-speed pulse generator outputs are provided to trigger external events at preset times. The high-speed output unit can simultaneously perform timer functions. Up to four such 16-bit Software Timers can be in operation at once. An on-chip AID Converter converts up to 4 (in the 48-pin version) or 8 (in the 68-pin version) analog input channels to 10-bitdigital values. This feature is only available on the 8095, 8395, 8097 and 8397 . . Also provided on-chip are a serial port, a watchdog timer, and a pulse-width modulated output signal. POWER DOWN r------- FREQUENCV REFERENCE ----~::K-~----:B~E-: GEN O~~~IP I (83961 I I I I CONTROL SIGNALS } HIGH SPEED 110 PORT 0 Figure 1. PORT 1 PORT 2 ALT FUNCTIONS HSI ADDR DATA BUS I I PORT 4 I I ____ ---lI HSO Block Diagram (For simplicity, lines connecting port registers to port buffers are not shown.) 5-1 inter 8096 RXD P2.1 TXD P2.0 HSIO HSI1 HSI2 HS04 H~13 HS05 HSOO HS01 HS02 HS03 VSS vee PWM P2.5 wI! SHE READY AD15 P4.7 AD14 P4.6 AD13 P4.5 AD12 P4.4 AD11 P4.3 AD10 P4.2 AD9 P4.1 AD8 P4 0 1 2· 48 47 46 45 44 43 42 41 40 39 38 37 36 .35 34 33 32 31 30 29 28 27 26 25 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Figure 2. Figure 1 shows. a block diagram of the MCS-96 parts, generally referred to as the 8096. The 8096 is available in 48-pin and 68-pin packages, with and without AID, and with and witho!J1 on.chip ROM. The MCS-96 nUmbering system is shown below: RESET EXTINT P2.2 VPD VREF ANGND ACH4 PO 4 ACH5 PO 5 ACH7 PO 7 ACH6 PO.6 EA VCC V$S XTAL1 XTAL2 ALE RD ADO P3 0 AD1 P31 AD2 P3 2 AD3 P3 3 A04 P3 4 ADS P3 5 AD6 P3 6 AD7 P3 7 48 PIN ROMLESS 8096 8094 ROM 8396 8394 ANALOG AND DIGITAL I/O ROMLESS 8097 8095 ROM 8397 8395 ---- .. DIGITAL I/O Figures 2, 3 & 4 show the pinouts for the 48- and 68-pin packages. The 48-pin version is offered in Dual-In-Line package while the 68-pin version comes in a Flat-pack and a Pin Grid Array. 48-Pin Package ACH5 PO 5 ACH4 PO 4 ANGND VREF VPD EXTINT P2.2 RESET RXD P21· TXD P20 P10 P11 P12 P1.3 P14 HSIO HSI1 HSI2 HS04 68 PIN OPTIONS ~ 1 2 3 4 5 6 7 8 91011121314151617 18 68 ADO P3.0 67 19 AD1 P31 66 20 AD2 P3.2 65 21 AD3 P3 3 64 22 AD4 P3 4 63 23 ADS P3 5 8096 62 24 AD6 P3.6 61 25 AD7 P3.7 8396 60 26 AD8 P40 8097 59 27 AD9 P4.1 28 1----------, AP10 P4 2 58 8397 57 29 AD11 P4.3 56 30 AD12 P4.4 55 31 1 = = = .AD13 P4.5 54 32 AD14 P4.6 53 33 AD15 P4.7 52 34 T2CLK P2.3 1---= ~W~~~%eMgQ~~~~D~e , I IL ~ Figure 3. S8-Pin Package (Flat Pack·Top View) 5-2 inter 1jil1Rl~[bJ Iil:jj)~ INlfo\lRl'1f 8096 Pins Facing Down Pins Facing Up 3 4 "'- 1 2 68 18 17 19 68 67 21 20 20 21 67 68 64 65 23 22 22 23 65 64 5 6 7 8 9 10 11 12 13 14 15 16 MCS®-96 68 PIN GRID ARRAY 17 25 24 24 25 27 26 26 27 59 29 28 56 57 31 54 55 62 63 80 61 58 52, 53 50 51 49 48 47 46 45 44 42 43 41 40 38 39 37 11 12 5 6 18 3 .. 15 )3 16 14 7 8 19 /1 68 2 9 10 MCS®-96 68 PIN GRID ARRAY 63 62 61 80 28 29 59 5& 30 30 31 57 56 33 32 32 55 54 36 35 34 34 36 33 35 38 40 42 37 39 41 44 43 46 45 48 50 53 52 47' 49 51 Figure 4. Pin Grid Array Note I '. When the pin grid array package is mourtted on the PC board, the pins are numbered counterclockwise as seen from the component side of the board, just like the nat pack when it's mounted in the contactor. Consequently, the PC board layout for pin grid array is compatible with the nat pack in a contactor except for the footprint size. The pin functions (from -1 to -68) on both packages are identical. Refer to Intel's Microcontroller handbook for mechanical dimensions on these packages. 5-3 inter ,8096 Table 3-1. InstructIon Summary MnemonIc j j j j D~B+A j j j j 2 2 o +-D+A+C t j j j D~D-A j j j j 3 2' D+-B-A D+-O-A+C- I D-A j j 2 3, ADDC/ADDCB SUB/SUBB SUB/StJBS' :2 " 0,0+ 2 +- 0 0,0 + MULB/MULUB DIV/DIVU 3 2 3 2 DIVB/DIVUB 2 AND/ANDB AND/ANDB 2 3 2 OR/ORB XOR/XORB LD/LDB ST/STB LDBSE LDBZE PUSH pop PUSHF POPF SJMP UMP BR(indirect) 0,0+ 0,0+ o +- (0,0 + 2)/A 0+2 remainder o +- (0, 0 + I)/A 0+1 remainder D ..... OandA o +- B and A D+-A A<-D o +-A; 0 + I <- SIGN(A) 2 I o <-A; 0 I I I LCALL I RET J(conditional) 0 I I I j - + I+-O SP +- SP - 2; (SP) A A +- (SP); SP +- SP + 2 SP +- SP - 2; (SP) +- PSW; PSW +- OOOOH PSW +- (SP); SP +- SP + 2 - - - j j j j 0 0 j j 0 -' - ? ? ? ? - j i j i - 0 0 0 - - - - - - 0 0 0 0 0 0 j j j - 2 2 3 3 2 3 - - - j j 0 0 - - - - - - - - - - - - - - - - - - - - - .. 2 2 2 0 I j j - - - 2 I 0 j j j i i i i i i i - - - - - - - - - - - - - - - D+-DorA 0+-0 (excl. or) A SCALL JC JNC t .; J J *A 2 ~ B *A 1+-0 * A I+- B * A 2 MUUMULU MULB/MULUB Z N C V VT ST Notes: OperatIon (Note 1) D~D+A ADD/ADDB ADD/ADDB SUBC/SUBCB CMP/CMPB MUUMULU Flags Operands " 3,4 3,4 - 1+-0 I+-j j j j - - - - - - - - - 5 - - - - - 5 PC <- PC + 8"bit offset Jump ifC = I - - - - - - - 5 Jump ifC = 0 - - - 5 PC+-PC+ II-bit offset PC +- PC + 16-bit offset PC +- (A) SP +- SP - 2; (SP) +- PC; PC +- PC + II-bit offset SP +- SP - 2; (SP) +- PC; PC +- PC + 16-bit offset PC <- (SP); SP <- SP + 2 - - - - - - - - 5 5 5 Note I. If the mnemonic ends in "B", a byte operation is perfonned. otherwise a word operation is done. Operands D, B. and A must conform to the alignment rules for the required operand type. D and B are locations in the register file; A can be located anywhere in memory. 2. 3. 4. S. D. D + 2 are consecutive WORDS in memory; D is DOUBLE-WORD aligned. 0, D + I are consecutive BYTES in memory; D is WORD aligned. Changes a byte to a word. Offset is a 2' s complement number. 8096 Table 3-2. Instruction Summary Mnemonic Operands Flags Z N C V VT ST Notes 5 - - - - - 5 - - - - - 5 - - - 5 - - - - - 5 - - - - 5 - - - - - - - - 5 5 - - - - - 5 - - - - - 5 - - - - - - - - - 0 5 - - - - 0 5 5 - - - - - 5 - - - - - - Operation (Note 1) =1 =0 JE 1 JumpifZ JNE 1 Jump ifZ JOE 1 Jump ifN = 0 JLT 1 Jump ifN = 1 - = 0 and Z = 0 JOT 1 Jump if N JLE 1 Jump if N = 1 or Z = 1 ~ - JH 1 Jump if C = 1 and Z = 0 JNH 1 JumpifC = OorZ = 1 JV 1 Jump if V = 1 JNV 1 Jump if V = 0 JVT 1 Jump if VT JNVT 1 Jump if VT = 0; Clear VT JST 1 Jump if ST = 1 JNST 1 Jump if ST = 0 JBS 3 Jump if Specified Bit JBC 3 Jump if Specified Bit = 0 - DJNZ 1 D +- D - 1; if D*-O then PC +- PC + 8-bit offset - DEC/DECB 1 D+-D-l NEG/NEGB 1 D ..... O-D INC/INCB 1 D+-D+l EXt 1 D <- D; D + 2 +- Sign (D) EXTB 1. D <- D; D + 1 <- Sign (D) NOT/NOTB 1 CLRlCLRB 1 SHLlSHLB/SHLL 2 C ..... m s b - - - - - l s b <-0 SHRlSHRB/SHRL 2 O~msb-----lsb~ SHRNSHRAB/SHRAL 2 msb~ msb-----lsb~ SETC 0 C <-1 CLRC 0 C+-O CLRVT 0 VT ..... O RST 0 PC <- 2080H DI 0 Disable All Interrupts (I <- 0) EI 0 Enable ·All Interrupts '(I ..... 1) NOP 0 PC <-PC + 1 SKIP. 0 PC <-PC + 2 NORML 2 Normalize (See sec 3.13.66) TRAP 0 SP <- SP - 2; (SP) <- PC; PC +(201OH) = 1; Clear VT =1 - - - - - - - 5,6 5,6 - ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ ./ 0 - - - 5 ./ t ./ t ./ t 0 0 0 0 - 3 D <- Logical Not (D) ./ ./ ./ ./ - D <-0 1 0 0 - C C 0 0 2 - - ./ ? ./ ./ t ./ 0 ./ 0 - ./ ./ ./ ./ 0 - ./ - - 1 - - - - 0 - - - - 0 - 7 7 7 -. 0 0 0 (j 0 0 - - - - - - - - - - - - - - - - - - - - ./ 1 0 - - - - - - - - 8 7 9 Note 1. If the mnemonic ends in "B", a byte operation is performed, otherwise a word operation is.done. Operands D, B and A must conform to the alignment rules for the required operand type. D and B are locations in the register file; A can be located anywhere in memory. 5. Offset is a 2' s complement number. 6. Specified bit is one of the 2048 bits in the register file. 7. The "L" (Long) suffix indicates double-word operation. 8. Initiates a Reset by pulling RESET low. Software should re-initialize all the necessary registers with code starting at 2080H. 9. The assembler will not accept this mnemonic. 5-5 8096 Table 3-3. Opcode and State Time Listing DIRECT I..) Z i UJ z INDIRECT@ IMMEDIATE NORMAL INDEXED@ AUTO·INC. SHORT LONG I/) Q z ca: UJ UJ Q 8 D.. .1/) UJ l- UJI/) !cc UJ UJ Q 0 I..) I/) UJ l- UJI/) !cc UJ D.. 0 ! >1/)1m .... UJ Q I/) I..) UJ I- 0 !BI/) UJUJ !cc:e I/) UJ ~ el/) UJUJ !cc:e UJ Q 0 I..) I/) UJ el/) WIIJ I/) UJ el/) UJUJ .... m 1/)1- ~ !cc:e 0 ~ !cc:E m ~i= 7/12 0 0 .... ! >m 1/)1- ADD 2 64 3 4 65 4 5 66 3 6/11 3 7/12 67 4 6/11 5 ADD 3 44 4 5 45 5 6 46 4 7/12 4 8/13 47 5 7/12 6 8/13 ADDB 2 74 3 4 75 3 4 76 3 6/11 3 7/12 77 4 6/11 5 7/12 :E D.. >m. D.. 0_. ~i= m ~i= D.. ARITHMETIC INSTRUCTIONS ADDB 3 54 4 5 55 4 5 56 4 7/12 4 8/13 57 5 7/12 6 8/13 ADDC 2 A4 3 4 A5 4 5 A6 3 6/11 3 7/12 A7 4 6/11 5 7/12 ADDCB 2 B4 3 4 B5 3 4 B6 3 6/11 3 7/12 B7 4 6/11 5 7/12 SUB 2 68 3 4 69 4 5 6A 3 6/11 3 7/12 6B 4 6/11 5 7/12 SUB 3 48 4 5 49 5 6 4A 4 7/12 4 8/13 4B 5 7/12 6 8/13 SUBB 2 78 3 4 79 3 4 7A 3 6/11 3 7/12 7B 4 6/11 5 7/12 SUBB 3 58 4 5 59 4 5 5A 4 7/12 4 8/13 5B 5 7/12 6 8/13 SUBC 2 A8 3 4 A9 4 5 AA 3 6!ll 3 7/12 AB 4 6/11 5 7/12 SUBCB 2 B8 3 4 B9 3 4 BA 3 6/11 3 7/12 BB 4 6/11 5 7/12 CMP 2 88 3 4 89 4 5 8A 3 6!ll 3 7/12 8B 4 6/11 5 7/12 CMPB 2 98 3 4 99 3 4 9A 3 6/11 3 7/12 9B 4 6/11 5 7/12 MULU 2 6C 3 25 6D 4 26 6E 3 27/32 3 28/33 6F 4 27132 5 28/33 MULU 3 4C 4 26 4D 5 27 4E 4 28/33 4 29/34 4F 5 28/33 6 29/34 MULUB 2 7C 3 17 7D 3 17 7E 3 19/24 3 20/25 7F 4 19/24 5 20/25 MULUB 3 5C 4 18 5D 4 18 5E 4 20/25 4 21126 5F 5 20125 6 21126 MUL 2 4 29 5 30 4 31136 4 32/37 5 31/36 6 32/37 MUL 3 MULB 2 MULB 3 ® ® ® ® DIVU 2 DIVUB 5 32/37 5 33/38 4 23/28 4 24/29 5 24/29 5 25/30 ® ® ® ® 8E 3 28/32 3 29/33 17 9E 3 20/24 3 5 30 32/36 21 ® ® 4 4 4 24/28 6 31 4 21 5 22 ® ® ® ® 8D 4 26 17 9D 3 4 29 4 21 ® ® 5 30 4 21 5 22 ® ® ® ® 8C 3 25 2 9C 3 DIV. 2 DIVB 2 ® ® Notes: 6 32/37 7 33/38 5 23128 6 24/29 6 24/29 7 25/30 8F 4 28/32 5 29/33 21125 9F 4 20/24 5 21125 4 33/37 32/36 6 33/37 25/29 ® ® 5 4 5 24128 6 25/29 Long indexed and Indirect + instructions have identical opocodes with Short indexed and Indirect modes, respectively. The second byte of instructions using any indirect or indexed addressing mode specifies the exact mode used. If the second byte is even, use Indirect or Short Indexed. If it is odd, use Indirect + or Long indexed. In all cases the second byte of the instruction always specifies an even (word) location for the address referenced. <\) Number of state times shown for internal/external operands. @ The opcodes for signed multiply and divide are the opcodes for the unsigned functIOns with an "FE" appended as a prefix. ® 5·6 inter .8096 Table 303. Continued DIRECT , u Z Q ::E w II: ::E 0 0 AND 2 3 2 3 2 2 2 2 60 0 z U) Z CC w A. INDEXED@ SHORT LONG INDIRECT@ NORMAL AUTO-INC. IMMEDIATE w Q 0 w w U) w ~f3 Q Q U) w WU) 0 f t:ID U)ti!1 0f t:ID 0 tel 0f ~I= U) 8U) w Ww t:ID !c::E1= .:n U) 8U) w Ww t:ID !c::E :nl= w Q 8U) U) 8U) w Ww U) Ww U A. 0 !c::E ~ !c::E t:ID :nl= ID :nl= 63 43 73 53 83 93 87 97 4 5 4 5 4 4 4 4 5 6 5 6 5 5 5 5 7/12 0 LOGICAL INSTRUCTIONS AND ANDB ANnB OR ORB XOR XORB LD LOB ST STB LDBSE LDBZE 2 2 2 2 2 2 84 3 4 3 4 3 3 3 94 3 40 70 50 80 90 AO BO CO C4 BC AC 3 j 3 3 3 3 4 5 4 5 4 4 4 4 4 4 4 4 4 4 61 41 71 51 81 91 85 95 4 5 3 4 4· 3 4 3 5 6 4 5 5 4 5 4 62 42 Al BI 4. 3 5 4 - - - - A2. B2 C2 C6 BE AE 7/12 6/11 3' 4 3 4 3 3 6/11 3 7/12 6/11 92 3 4 3 4 3 3 86 3 72 52 82 7/12 6/ll 7/12 6111 8/13 7/12 8/13 7/12 7/12 96 3 6/11 3 7/12 DATA TRANSF!ER !N~T~UCTION!3 BD 3 AD 3 4 4 3 3 3 3 3 3 6/11 6/11 7/11 7/11 6/11 6/11 3 3 3 3 3 3 7/12 7/12 8/12 8/12 7/12 7/12 6/11 7/12 6/11 7/12 6/11 6/11 6/11 6/11 4 4 4 4 4 AF 4 6111 8/13 7/12 .8/13 7/12 7/12 7/12 7/12 7/12 6/11 5 5 5 5 5 5 CB 3 CF 3 IIIi5 14/1S 4 4 12/16 CB 3 CF j 15/19. 4 4 16/20 A3 B3 C3 C7 BF 6/11 7/11 7/ll 6/ll 7/12 8/12 8/12 7/12 7/12 STACK OPERATIONS (Internal stack) PUSH POP PUSHF POPF I I 0 0 C8 2 CC 2 F2 I F3 I 8 12 8 9 C9 3 - - S' CA 2 CE 2 -- 11115 14/18 2 2 12116 14/18 14/18 STACK OPERATIONS (external stack) PUSH POP PUSHF POPF I I 0 0 C8 2 CC 2 F2 I F3 I 12 14 12 13 C9 3 - - 12 CA 2 CE 2 -- 15/19 16/20 2 2 16/20 16/20 16/20 16120 JUMPS AND CALLS MNEMONIC UMP SIMP BR[] OPCODE E7 20-27@ E3 BYTES STATES 3 2 2 8 8 8 Notes: MNEMONIC OPCODE LCALL EF SCALL RET 28-2F@ FO TRAP@ F7 BYTES STATES 3 2 I I 13/16@ 13/16@ I2II6@ (j) Number of Slate times shown for mtemal/extemal operands. ~ The assembler does not accept this mnemonic. @ The least significant 3 bits of the opc!lde are concatenated with the following 8 bits to form an , relative call or jump. @ Slate times for stack located intemallextemal. !B> The assembler uses the generic jump mnemonic (BR) to generate this instruction. 5-7 II-bit, 2's complement, offset for the . inter 8096 Table 3-4. CONDITIONAL JUMPS All condi,ional Jumps are 2 1;lyte instructions. They require 8 state' ilmes if the Jump is taken, 4 if it is not. MNEMONIC JC JNC OPCODE MNEMONIC OPCODE MNEMONIC OPCODE MNEMONIC OPCODE 'OB 03 09 01 JH JNH JE JNE JV ' JNV OF 07 00 05 JOE JLT JVT JNVT 06 .DE OC 04 JOT JLE JS:r JNST 02 OA 08 00 JUMP ON BIT CLEAR OR BIT Si!T These instructions are 3-byte instructions. They require 9 state times If the Jump is taken, 5 if it is not MNEMONIC JBC JBS BIT NUMBER 4 3 0 1 2 30 38 31 39 32 3A 33 3B 34 3C 5 6 7 35 30 36 3E 37 3F lOOP CONTROL DJNZ OP~OOE EO; 5/9 STATE TIMES (NOT TAKEN/TAKEN) 3 BYTES; SINGLE REGISTER INSTRUCTIONS MNEMONIC OEC OECB NEG NEGB INC INCB OPCODE BYTES STATES 13 2 2 2 2 07 17 2 4 4 4 4 4 4 . 05 15 03 2 MNEMONIC OPCODE EXT EXTB NOT NOTB CLR CLRB 06 16 02 12 01 , 11 BYTES STATES 2 2 2 2 '2 2 4 4 4 4 4 4 SHIFT INSTRUCTIONS INSTR MNEMONIC SHL SHR SHRA WORD OP B 09 3 08 OA INSTR BYTE MNEMONIC OP B SHLB SHRB SHRAB 3 3 19 18 1A 3 3 3 DBl 'WD INSTR MNEMONiC OP B SHLL SHRL SHRAL 00 OC OE 3 3 3 STATE TIMES 7 + 1 PE~ SHIFT(£) 7 + 1 PER SHIFT(£) , 7 + 1 PER SHIFT(£) SPECIAL CONTROL INSTRUCTIONS OPCODE BYTES SETC CLRC CLRVT RST MNEMONIC F9 F8 FC 1 1 1 1 NORML OF FF \ STATES 4 4 4 16 MNEMONIC 'OPCODE Dl FA EI NOP SKIP FB FO 00 BYTES STATES 1 1 1 2 4 4 4 4 NORMALIZE 3 11 + 1 PER SHIFT No~: ® This instruction takes 2 states to pull RST low, then holds it low for 2 states to initiate a reset. The reset takes 12 states, at whIch cr> time the program restarts at location 2080H. Execution will take at least 8 states. even for 0 shift. '5·8 inter 8096 ELECTRICAL CHARACTERISTICS ABSOLUTE MAXIMUM RATINGS, 'NOTICE Stresses above those listed under "Absolute Maximum Ratings" may cause permanent damage to the device, ThiS IS a'stress rating only and functional operation of the device at these or any other conditions above those indicated In the operational sections of thiS specificatIOn IS not Implied Exposure to absolute maximum rating conditions for extended periods may affect deVice reliability Ambient Temperature Under Bias .......... O°C to +70°C Storage Temperature ... , ............ -40°C to +150°C Voltage from Any Pin to V$S or ANGND ... -0 3V to +7 OV Average Output Current from Any Pin ........... 10 mA Power Dlsslpa,tlon ......................... 1 5 Watts OPERATING CONDITIONS Symbol Ambient Temperature Under Bias VCC Digital Supply Voltage VREF Analog Supply Voltage fOSC OSCillator Frequency VPD Power-Down Supply Voltage I Max Units 0 +70 C 450 550 V 45 VCC-O,3 55 VCC+03 V V 60 12 MHz 450 550 V Parameter TA Min I I VBS Should be connected to ANGND through a 0 01 pF capacitor ANGND and VSS should be nominally at the same potential DC CHARACTERISTICS Parameter Symbol Input Low Voltage VIL Min Max Units -0.3 +0.8 V Test Conditions VIH Input High Voltage (Except RESET) 2.0 VCC+0.5 V VIH1 Input High Voltage, Ri:ID Rising 2.4 VCC+0.5 V VIH2 Input High Voltage, ~ Falling 2.0 VCC+0.5 V VOL Output Low Voltage VOH Output High Voltage ICC VCC Supply Current 200 mA All outputs disconnected. IPD VPD Supply Current 1 mA Normal operation and Power-Down. 15 mA 0.45 V 2.4 IREF VREF Supply Current III Input Leakage Current to all pins of HSI, PO, P3, P4, and to P2.1. IIH Input High Current to EA ilL Input Low Current to all pins of P1, and to P2.6, P2.7. IIL1 IIL2 Cs Pin Capacitance (Any Pin to VSS) V ±10 - See Note 1. See Note 2. p.A Vin=O to VCC See Note 3 100 p.A VIH=2.4V -100 p.A VIL=0.45V Input Low Current to ~ -2 mA VIL=0.45V Input Low Current P2.2, P2.3, P2.4, READY -50, p.A VIL=0.45V 10 pF fTEST=1MHz NOTES: IOl ~ 036 rnA for all PinS of P1, for P2 6 an'd P2 7, and for all pins of P3 and P4 when used as ports IOl ~ 20 rnA for TXD, RXD (In senal port mode 0), PWM, ClKOUT, ALE. SHE. RD, WR, and all pins of HSO and P3 and P4 when used as external memory bus (ADO-AD1S) 2 IOH ~ -20 p.A for all pins of P1, for P26 ad P2 7 IOH ~ - 200 p.A for TXD, RXD (In senal port mode 0), PWM, CLKOUT, ALE, SHE, WR, and all pins of HSO and P3 and P4 when used as external memory bus (ADO-AD1S) P3 and P4, when used as ports, have open·draln outputs 3 Analog Conversion not In process 5-9 inter 8096 AID CONVERTER SPECIFICATIONS . Resolution ............................................ :!: 0.001 VREF Accuracy ................... , ......... " ............... :!: 0.004 VREF Differential nonlinearity ................ :!: 0.002 VREF max Integral nonlinearity ..................... :!: 0.004 VREF max Channel-to-chanel matching .................. " ..... :!: 1 LSS Crosstalk (DC to 100kHz) ...................... - 60dS max AID Converter operation is verified only on the 8097, 8397, 8095, 8395. The absolute conversion accuracy is dependent on the accuracy of VREF. The specifications given below assume adherence to the Operating Conditions section of these data sheets. Testing is done at VREF = 5.120 volts. . . AC CHARACTERISTICS Test Conditions: Load capacitance on output pins = 80pf Oscillator Frequency = 12.00 MHz 4.50 Volts, = VCC ,= 5.50 Volts; 0 C ,= Temperature, = 70 C Timing Requirements (other system components must meet these specs) Min Parameter Symbol TCLYX READY Hold after CLKOUT falling edge TLLYV End of ALE to READY Setup TLLYH End of ALE to READY high TYLYH Non-ready time TAVDV Max o (1) Units nsec 2Tosc-60 nsec 4Tosc-60 (2) nsec 1000 nsec Address Valid to Input Data Valid 5Tosc-80 nsec TRLDV RDf Active to Input Data Valid 3Tosc-60 nsec TRXDZ End of RDf to Input Data Float Tosc-20 nsec Units 0 Timing Responses (MCS®-96 parts meet these specs) Symbol FXTAL Parameter Oscillator Frequency Min Max 6.00 12.00 MHz 166 nsec Tosc Oscillator Period 83 TCHCH CLKOUT Period 3Tosc (3) 3Tosc (3) nsec TCHCL CLKOUT High Time Tosc-20 Tosc+20 nsec TCLLH CLKOUT Low to ALE High -5 20 nsec TLLCH ALE Low to CLKOUT High Tosc-20 Tosc+40 nsec TLHLL ALE Pulse Width Tosc-25 Tosc+ 15 nsec TAVLL Address Setup to End of AI-E Tosc-50 nsec TLLRL End of ALE to RDf or WRf activE1 Tosc-20 nsec Address hold after End of ALE Tosc-20 nsec TWLWH WRf Pulse Width 2Tosc-35 nsec TQVWX Output Data Setup to End of WRf 2Tosc-60 nsec TWXQX Output Data Hold after End of WRf Tosc-25 nsec TWXLH End of WRf to next ALE 2Tosc-30 nsec TRLRH RDf Pulse Width 3Tosc-30 nsec TRHLH End of RDf to next ALE Tosc-25 ,!lsec TLLAX. NOTES: 1. If the 48-pin part is being used then this timing can be generated by assuming that the CLKOUT falling edge has occurred at 2Tose + 55 (TLLCH(max) + TCHCL(max)) after the falling edge of ALE. 2. If more than one wait state is deSired, add 3Tosc for ~aeh additional wait state. 3. ,CLKOUT is directly generated as a divide by 3 of the oscillator. The period will be 3Tosc :!: 5 nsec if rose is constant and !he rise and fall times on XTAL 1 are less than 10 n~e. ' 5-10 inter 8096 I , ,, _TCHCH CLK OUT ---J ---"\ I I I " J TCHCL -- TYVCL I- TCLLH ) REA DY _TCLYX K VALID TLLCH TLHtL TYLYH I~ ALE _TLLYV-" \ TLLRL - TRHLH TRLRH -, TRXDZ TAVLL I- TLLAX !-TRLDV_ ADDR OUT AO DATA IN TAVDV TlLRL f - !-TWLWH , WR TAVLL ,TW)'LH_ ~ TLLAX TWXQX f~ AD _TQVWX ADDR OUT DATA OUT ,INST \ VALID / 5-11 MCS®,96 Article Reprint. 6 '.'" ' ~' . ,'I' , ' \' ARTICLE iREPRINT ~ , " AR~321 February 1984 Reprinted from DIGITAL DESIGN © February 1984, Morgan.Grampian Publishing Company 6-1 . Order Number. 231040.001 COMPONENTS High-Performance Event Interface For A Microcomputer As silicon technology advances to provide denser geometries, timer structures have become mOre elegant and powerful. High Speed Input Unit Microcontrollers are microprocessors specially configured to monitor and control mechanisms and processes rather than manipulate data. The systelljs they are imbedded in are often called real time control systems; microcontrollers always incorporate some form·of timer structure to allow synchroniza\ion .with the outside or 'real' world .. As silicon technology advances to provide denser geometries, these structures have become more elegant and powerful. This trend can be seen in the Intel 8048, the Motorola 6801, and the Intel 8051 which were introduced at approxImately two and a half year intervals starting in 1976. The 8048 has a single 8-bit timer; the 680 I has a 16-bit timer, and the 8051 has two 16-bit timers. The new 16-bit microcontroll~r from Intel, the 8096, has an independent High Speed I/O subsystem which provides the functionality of four to eight 16-pit timers. While this subsystem is designed to provide an integrated approach to measuring and controlling time modulated signals, -it is easier to describe as separate input and output units. The purpose of the High Speed Input unit is to allow the measurement of the periods of incoming pulse or frequency modulated inputs with high resolution and minimal software overhead. A block diagram of the hardware used to accomplish this goal is shown in Figure l. the heart of this unit is a programmable change detector which monitors .the four I/O pins of the 8096 which are ctesignated as "High Speed Inputs" _(HSI.O-HS1.3). The operatIng mode of the change detector IS controlled by a byte register which can be written as register 3 of the onboard register file. This register has the prededare9 mIme HSLMODE in the 8096 assembly language. The register contaInS a separate field for each of the four HSI pins. There are two bits in each of these fields and they are encoded as follows: • • 00 Capture every eighth positive transition 0 I Capture positive transitions only 10 Capture negative transitions only II Capture both positive and negative transitions It is also possible to disconnect one or more of the HSI pins from the change detector by writing into one of the two I10 control registers. This register, known to the assembly language as lOCO is addressed as register 15H of the on-board register file. HSI pins th~t Changes (4) HSIO HSI1 HSI2 Control Event FIFO ,(8x.20) Figure 1: Diagram shows the HIgh-Speed Input Unit which is used to measure incoming pulse or frequency modulated InputS. 6-2 Microcompule( interrupt can be generated either when one or more entries exist in the FI FO or when seven or more entries exist. The choice is made by the software by setting a bit in I/O control register I (lOCI). The 8096 only &UPports byte and word operands for most operations. The holding register is 20 bits wide hence the holding register is broken down into two registers. The 16-bit time field is read as a word register and is known as HSLTlME to the assembler. The change informati'on is read as an eight-bit byte known as HSLSTATUS. The four extra bits in this byte are used to report the state of the HSI pins at the time the register is read (not at the time the reported change occurred). The holding register is cleared after the HSL TIMEis read so that HSLSTATUScan be read at any time to monitor the actual state of the HSI pins without losing data from the FIFO. RESET HSOO HSOl HS02 HS03 HS04 HS05 ~----------~------------~~DBUS Figure 2: Block diagram of the High Speed Output hardware. have to be disconnected from the change detector are available for use as normal digital inputs and two of them (HSI.2 and HSI.3) can be used by the High Speed Output unit. When a change (or changes) of the required type occurs, four bits of change information, along with the current value of T1MERI, are loaded .into a FIFO (first-in, first-out memory). Each set bit in this field indicates that a change occurred on the corresponding input pin. The time reference for the HSI unit is T1MERI, a sixteen bit counter which is incremented every eight state times by the CPU clock. With a 12 M Hz crystal this gives a resolution of 2.0 microsec- onds. TI M ER I is cleared by reset and then starts incrementing. It cannot be , written to by the software but can be . read as a sixteen bit word at any time. When its count goes from all ones to zero a flag is set and an interrupt generated. The software can use this flag and/ or interrrupt to extend the meas, urement range of the HSI unit. The FIFO that is used to store the change and time information is eight levels deep (including the holding register) and 20 bits wide. The oldest entry in the FIFO is placed in the holding register. When the holding register is read then the next oldest entry will drop into it and another cell of the FIFO will become available for input data. An High Speed Output Unit The High Speed Output unit serves the output reqUirements of the system in the same way as the HSI unit serves the mput. It allows the generation of pulse and frequency modulated Signals with high resolutIOn and mmimal software overhead. It can also be used to generate time delays for the operating software and to trigger the AI 0 converter at precise time intervals for signal processing algonthms. A block diagram of the HSO hardware IS shown in Figure 2. The HSO unit is dnven by a Content Addressable Memory (CAM) which is 23 bits wide and eight levels deep The (contmued on page 120) o I TID I I I Channel Code I T2 ClK - 0-5 HSO.O - HSO 5 6 HSOOAnd HSO 1 7 HSO 2 And HSO 3 ...... HSll - - - - -lOCO? 8-8 Software Timers E F Reset Timer 2 Start AID Conversion T2RST , '-----lnterruptlNo Interrupt L..._ _ _ _ _ _ , 110 Data For HSO X IOC05 L...___________ Tlmer 2!Tlmer 1 Figure 3: DIagram showsformat of Command Tag . .The lower four bits specify the basic operation and the remaimng three bits are options 10 the basIC operation. FI!(ure4 Figure ,hOH \ tJw c!t)cA. and re\el 0P(/On.\ of TIM ER2 used hI' the Htl(h Speed Ourpurl/nil 6-3 Microcomputer 23 bits are broken into a 16 bit time tag and a seven bit command tag. The command tag tells it when to do it. The format of the command tag is shown in Figure 3. The lower four bits of the tag specify theba~ic, operation and the remaining three bits specify options to the basic operation. The ba~ic operations supported are: • Write to one of the six pins controlled by the HSO unit (HSO.OHSO.5). Write to HSO.O and usa. I with a single command. Write to HSO.2 and HSO.3 with a single command. Set one of four software timer flags. Reset Timer 2. Trigger an AI D conversion. If an operation on an HSO pin is specified. then the value to be written to the pin is taken from bit five of the 'command tag. Note that if two HSO pins are to be modified with the same command then both will be set to the same state. Bit five of the command tag is ignored for the other HSO operations. Bit four of the command tag enables the generation of an interrupt which occurs when the command is executed. There are two interrupts generated by the HSO unit. One of them indicates that an operation involving a HSO pin has occurred. and the other is used to signal that one of the internal HSO functions (such as setting a software timer flag) has been completed. Bit six of the command tag controls which {lne of the two timers available to the HSO unit will be used as a time base for the command. If bit six is a zero then the command tag will be executed when TIMERI becomes equal to the time tag stored in the CAM. If bit six is a one then the command tag is executed based on TIMER2. In either case the command is flushed from the CAM as soon as it is executed. One of the timers (TIMERI) used by the HSO unit is the same timer that is used by the HSI unit. The other (TIMER2) is used only by the HSO unit. TIMER2 allows HSO events to be generated on a time base that is different from that ofthe CPU. Like TIMERI it is a 16 bit counter that can be read but not written to by the software. It also has an overflow flag and interrupt to indicate that it has incremented from a source external to the 8096 and can be reset by a number of paths in addition to system reset. The options available are shown in Figure 4. The clock input can come either from a specific pin designated as the T2CLK or it can come from HSI.l depending on the state of lOCO.; which is set by the software. In either case the counter is incremented on both edges of the clock signal. TIMER2 can be reset by a specific pin designated as T2RST or it can be reset by HSO.O. It is also possible for the software to lock out external sources of reset (by clearing IOCO.3) andlor reset TIMER2 directly (via lOCO. I) or indirectly via a command stored in the CAM. Note that this last possibility allows TIMER2 to be configured as a modulatjon counter since the software can command the HSO unit to clear TIMER2 when it reaches a given value. Commands are loaded into the CA M from the 23 bit wide holding register· which. like the holding register for the HSI unit, is actually made up of a byte register (HSO_COMMAND) which stores the command tag and a word register is considered loaded after HSO_ TIME is loaded so the software must always load HSO_COMMAND and then load HSO_TIME. ]be software must also ensure that the loading of the two registers is not interrupted by an interrupt service routine which uses the HSO unit. If such an interrupt occurs immediately following the loading of HSO_COMMAND then the subsequent loading of HSO_TIME will reload the command tag written into the holding register by the interrupt service routine. The safest procedure is to lockout interrupts during the loading of the holding registers, however a care- ful examination of the control flow of the program may show this to be unnecessary. If there is an empty cell in the CAM when the holding register is loaded then the command and its time tag will be loaded into the CA M within seven state times (1.75 microseconds at 12 MHz). It is important to note that a command will not execute from th~ holding register, it must be loaded into the CAM. If the CAM is full then the command will' remain in the holding register until one of the commands already in the CAM is executed and flushed. Two status flags are available to help the software manage the CAM. One of them indicates that the holding register is full or the CAM is full. Once a command is loaded into the CAM it cannot be read or overwritten, it can only be flushed after it is executed. To support those situations where the software wishes to cancel a command after it has been loaded, the HSO unit is configured so that two operations to a HSO pin which cancel each other will not effect the setting of the pin if they are executed with identical time tags. Application Example Since the 8096 incorporates a full duplex asynchronous serial port in its hardware it may seem strange that one would want to implement a software driven serial port using the high speed 110 features. There are, however, many useful configurations of microcontroller systems which in fact require more than a single serial port. An obvious example would be a network of 8096 controllers which use the hardware serial port for interprocessor communications. One (or more) of these controllers might also be required to communicate with a CRT terminal used to supervise or monitor 1 10<02:03:0<05:06:07:081 T"0 Figure 5: FIgure shows standard /O-bit asyn- chronous frame. ~~J +1 (+3 ( +5 ( +7 (:) +9 ( !) +11 ( ~) ') +13' (T ') +15 (T n +17 (+19 (,') 1 6-4 ~ Micro! omputer The serial output process is simpler than the receive process because there is no need to synchronize with the outside world. the system. Another example would be a simple CRT terminal design based on an 8096 which needs one $erial port for communication and another for driving a slave printer. It l!1lI.y also be true that this is, in fact, a strange requirement. In any case it is an excellent example to show how the high speed 110 features of the 8096 might be used. The objective is to add a software driven asynchronous $erial port to the 8096 that provides full duplex $eriai communication at 2400 baud. A standard frame consisting of a START bit, eight data bits and a STOP bit will be assumed. A high speed input pin (HSI.O) will be used for received data and a high speed output pin (HSI.O) for transmit data. A standard to-bit asynchronous frame is shown in Figure 5. The figure also shows the points in time where the receive process must sample the incom- ing data stream and take some action. timer interrupt at the appropriate time. The first timing point (labeled T.o) is the This is done in all states unless the recepleading edge of the start bit, the accurate tion of the character is complete or a sensing of this edge is important becau$e false START bit has been detected. all subsequent sample times are relative Under these conditions the receive proto this edge. This event also places the cess must be reinitialized by enabling highest burden on the sampling algoHSJ.O into the event FIFO (by setting rithm because it can occur at any point IOCO.O) instead ofretriggering the softin time. The rest of the sampling events ware timer. occur at some multiple of one-half a bit The serial output process is simpler period relative to the edge of the start bit. than the receive process because there is The diagram uses the symbol B to no need to synchronize with the outside represent a bit period. world. A transmission can be started at At the second sample, which occurs any time by setting the TxD line to a half way through the start bit, the data space for one bit time to form the must be checked to make sure it is still a START bit. Following the START bit SPACE. If it is not. a noise pulse has are the eight data bits and the STOP bit. caused a false start and the receive proThe HSO interrupt service routine can cess must be reinitiali7ed. The next eight be used to transmit the data and the stop samples are used to shift in the serial bit but the transmit process must be data stream. The last sample. which initialized. occurs 19 one-half bit times after the The only real complication in the HSO leading edge of the start bit. is used to interrupt service routine is that there are verify that the stop bit is valid (Le. it is in no flags available in the 8096 which the MARK state). If it is not thea framindicate which of the HSO outputs ing error must be reported since it is _ caused the interrupt. In many systems likely that the' receiver is not properly this does not represent a problem synchronized with the transmitter. because the HSO unit can be treated as a write only device. It is given comThe HSI unit is an ideal mechanism mands which are to be executed at the for detecting the leading edge of the start proper time but no feedback is required bit. All that needs to be done is to set the to indicate when the proper time has mode register to detect negative going been reached. In this case, however, the edges on HSI.O. feedback is required since the CAM isn't The software timer interrupt service deep enough to hold all of the transiroutine implements a simple state tions required for a character. Even if it machine based on the variable count. were big enough it is unlikely that so The routine also arranges for the next ,many CAM locations would be dedisample by issuing a command to the HSO unit to generate another software 0 cated to serial output. 6-5 MCS®~51 Architecture 7 CHAPTER 7 MCS®-S1 ARCHITECTURE 7.0 INTRODUCTION The MCS®-51 family of S-bit microcontrollers consists of the devices listed in Table I, all of which are based on the MCS-51 architecture shown in Figure 7-1. The original S051 was built in HMOS I technology. The HMOS II version, which is the device currently in production, is called the S05IAH. The te~ "S051," however, is still often used to generically refer to all of the MCS-51 family members. This is the case throughout this manual, except where specifically stated otherwise. Also for brevity, the term "S052" is used to refer to both the S052 and the S032, unless otherwise noted. PO.O-PO.7 ,- - - - - - - -1:ll!::H.:~ .......-L-L.L..L..L..t,- - - - - -- --, I ~ I I ~ -= -- - I I I I I I I I I I I I I I I I I ,..---=---, I I I I I I I ,-,,=::.:..=::..J I I I I I r-----.----, I I I I I I I PSEN ALE Ell I I RST I I I I Figure 7-1. MCS-51 Architectural Block Diagram 7-.1 MCS®-51 ARCHITECTURE The newest MCS·51 members, the 8032 and 8052, have more on-chip memory and an additional 16·bit timer/ counter. The new timer can be used as a timer, a counter, or to generate baud rates for the serial port. As a timerl counter, it operates in either a 16·bit auto· reload mode or a 16-bit "capture" mode. 'This new feature is described in Section 7.6.2. Pinouts are shown in the individual data sheets and on the inside back cover of this handbook. Table 1. MCS®-S1 Family Members PART ON-CHIP ON-CHIP PROGRAM DATA TECHNOLOGY MEMORY MEMORY 8051 8031 875lH HMOS HMOS 4K-ROM HMOS I NONE 4K-EPROM 80C51 CHMOS 4K-ROM 80C3! CHMOS 8052 8032 HMOS HMOS NONE 8K-ROM 256 NONE 256 128 128 128 128 128 The major MCS@·51 features are: • 8·Bit CPU • On·Chip oscillator and clock circuitry • 32 110 lines • 64K address space for external data memory • 64K address space for external program memory • Two 16·bit timer/counters (three on 8032/8052) • A five·source interrupt structure (six sources on 8032/8052) with two priority levels • Full duplex serial port • Boolean processor Address Name Port 2 OAOH Port 3 OBOH Interrupt Priority Control OB8H Interrupt Enable Control OA8H Timer/Counter Mode Control 89H Timer/Counter Control "TCON B8H + "T2CON Timer/Counter 2 Control OC8H THO Timer/Counter 0 (high byte) 8CH TLO Timer/Counter 0 (lOW byte) BAH TH1 Timer/Counter 1 (high byte) BDH TL1 Timer/Counter 1 (lOW byte) BBH +TH2 Timer/Counter 2 (high byte) OCDH +TL2 Timer/Counter 2 (lOW byte) OCCH + RCAP2H Timer/Counter 2 Capture Register (high byte) OCBH + RCAP2L Timer/CoI,mter 2 Capture OCAH Register (low byte) Serial Control "SCON 98H SBUF Serial Data Buff 99H PCON Power Control 87H Symbol "P2 "P3 "IP "IE TMOD The SFRs marked with an asterisk (*) are both bit· and byte·addressable. The SFRs marked with a plus sign ( +) are present in the 8052 only. The functions of the SFRs are described as follows. 7.1 MEMORY ORGANIZATION ACCUMULATOR The 8051 has separate address spaces for Program Mem· ory and Data Memory. The Program Memory can be up .to 64K bytes long. The lower 4K (8K for 8052) may reside on·chip. The Data Memory can consist of up to 64K bytes of off·chip RAM, in addition to which it includes 128 bytes of on·chip RAM (256 bytes for the 8052), plus a number of "SFRs" (Special Function Registers) as listed below. ACC is the Accumulator register. The mnemonics for ac· cumulator·specific instructions, however, refer to the ac· cumulator simply as A . Symbol "ACC *B *PSW SP DPTR "PO "P1 Name Address Accumulator OEOH B Register OFOH Program Status Word ODOH 81H Stack Pointer Data Pointer (con83H slsting of DPH and DPL 82H Port 0 80H Port 1 90H B REGISTER The B register is used during multiply and divide opera· tions. For other instructions it can be treated as another scratch pad register. PROGRAM STATUS WORD The PSW register contflins program status information as detailed in Figure 7·2. STACK POINTER The Stack Pointer register is 8 bits wide. It is incremented before data is stored during PUSH and CALL executions. While the stack may reside anywhere in on·chip RAM, MCS ~~------------~~--------~ ,', A. HMOS Configuration. The enhancement mode transistor is turned on, for 2 os<:. periods after Q makes a 1-to-0 transition. ", Q FROM PORT LATCH' , ' INPUT o-~-oC DATA READ PORT PIN B. :OHMOS, Conflguraiion. pFET 1 is turned on for 2 osc. periods after Q ~akes a1-to-0 transitlon.,During this. , time, pFET;1 also turns on pFET 3 throughthe inverter " to for,m a latch which holds the 1. pFE,T,2!s also on.,' :. . ~ , "Fig~re 7:6. Por:ts and 3 and CHMOS Interrllil PlIII·up Configurations. Port 2 is similar except that It,holds the strong pullup' on 'while emitting 1s that are address bits. ,,, , ,(See text, "Accessing External Memory."): " " 1 HMos about 0.25 rnA when shorted to. ground. In patallel with the fixed pull-up is an enhancement-mode transistor, whieh is' activated during SI' whenever the port' bit does a O-to~ 1 transition. During this interval, if'the port pin is shorted'th ground, 'this extra transistor' will allow the pin to source an additional 30 rnA. : pFET 1 in Hgure 7-68 is ,the transistor,that.isturned on for 2 oscillator periods af1;er a,6-to-l transition in the, port latch. While it's on, it ruins on pFET 3' (a weak pull-up), through the inverter. This inverter and pFET form a latch which hold the 1. ' ' In 'the CHMOS, versions; the pull-up consists of three pFETs: It should be noted that an n-cl!annel FET (nFET) ~s turned on when a ,logical '1 is applied to its ghte, and ' is 'tubieg qff whim a logical 0 is applied to its gate. A pchanriel FET: (pFET) is the opposite: it is on when its gate s~e~ a O,:and off ~hen its gate Sees a,l. -7-7 Note that if the pin is emitting aI, a negative glitch on the pin from some external source can tum off pFET 3, cal,lsing the pip to gointo a fio,at state" pFET 2 is a very weak pull-up which is on. wheneve~ the 'nFET is off, in tradiiional CMOS style. !t's ~nlyabout 1110 the stren~th of pFET3. Its function is to restore a' I to the pin in the ~vel,lt the pin had a I ,and lost i~ to a glitch. Mcs·~1ARCHrrECTURE 7.4.3 Port loading and Interfacing The output buffers of Ports I, 2, and 3 can each drive 4 LS 1TL inputs. These ports on HMOS versiOlls can be driven in a nonnal manner by any 1TL or NMOS circuit. Both HMOS and CHMOS pins can be driven by opencollector and open-drain outputs, but note that O-to-I transitions will not be fast. In the HMOS device, if the pin is driven by an open collector output, a O-to-I transition will have to be driven by the relatively weak depletion mode F£T in Figure 7-6(A). In the CHMOS device, an input 0 turns off pull-up pFET3, leaving only the very weak pull-up pFET2 to drive the transition. . turned on. If the CPU then reads the same port bit at the , pin rather than the latch, it will read the base -voltage of the transistor and interpret it as a O. Reading th~ latch rather than the pin will return the correct value of 1. 7.5 ACCESSING EXTERNAL MEMORY Accesses to external memory are of two types: accesses to external Program Memory and accesses to external Data Me~Accesses to external Program Memory use signal PSEN (program store enable) as the read strobe. Accesses to external Data Memory U$e RD or WR (alternate functions of PJ. 7 and P3.6) to strobe the memory. Port 0 output buffers can each drive 8 LS 1TL inputs. They do, however, require external pull-ups to drive NMOS inputs, except when being used as the ADDRESSI DATA bus. Fetches from external Program Memory always use a 16bit address. Accesses to external Data Memory can use either a 16-bit address (MOVX @DPTR) or an 8-bit address (MOVX @Ri). 7.4.4 Read-Modlfy-Wrlte Feature Whenever a 16-bit address is used, the high byte of the address comes out on Port 2, where it is held for the duration o{ the read or write cycle. Note that the Port 2 drivers use the strong puUups during the entire time that they are emitting address bits that are 1s. This is during the execution of a MOVX @DPTR instruction. During this time the Port 2 latch (the Special Function Register) does not have to contain Is, and the contents of the Port 2 SFR are not modified. If the external memory cycle is not immediarely followed by another external memory cycle, the undisturbed contents of the Port 2 SFR will reappear in the next cycle. Some instructions that read a port read the latch and others read the pin. Which ones do which? The instructiolls that read the latch rather than the pin are the ones that read a value, possibly change it, and then rewrite it to the latch. These are called "rea!1-modify-write" instructions. The mstructions listed below are read-modify-write instructions. When the destination operand is a port, or a port bit, these instructions read the latch rather than the pin: ANL ORL XRL (logical AND. e.g., ANL P1,A) (logical OR, e.g., ORL P2,A) (logical EX-oR, •.g., XRL P3,A) JBC Oump If bit 1 and clear bit, e.g., JBC P1.1, LABEL) . CPL (complement bit, •• g., CPL P3.0) INC ,. (Increment, •.g., INC P2) DEC (decrement, •.g., DEC P2) DJNZ (decrement and Jump If not zero, e.g., DJNZ P3, LABEL) MOV PX.Y,C(move carry bit to bit Y of Port X) CLR PX.Y (clear bit Y of Port X) SET PX. Y (set bit Y of Port X) If an 8-bit address is ~ing used (MOVX @Ri), the contents of the Port 2 SFR remairt at the Port 2 pins throughout the external memory cycle. This will facilitate paging. = In any case, the low byte of the address is time-multiplexed with the data byte on Port O. The ADDRIDATA signal drives both FETs in the Port 0 output buffers. Thus, in this application the Port 0 pins are not open-drain outputs, and do not require external pull-ups. Signal ALE (address latch enable) should be used to capture the address byte into an externaflatch. The address byte is valid at the negative transition of ALE. Then, in write cycle, the data byte to be written appears on Port 0 just before WR is activated, and remains there until after WR is deactivated. In a read cycle, the incoming byte is accepted at Port 0 just before the read strobe is deactivated. a During any access to external memory, the CPU writeS OFFH to the. Port 0 latch (the Special Function Register), thus obliterating whatever information the Port 0 SFR may have been holding. It is not obvious that the last three instructions in this list are read-modify-write instructions, but they are. They read the port byte, all 8 bits, modify the addressed bit, then write the new byte back to the latch. External Program Memory is accessed under two conditions; The reason that read-modify-write instructions are directed 1) Whenever signal EA is active; or 2) Whenever the program counter (PC) contains a number that is larger than OFFFH (lFFFH for the 8052), to the· latch rather than the pin is to avoid a· possible misinterpretation of the 'voltage level at the pin. For example, a port bit might be .used to drive the base of a transistor. When a 1 is written to the bit, the transistor is This requires that the ROMless versions have EA wired 7-8 MCS(ftl·51 ARCHITECTURE low to enable the lower 4K (8K for the 8032) program bytes to be fetched from external memory. oscillator periods. A complete PSEN cycle, including activation and deactivation of ALE and PSEN, takes 6 oscillator periods. The execution sequence for these two types of read cycles are shown in Figure 7 -7 for comparison. When the CPU is executing out of external Program Memory, all 8 bits of Port 2 are dedicated to an output function and may not be used for general purpose 110. During external program fetches they output the high byte of the PC. During this time the Port 2 drivers use the strong pullups to emit PC bits that are Is. 7.5.2 ALE The main function of ALE is to provide a properly timed signal to latch the low byte of an address from PO to an external latch during fetches from external Program Memory. For that purpose ALE is activated twice every machine cycle. This activation takes place even when the cycle involves no external fetch. The only time an .ALE pulse doesn't come out is during ari access to external Data Memory. The first ALE of the second cycle of a MOVX instruction is missing (see Figure 7-7). Consequently, in any· system that does not use external Data Memory, ALE is activated at a constant rate of 116 the oscillalor frequency, and can be used for external clocking or timing purposes. 7.5.1 PSEN The read strobe for external fetches is PSEN. PSEN is not activated for internal fetches. When the CPU is accessing external Program Memory, PSEN is activated twice every cycle (except during a MOVX instruction) whether or not the byte fetched is actually needed for the current instruction. When PSEN is activated its timing is not the same as RD. A complete RD cycle, including activation and deactivation of ALE and RD, takes 12 ALE PSEN AD --------r------------------------+------------~----------,_---- (A) WITHOUT A MOVX. PO I , I I ,I I tPCLOUT VALID tPCLOUT VALID tPCLOUT VALID tPCLOUT VALID 55 I 56 TI Sl S2 ALE PSEN (8) RD -------+----------~--__, WITH A MOVX. PO - t PCL OUT VALID Figure 7-7. External Program Memory Execution 7-9 MCS®·51 ARCHITECTURE 7.5.3 Overlapping External Program and Data Memory Spaces In some applications it is desirable to execute a program from the same physical memory that is being used to store data. In the 8051, the external Program and Data Memory spaces can be combined by ANDingPSEN and RD. A positive-logic AND of these two signals produces an active-low read strobe that can be used for the combined E!!xsical memory. Since the PSEN cycle is faster than the RD cycle, the external memory needs to be fast enough to accommodate the PSEN cycle. 7.6 TIMER/COUNTERS The 8051 has two 16-bit timer!counter registers: Timer o and Timer 1. The 8052 has these two plus one more: Timer 2. All three can be configured to operate either as timers or event counters. In the "timer" function, the register is incremented every I11achine cycle. Thus, one can think of it as counting machine cycles. Since a machine cycle consists of 12 oscillator periods, the count rate is 1112 of the oscillator frequency. In the "counter" function, the register is incremented in response to a I-to-O transition at its corresponding external input pin, TO, TI or (in the 8052) T2. In this function, the external input is sampled during S5P2 of every machine cycle. When the samples ~how a high in one cycle and a low in the next cycle, the count is incremented. The new count value appears in the register during S3Pl of the cycle following the one in which the transition was detected. Since it takes 2 machine cycles (24 oscillator periods) to recognize a I-to-O transition, the maximum count rate is 1124 of the oscillator frequency. There are no restrictions on the duty cycle of the external input 'signal, but to ensure that a given level is sampled at least once before it changes, it should be held for at least one full machine cycle. In addition to the "timer" or "counter" selection, Timer o and Timer I have four operating modes from which to select. Timer 2, in the 8052, has three modes of operation: "capture," "auto-reload" and "baud rate generator." 7.6.1 Timer 0 and Timer 1 These timer!counters are present in both the 8051 and the 8052. The "timer" or "counter" function is selected by control bits CiT in the Special Function Register TMOD (Figure 6-8). These two timer!counters have four operating modes, which are selected by bit-pairs (Ml, MO) in TMOD. Modes 0, 1, and 2 are the same for both timer! counters. Mode 3 is different. The four operating modes are described below. MODE 0 Putting either Timer into mode 0 makes it look like an 8048 Timer, which is an 8-bit counter with a divide-by32 prescaler. Figure 7-9 shows the mode 0 operation as it applies to Timer 1. In this mode, the timer register is configured as a 13-bit register. As the count rolls over from all Is to all Os, it sets the timer interrupt flag TFI. The counted input is enabled to the Timer when TRI = 1 and either GATE = 0 orlNTl= 1. (Setting GATE = 1 allows the Timer to be controlled by external input INTI, to facilitate pulse width measurements.) TRI is a control bit in the Special Function Register TeON (Figure 7-10). GATE is in TMOD. (MSB) (LSB) ~'________~~ _________J~'________~~_________~/ TIMER 1 GATE CIT TIMER 0 Gating control When set....I!.!:!!!!Icounter "x" is enabled only while "INTx" pin is high and "TRx" control pin is sel When cleared Tlmer"x" Is enabled whenever "TRx" control bit is set Timer or Counter Selector Cleared for Timer operation (input from internal system clock). Set for Counter operation (input from "Tx" input pin). M1 o o MO o Operating Mode MC5-48 Timer "TLx"' serves a8 live-bit prescsler. 16 bit Timer/Counter "THx" and "TLx"are cascaded; there is no presealer a-bit auto-reload timer-counter "THx" holds a value,which is to be reloaded into "TLx" each time it overflows. (Timer 0) TLO is an eight-bit timer counter-c,ontrolled by the standard Timer 0 control bits THO is an eight-bit timer only controlled by Timer 1 control bit•. (Timer 1) Timer-counter 1 stopped. Figure 7·8. TMOD: TlmerfCo~nter 7-10 Mode Control Register MCS(8)·51 ARCHITECTURE The 13-bit register consists of all 8 bits of TH 1 and the lower 5 bits of TLi. The upper 3 bits of TLi are indetenninate and should be ingored. Setting the run flag (TR 1) does not clear the registers. MODE 2 Mode 2 configures the timer register.as an 8-bit counter (TL 1) with automatic reload, as shown in Figure 7-11. Overflow from TLI not only sets TFI, but also reloads TL 1 with the contents of TH I, which is preset by software. The reload leaves THI unchanged. Mode 0 operation is the same for Timer 0 as for Timer 1. Substitute TRO, TFO and INTO for the corresponding Timer 1 signals in Figure 7-9. There are two different GATE bits, one for Timer 1 (TMOD.7) and one for Timer o (TMOD.3). Mode 2 operation is the same for Timer/Counter O. MODE 1 MODE 3 Mode 1 is the same as Mode 0, except that the Timer register is being run with all 16 bits. Timer 1 in Mode 3 simply holds its count. The effect is the same as, setting TRI = O. clf = 0 INTERRUPT Tl PIN ______-'1 cif = 1 CONTROL - TR1------f GATE Figure 7-9. Timer/Counter 1 Mode 0: 13-bit Counter (MSB) TFl TRl TFO TRO Symbol Posilion TFl TCON.7 'Timer 1 overflow Flag. Sel by hardware on tlmerlcounter overflow. Cleared by hardware _ processor vector. to Interrupt routlns. TCON.6 Timer 1 Run conlrol bit. Set/cleared by software to tum timericounter on/olt. TCON.5 Timer 0 overflow, Flag. Set by hardware on Umer/counter overflow. Cleared by hardware when processor vectore to Interrupt routlns. TCON.4 Timer 0 Run conlrol bit. Set/cleared by software to lurn timer/counter on/off. TRl TFO TRO Name and Slgnlllcance IEl ITl lEO I (LSB) ITO I Symbol Posllion Name and Slgnllicance IEl tCON.3 ITl TCON.2 lEO TCON.l ItO TCON.O Interrupt 1 Edge lIag. Set by hardware when extemallnlerrupt edge detecled. Cleared when Interrupt processed. Inler~pt 1 Type conlrol bit. Set/cleared by soltware 10 specify lalling edgeflow level triggered externallnterrupta. Interrupt 0 Edge lIag. Set by hardware when external interrupt edge detected. Cleared when Interrupt processed. Interrupt 0 Type control bit. Set/cleared by soltware to specify lalling edgeflow level Irlggered external interrupts. Figure 7-10. TCON: Timer/Counter Control Register 7-11 MCS~·51 ARCHITECTURE turned on and off by switching it out of and into its own Mode 3, or can still be used by the serial port as a baud rate generator, or in fact, in any application not requiring an interrupt. Timer 0 in Mode 3 establishes TLO and THO as two separate counters. The logic for Mode 3 on Timer 0 is shown in Figure 7-12. TLO uses the Timer 0 control bits: cif, GATE, TRO, INTO, and TFO. THO is locked into a timer function (counting machine cycles) and takes over the use of TRI and TFI from Timer I. Thus, T.HO now controls the "Timer I" interrupt. 7.6.2 Timer 2 Timer 2 is a 16-bit timer/counter which is present only in the 8052. Like Timers 0 and I, it can operate either as a timer or as an event counter. This is selected by bit ClT2 in the Special Function Register T2CON (Figure 7-13). It has three operating modes: "capture;" "auto- Mode 3 is provided for applications requiring an extra 8bit timer or counter. With Timer 0 in Mode 3, an 8051 can look like it has three timer/counters, and an 8052, lik~ it has four. When Timer 0 is in Mode 3, Timer I can be ciT =0 T1 PIN ______.J INTERRUPT CiT = 1 TFI1------I GATE INTO PIN Figure 7-11. Timer/Counter 1 Mode 2: 8·bit Auto·reload osc ~B- 1/1210SC 1/12 IOSC - - - - - - - - , 1 - - - INTERRUPT TO PIN - - - - - - - - ' CONTROL TRO------I GATE t. 1/1210SC----~-------I........ l TR1 1 .. I THO (8 bl,-) H L. r-- TF1 .._ _.... _ ____________~CONTROL - Figure 7·12. Timer/Counter 0 Mode 3: Two 8·bit Counters 7-12 INTERRUPT MCSIRl-51 ARCHITECTURE (MSB) (LSB) TF2 EXF2 Symbol ' Pooltton RCLK TCLK EXEN2 TR2 C/T2 CP/RL2 Name and Significance TF2 T2CON.7 Timer 2 overflow flag set by a Timer 2 overflow and must be cleared by software. TF2 will not be aat when either RCLK = 1 or TCLK = 1. EXF2 T2CON.6 Timer 2 external flag let when either a capture or reload Is caused by a negative tranlltlon on T2 EX and EXEN2 = 1. When Timer 2 Interrupt Is enabled, EXF2 = 1 will cause the CPU to vector to the Timer 2 Interrupt routine. EXF2 mUlt be cleared by IOltware. RCLK T2CON.S Receive clock Ilag. When .et, causes the lerial port to use Timer 2 overflow pull.llor It. receive clock In model 1 and 3. RCLK =0 causes Timer 1 overflow to be used lor the receive clock. TCLK T2CON.4 Transmit clock flag. When aat, cause. the ,erial port to use Timer 2 overflow pulses lor Its transmit clock In modes 1 and 3. TCLK = 0 causes Time, 1 overflows to be used lor the t,anlmlt clock. EXEN2 T2CON.3 Timer 2 external enable Ilag. When ,et, aliowl a capture or reload to occur a, e result ola negative transition on T2EX II Timer 21s not being usad to clock the sarlal port. EXEN2 = 0 caus.. Timer 2 to Ignore events at T2EX. TR2 T2CON.2 Start/stop control lor Timer 2. A logic 1 starts the timer. cif2 T2CON.1 Timer or counter select. (Timer 2) 0= Intemal timer (OSC/12) 1 = External event counter (Ialling edge triggered). CP/m T2CON.O Capture/Reload Ilag. When set, captures will occur on negative transitions at T2EX if EXEN2 =1. When cleared, auto reloads will occur either with Timer 2 overflows or negative tranllllons at T2EX when EXEN2 =1. When either RCLK = 1 or TCLK = 1, this bit is Ignored and the timer Is lorced to auto-reload on Timer 2 overflow. Figure 7-13. T2CON: Timer/Counter 2 Control Register In the auto-reload mode there are again two options, which are selected by bit EXEN2 in T2CON. If EXEN2 = 0, then when Timer 2 rolls over it not only sets TF2 but also causes the Timer 2 registers to be reloaded with the 16bit value in registers RCAP2L and RCAP2H, Which are preset by software. If EXEN2 = 1, then Timer 2 still does the above, but with the added feature that a I-to-O transition at external i1iput T2EX will also trigger the 16bit reload and set EXF2. load" and "baud rate generator," which are selected by ,bits in T2CON as shown in Table 2. Table 2. Timer 2 Operating Modes RCLK+TCLK 0 0 1 X cpiiK2 0 1 X X TR2 I 1 1 0 MODe 16-bit auto-reload 16-bit capture baud rate generator (oft) The auto-reload mode is illustrated in Figure 7-15. The baud rate generator mode is selected by RCLK = 1 andlor TCLK = 1. It will be described in conjunction With the serial port. In the captllre mode there are two options which are selected by bit EXEN2 in T2CON. If EXEN2 = 0, then Timer 2 is a 16-bit timer or counter which upon overflowing sets bit TF2, the Timer 2 overflow bit, which can be used to generate an interrupt. If EXEN2 = I, then Timer 2 still does the above, but with the added feature that a I-to-O transition at external input T2EX causes the current value in the Timer 2 registers, TL2 and TH2, to be captured into registers RCAP2L and RCAP2H,respectively. (RCAP2L and RCAP2H are new Special Function Registers in the 8052.) In addition, the transition at T2EX causes bit EXF2 in T2CON to be set, and EXF2, like TF2, can generate an interrupt. 7.7 SERIAL INTERFACE The serial port is full duplex, meaning it can transmit and receive simUltaneously. It is also receive-buffered, meaning it can commence teception of a second byte before a previously received byte has been read from the receive register. (However, if the first byte still hasn't been read by the time reception of the second byte is complete, one of the bytes will be lost). The serial port receive and transmit registers are both accessed at Special Function Register SBUF. Writing to SBUF lo~ds the transmit reg- The capture mode is illustrated in Figure 7-14. 7-13 MCS®-5t ARCHITECTURE TIMER 2 INTERRUPT EXEN2 Figure 7-14. Timer 2 In Capture Mode 7.7.1 Multiprocessor Communications ister, and reading SBUF accesses a physically separate receive register." , Modes 2 and 3 have a special provision for multiprocessor communications. In these modes, 9,data bits are received. The 9th one goes into RB8. Then comes a stop bit. The port can be programmed such that when the stop bit is received, the serial port interrupt will be activated only If RB8 = 1. This feature is enabled by setting bit SM2 in SeON. A way to use this feature in multiprocessor systems is as follows. The serial port can operate in 4 modes: Mode 0: Serial data enters and exits through RXD. TXD outputs the shift clock. 8 bits are transmitted/received: 8 data bits (LSB first). The baud rate is fixed at 1112 the oscillator frequency. Mode 1: 10 bits aretransn1itted (through TXD) or received (through RXD): a start bit (0), 8 data bits (LSB first), and a stop bit (1). On receive, the stop pit goes into RB8 in Special Function Register SCON. The baud rate is variable. When the master processor wants to transmit a block of data to one of several slaves, it first sends out an address byte which identifies t1"\e target slave. An address byte differs from a data byte in that the 9th bit is I in an address byte and 0 in a data byte.' With SM2 = 1, no slave will be interrupted by a data byte. An address byte, however, will interrupt all slaves, so that each slave can examine. the received byte and see, if it is being addressed. The' addressed. slave will clear its SM2 bit and prepare to receive the data bytes that will be coming. The slaves that weren't being addressed ,leave their SM2s set and go on about their business, ignoring the coming data bytes. ' are tr~nsmitted (tIirough TXD) or received Mode 2: 11 bits (through RXD): a start bit (0), 8 data bits (LSB first), a programmable 9th data bit, and a stop bit (I). On transmit, the 9th data bit CI:B8 in SeON) can be assigned the value of 0 or i. Or, for example, the parity bit (P, in the PSW) could be moved into TB8. On receive, the 9th data bit goes into RB8 in Special Function Register secm, while ihe stop bit is ignored. The baud rate is prograriunable to either 1132 or 1164 the oscillator frequency. SM2 has no,effect in Mode 0, and in Mode I can be used to check the validity of the stop bit. In a Mode I reception, if.SM2=' 1, the receive interrupt will not be activated unless a valid stop b,it, is .received .. Mode 3: 11 bits are transmitted (tfirough TXD) d~ ~eceived (through RXD): a start bit (0), 8 data bits (LSB first), a programmable 9th'data bit and a stop bit (1). In fact, Mode 3 is the same as MOde 2 In all 'respects except the baud rate. The baud rate in Mode 3 is variable: 7.7.2 Serial Port Control Register' The'serial.port' control 'and istatus register is, the Special Function Register SeON,. shown in Figure 7-16. This register contains not only the mode selectiop bits, but also the 9th data bit for transmit and receive (TB8 and RB8), and the serial port interrupt ijitsf'fl and· RIJ . In 'all four modes; 'transmission is'initiated by' any instruction that .uses SBUF as a destination register. Reception is initiated in Mode 0 by the condition RI = 0 and REN ~ 'I. Reception is initiated in the other modes by the incoming start bit if REN = L ' . .7-14 MCS®-51 ARCHITECTURE T2 PIN _ _ _ _....Jt em =1 - TIMER 2 INTERRUPT T2EX PIN EXEN2 Figure 7..15. Timer 2 in Auto-Reload Mode (MSB) I ~ SMO (LSB) SMI SM2 REN TB8 where SMO, SMI specify the serial port mode, as follows: SMO 0 0 1 Descripllon Baud Rate 0 1 2 shift register 8·bilUART 9-bitUART losc.l12 variable losc./64 or fosc./32 3 9-blt UART variable SMI Mode 0 1 0 • 5M2 enables the mulliprocessor communication feature in modes 2 and 3. In mode 2 or 3, if SM2 is set to 1 then RI will not be activated if the received 9th data bit (RB8) Is O. In mode 1, if SM2 = 1 then RI will not be aCllvated if a valid stop bit was not received. In mode 0, 5M2 shouldbeO. oREN enables serial reception. Set by software to enable reception. Clear by software to disable reception. RB8 TI I RI - TB8 is the 9th data bit that will be transmitted in modes 2 and 3. Set or clear by sottware as desired. o RB8 in modes 2 and 3, is the 9th data bit that was received. In mode 1, If SM2 = 0, RB8 is the stop bit that was received. In mode 0, RB8 is not used. o TI Is transmit interrupt flag. Set by hardware at the end of the 8th bit time in mode 0, or at the beginning of the stop bit In the other modes, in any serial transmission. Must.be cleared by soltware. o RI is receive interrupt flag. Set by hardware at the end of the 8th bit time In mode 0, or haltway through the stop bit time In the other modes, in any serial reception (ex~ cept see SM2). Must be cleared by sottware. Figure 7-16. SCON: Serial Port Control Register 7.7.3 Baud Rates The baud rate in Mode 2 depends on the value of bit SMOD in Special Function Register PCON. If SMOD = 0 (which is its value on reset), the baud rate is 1164 the oscillator frequency. If SMOD = 1, the baud rate is 1132 the oscillator frequency. The baud rate in Mode 0 is fixed: Mode 0 Baud Rate Oscillator Frequency 12 Mode 2 Baud Rate = 7-15 2SMOD ~ ' . x (Oscillator Frequency) MCS®·51 ARCHITECTURE In the 8051, the baud rates in Modes 1 and 3 are determined by the Timer 1 overflow rate. In the 8052, these baud rates can be determined by Timer I, or by Timer 2, or by both (one for transmit and the other for receive). = oooIB), and using the Timer 1 interrupt to do a 16-bit software reload. Figure 7-17 lists various .commonly used bauq rates and how they can be obtained from Timer I. Using Timer 1 to Generate Baud Rates When Timer 1 is used as the baud rate generator, the baud rates in Modes 1 and 3 ~e determined by the Timer 1 overflow rate and the value of SMOD as follows: BAUD RATE fosc SMOD CIT MODE 0 MAX: lMHZ MODE 2 M'AX: 375K MODES 1,3: 62.5K 12MHZ 12MHZ 12MHZ 11.059 MHZ 11.059 MHZ 11.059 Mtfz 11.059 MHZ 11.059 MHZ 11.986 MHZ 6MHZ 12MHZ X 1 1 1 0 0 0 0 0 0 0 X X 0 0 0 0 0 0 0 0 0 19.2K 9.6K 4.8K 2.4K 1.2K 137.5 110 110 Modes I, 3 2SMOD Baud Rate = 32 x (Timer 1 Overflow Rate) The Timer 1 interrupt should be disabled in this application. The Timer itself can be configured for either "timer" or "counterHoperation, and in any of its 3 running modes. In the most typical applications, it is configured for "timer" operation, in the auto-reload mode (high nibble ofTMOD = ooIOB). In that case, the baud rate is given by the formula 2SMOD Modes I, 3 Baud Rate = 32 x TIMER 1 MODE Ri~~~D X X 2 2 2 2 2 2 2 2 1 X X FFH FDH FDH FAH F4H E8H lDH 72H FEEBH Figure 7-17. Timer 1 Generated Commonly Used Baud Rates Using Timer 2 to Generate Baud Rates Oscillator Frequency 12x[256-(THI)] In the 8052, Timer 2 is selected as the baud rate generator by setting TCLK and/or RCLK in T2CON (Figure 7-13). Note then the baud rates for transmit and receive can be simultaneously different. Setting RCLK and/or TCLK puts Timer 2 into its baud rate generator mode, as shown in Figure 7-18. ' One can achieve very low baud rates with Timer 1 by leaving the Timer 1 interrupt enabled, and configuring the Timer to run as a 16-bit timer (high nibble of TMOD TIM-ER 1 OVERFLOW NOTE: OSC. FREQ. IS DIVIDED BY 2, NOT 12. RX CLOCK TX CLOCK "TIMER 2" INTERRUPT T2EX PIN EXEN2 L NOTE AVAILABILITY OF ADDITIONAL EXTERNAL INTERRUPT Figure 7-18. Timer 2 In Baud Rate Generator Mode , 7-16 MCS~·51 ARCHITECTURE' The baud rate generator mode is similar to the auto-reload mode, in that a rollover in TH2 causes the Timer 2 registers to be reloaded with the 16-bit value in registers RCAP2H and RCAP2L, which are preset by software. Transmission is initiated by any instruction that uses SBUF as a destination register. The "write to SBVF" signal at S6P2 also loads a I into the 9th bit position of the transmit shift register and tells the TX Control block to commence a transmission. The internal timing is such that one full machine cycle will elapse between "write to SBVF," and activation of SEND. Now, the baud rates in Modes I and 3 are determined by Timer 2's overflow rate as follows: SEND enables the output of the shift register to the alttlrnate output function line of P3.0, and also enables SHIFT CLOCK to the alternate output function line of P3.1. SHIFT CLOCK is low during S3, S4, and S5 of every machine cycle, and high during S6, SI and S2. At S6P2 of e~ery machine cycle in which SEND is active, the contents of the transmit shift register are shifted to the right one position. . Timer 2 Overflow Rate Modes I, 3 Baud Rate = 16 ,The Timer can be configured for either "timer" or· "counter" operation. In the most typical applications, it is configured for "timer" operation (C/T2 = 0). "Timer" operation is a little different for Timer 2 when it's being used as a baud rate generator. Normally asa timer it would increment every machine cycle (thUS at 1112 the oscillator frequency). As a baud rate generator, however, it increments every state time (thUS at 112 the· oscillator frequency). In that case the baud rate is given by the formula Modes I, 3 Oscillator Frequency Baud Rate = - - - - - - - - - ' - - - " - - - 32x[65536 - (RCAP2H, RCAP2L)J As data bits shift out to the right, zeros come in from the left. When the MSB of the data byte is at the output . position of the shift register, then the I that was initially loaded into the 9th position, is just to the left of the MSB, and all positions to the left of that contain zeros. This condition flags the TX Control block to do one last shift and then deactivate SEND and set Tl. Both of these actions occur at SIPI ofthe 10th machine cycle after "write to SBVE" where (RCAP2H, RCAP2L) is the content of RCAP2H and RCAP2L taken as a 16-bit unsigned integer. Timer 2 as a baud rate generator is shown in Figure 7-18. This Figure is valid only if RCLK + TCLK = I in T2tON. Note that a rollover in TH2 does not set TEi, and will not generate an interrupt. Therefore, the Timer 2 interrupt does not have to be disabled when Timer 2 is in the baud rate generator mode. Note too, that if EXEN2 is set', a I-to-O transition in T2EX will set EXF2 but will not cause a reload from (RCAP2H, RCAP2L) to (TH2, TL2). Thus when Timer 2 is in use as a' baud rate generator, T2EX can be used as an extra external interrupt, if desired. It should be noted that when Timer 2 is running (TR2 = I) in "timer" function in the baud rate generator mode, one should not try to read or write TH2 or TL2. Under these conditions the Timer is being incremented every state time, and the results of a read or write may not be accurate. The RCAP registers may be read, but shouldn't be written to, because a write might overlap a reload and cause write and/or reload errors, Tum the Timer off (clear TR2) before accessing the Timer 2 or RCAP registers, in this case. 7.7.4 More About Mode 0 Serial data enters and exits through RXD. TXD outputs the shift clock, 8 bits are transmitted/received: 8 data bits (LSB first). The baud rate is fixed at 1112 the oscillator frequency. Figure 7-19 shows a simplified functional diagram of the serial port in mode 0, and associated timing. Reception is initiated by the condition REN = I and RI = O. At S6P2 of the next machine cycle, the RX Control unit write.s. the bits 11111110 to the receive shift register, and in the next clock phase activates RECEIVE, RECEIVE enables SHIFT CLOCK to the alternate output function line of P3.I. SHIFT CLOCK makes transitions at'S3PI and S6PI of every machine cycle. At S6P2 of every machine cycle in which RECEIVE is active, the contents of the receive shift register are shifted to the left one position. The value that comes in from the right is the value that was sampled at the P3.0 pin at S5P2 of the same machine cycle. As data bits come in from the right, Is shift out to the left. When the 0 that was initially loaded into the rightmost position arrives at the leftmost position in the shift register, it flags the RX Control block to do one last shift and load SBVE At SIPI of the 10th machine cycle after the write to SCaN that cleared RI, RECEIVE is cleared and RI is set. 7.7.5 More About Mode 1 Ten bits are transmitted (through TXD) , or received (through RXD): a start bit (0), 8 data bits (LSB first), and a stop bit (I). On receive, the stop bit goes into RB8 in SCaN. In the 8051 the baud rate is determined by the Timer I overflow rate. In the 8052 it is determined either by the Timer I overflow rate, or the Timer 2 overflow tate, or both (one for transmit and the other for receive). Figure 7-20 shows a simplified functional diagram of the serial port in Mode I, and associated timings for transmit and receive. 7-17 MCSIBl-51 ARCHITECTURE WRITE TO --.---wI'----' SBUF r---~~----~-------{~ RXD P3.0ALT OUTPUT FUNCTION S6-...._---.. SERIAL PORT INTERRUPT TXD P31 ALT OUTPUT FUNCTION ' - - - - _.. RXCLOCK RI RX CONTROL REN SHIFT ........_ _.. START Ai - - I .oJ L----+-i--i-.;--T-ir-i...,..-J r-.l-l....l...t...I....l-,.--.:~ ____ F;!XO P3.0 ALT INPUT FUNCTION READ SBUF 51521>3'>4 <;5561 ;,! 52Sj 54 ~~'j61 51 ~2 SJS4 S', s61 0.1 ~2 51S4 S~<;b I 51 52 Sl~" ""'>61 51 ~2 Sl S~ 5'>561 51 ~2S1 54 S~S615' ALE ~OSBUF SENOi:S6P2 . I SHIFT TRANSMIT RXD (DATA OUT) \ TXD(SHIFTCLOCK) t l T~I~_______ S3_P_1_S_6_~____________________________________________~,----- --11 WRITE TO SCON (CLEAR RI) L-R:~~~====Jr====================================================~'---- I!ECEIV.E SHIFT RXD(DATAIN).--~~~-~~--~~--n~--~~--n~--~~-~~---- TXD (SHIFT CLOCK) Figure 7-19. Serial Port Mode 0 7-18 RECEIVE MCS®·51. ARCHITECTURE TIMER 1 OVERFLOW TIMER2 OVERFLOW WRITE __ --~r---===J~~~~--~~:-----~---f--'- ~~' SBUF TO . TCLK- TXD TXCONTROL TXCLOCK TI RI SEND LOAD SBUF SHIFT 1--------. RXD TRANSMIT ~16RESET 00 ~ ______________________ D7 ~ ________________________________ Figure 7-20. Serial Port Mode 1 TCLK,RCLK, and Timer 2 are present In the 805218032 only. 7·19 ( STOP BIT ~r---- IIIICS®·51 ARCHITECTUflE 'are met or not, the unit goes 'back to looking for a I-tdo transition in RXD. Transmission is initiated by any instrUction that uses SBUF as a destination register. The "write to SBUF" signal also loads a I into the 9th bit position of the transmit shift register and flags the TX Control unit that a transmission is requested. Transmission actually commences at SIPI of the machine cycle following the next rollover in the divide-by-16 counter. (Thus, the bit times aresynchronized to the divide-by-16 c01,lnter, not to the "write to SBUF" signal). 7.7.6 More About Modes 2 and 3 Eleven bits are transmitted (through TXD), or. received (through RXD): a start bit (0), S data bits (LSB ,first), a programmable 9th data bit, and a stop bit (1). On transmit, the 9th data bit (TBS) can be assigned the value of 0 or 1. On receive, the 9th data bit goes into RBS in SCON. The baud rate is programmable to either 1132 or 1164 the oscillator frequency in mode 2. Mode 3 may have a var, iable baud rate generated from either Timer I or 2 depending on the state of TCLK and RCLK. The transmission begins with activation of SEND, which puts the start bit at TXD. One bit time later, DATA is activated, which enables the output bit of the transmit shift register to TXD. The first shift pulse occurs one bit time after that. As data bits shift out to the right, zeros are clocked in from the left. When the MSB of the data byte is at the output position of the shift register, then the I that was initially loaded into the 9th position is just to the left of the MSB, and all positions to the left of that contain zeroes. This condition flags the TX Control unit to do one last shift and then deactivate SEND and set TI. This occurs at the 10th divide-by-16 rollover after "write to SBUF." Figures 7-21 A and B show a functional diagram of the 'serial port in modes 2 and 3. The receive portion is exactly the Same as in mode I. The transmit portion differs from mode I only in the 9th bit of the transmit shift register. Transmission is initiated by any instruction that uses SBUF as a destination register: The "write to SBUF" signal also loads TBS into the 9th bit position of the transmit shift register and flags the TX Control unit that a transmissiol1 is requested. Transmission commences at S IPI of the machine cycle following the next rollover in the divideby-16 counter. (Thus, the bit times are synchronized to the divide-by-16 counter, not to the "write to SBUF" signal.) Reception is initiated by a detected I-to-O'transition at RXD. For this purpose RXD is sampled at a rate of 16 times whatever baud rate has been established. When a transition is detected, the divide-by-16 counter is immediately reset, and I FFH is written into the input shift register. Resetting the divide-by-16 counter aligns its rollovers with the boundaries of the incoming bit times. The 16 states of the counter divide each bit time into 16ths. At the 7th,.Sth, and 9th counter states of each bit time, the bit detector samples the value of RXD. The value accepted is the value that was seen in at least 2 of the 3 samples. This is done for noise rejection. If the value ' accepted during the first bit time is not 0, the receive circuits are reset and the unit goes back to looking for another I-to-O transition. This is to provide rejection of false start bits. If the start bit proves valid, it is shifted into the input shift register, and reception of the rest of the frame will proceed. As data bits come in from the right, Is shift out to the left. When the start bit arrives at the leftmost position in the shift register, (which in mode I is a 9-bit register), it flags the RX Control block to do one last shift, load SBUF and RBS, and set RI. The signal to load SBUF and RBS, and to set RI, will be generated if, and only if, the following conditions are met at the time the final shift pulse is generated .. The transmission begins with activation of SEND, which puts the start bit at TXD. One bit time later, DATA is activated, which enables the output bit of the transmit shift register to TXD. The first shift pulse occurs one bit time after that. The first shift clocks a I (the stop bit) into the 9th bit position of the shift register. Thereafter, only zeroes are clocked in. Thus, as data bits shift out to the right, zeroes are clocked in from the left. When TBS is at the output position of the shift register, then the stop bit is just to the left of TBS, and all positions to the left of thatcontain zeroes. This condition flags the TX Control unit to do one last shift and then deactivate SEND and set n. This occurs at the 11th divide-by-16rollover after "write to SBUF." Reception is initiated by a det~cted I-to-O transition at, RXD. For this purpose RXD is sampled at a rate of 16 times whatever baud rate has been established. When a transition is detected, the divide-by-16 counter is immediately reset, and'IFFH is written to the input shift register. I) RI = 0, and 2) Either SM2 = 0, or the received stop bit =' I If either of these two conditions is not met, the received frame is irretrievably lost. If both conditions are met, the stop bit goes into RBS, the S data bits go into SBUF, and . RI is activated. At this time, whether the above conditions 7-20 At the 7th, Sth and 9th counter states of each bit time, the bit detector samples the value of RXD. The value accepted is the value that was seen in at least 2 of the 3 samples. If the value accepted during the first bit time is not 0, the receive circuits are reset and the unit goes back to looking for another I-to-O transition. If the start bit proves valid, it is shifted into the input shift register, and reception of the rest of the, frame will proceed. MCS®-51 ARCHITECTURE WRITE TO --~~----~~~---' S~UF r--......:a"---L-_J-..... TXD PHASE2CLOCK (Y" fose) MODE2 SEND SMOD =, SMOD=O SERIAL PORT INTERRUPT (SMOD IS PCON 7) L.._------J LOAD SBUF RXD TX jCLOCKj ~.WRI~T~E~T~O~S~~B~U~F--JL_~L_ _JL_~l~_JL_~IL_~L----.JIL~~L___IL___ - - - 1 SEND DATA L S1P1 I TRANSMIT .I STOP BIT GEN CL'6XCK RECEIVE STOP BIT I -16 RESET DO RXD BIT DETECTORI STA.T BIT { SAMPLE TIMES SHIFT· - L_ _IL_ _IL_--.JL~--.JL_--.JIL_-..-JI_ _-..-JI_ _~L_ _~_ __ ________________________________________________ ·~R~I ~r----- Figure 7·21A. Serial Port Mode 2 7·21 MCS®-S1 ARCHITECTURE TIMER1 OVERFLOW TIMER2 OVERFLOW WRITE __ --~r---===J~~~~--~~:-----~~-{--,- ~~, TO SBUF TXD TXCONTROL TCLK - TXCLOCK TI RI SEND LOAD SBUF SHIFT 1--------, RXD TX _~LOC~~~!~=-~L__~L__~L__~IL-__JL-__~L__~L__~L__~IL-__IL-___ _ 8 WRITE TO SBUF - - - - - , SEND DATA C S1P1 I TRANSMIT STOP BIT STOP BIT GEN --------,':==________________________________--' ~T RECEIVE RXD BIT DETECTORI START BIT , DO 01 SAMPLE TIMES ~ __~I____~L____JL-_ _~l____~L____IL-__-"l____~L__~IL-____ SHIFT ____________________________________________________________________ -"r----- ~R~I Figu~e 7.21 B. Serial Port Mode 3 TCLK, RCLK, and Timer 2 are present in the 8052/8032 only. ·7-22 MCS®;;S1,'ARCHITECTURE As ,data bits come'in from the right, 1s shift out to the left. When the start bit arrives at the leftmost posiUon in the shift register (which in modes 2 and 3 is a 9-bit reg, ister),' it flags the RX Control block to do one last shift, , load SBUFand RBS', and set RI, The signal to 10ad'SBUF and RB8, anti to set RI, wiU be generated if, imd only,if, the following conditions are met at' the time the final shift pulse is generated: 1) RI'= b,'and ' 2) Either SM2 "±:! 0 or the received 9th d~ta bit = 1 ITO and ITI in Register TCON. The flags that actually generate these interrUpts are bits lEO and lEI in TCON. When an external interrupt is generated, the flag that generated it is cleared by the hardware when the service routine is vectored to only if the interrupt was transitionactivated. If the interrupt was level-activated, then the external requesting'source is what controls the request flag, rather than the on-chip hardware, The Timer 0 and Timer 1 Interrupts are generated by TFO and TFI, which are set by a rollover in their respective timer/counter registers (except see Section 7. 6.trfor Timer o in mode 3): When a timer interrupt is generated, the flag that genenited it'is cleared by the on-chip hardware when the service routine is vectored to. If either of these conditions is not met, the received frame is irretrievably lost, and RI is not set, IF both conditions are met, the received 9th data bit goes into RB8, and the / first 8 data bits go into SBUF, One bit time later, whether ,the above, conditions were met or not" the unit goes back to loqking for a I-to-O transjt,ion at the RXD input. The Serial Pon Interrupt is generated by the .logical OR of RI and TI. Neither of,these flags is cleared by hardware when the service routine is vectored to. In fact, the service routine will normally have to determine whether it .was RI or TI that generated the interrupt, and the, bit will have to be cleared in software. Note that the value of the received stop bit is. irrelevant to SBUF, RB8, or IH. 7.8 INTERRUPTS In .!he 8052, the Timer 2 Interrupt is generated by the logical OR of TF2 and EXF2. Neither of these flags is tle,ared ~y Iwrdware 'Yhen the serv~e routine is vectored roo In liact, , the service ,routine may have to determine ~hether it was TF2 or EXF2 thargenerated the interrupt, imd the ,bit will have to be cleared in software. •The 805 I provides 5 inteITupt sources, The 8052 provides , '6. These are show'n in'FigUre 7-22/ ":' . , The Exttrnal Interrupts'fNTO and INTI can each be eiti1er level-activated or transition-activated, depending on bits All of the bits that generat~ interrupts can be set or cleared by softJiVare:.with the,silJne r~su~~ as though it had been set or cleared by hardware. That is, interrupts can be generated or pending interrupts can be canceled in software .. (MSB) (LSB) 1EA I xl ml ES 1En 1EX1 1ETO 1EXO I' SYlrbo;>1 EA TFO-~~~~~~~~-~", INTERRUPT SOURCES TF1----------. Figure 7-22. MCS-S1 Int'~ruptSoure""', IE.7 ET2 IE.6 IE.5 ES IE.4 ET1 IE'.3 EX1 ' TF2~ EXF2~ Position , IE.2 ETO IE.1 EXO IE.O Function disables ali Interrupts. If EA = 0, no Interrupt will be acknowledged. IlEA = 1, each Interrupt source Is Individually enabled or disabled by setting or clearing its enable bit. reserved enables or disables the Tln"ir 2 overflow' or capture Interrupt. II ET2 = 0, the Timer 2 Interrupt Is dis,abled. enables or disables the Serial Port Interrupt. lIES" 0, t~e Serial Port Interrupt Is , disabled. enables or disables the Timer 1 Overllow , interrupt. II En = 0, the Tlm.r 1 Interrupt ' is disabled. enables or disables External Interrupt 1. II EX1 = 0, Extetnal, Interrupt 1 Is dl,sabled. enables or disables the Timer 0 Overflow Interrupt. II ETO = 0, the Timer 0 Interrupt Is disabled. enables or disables External Interrupt O. II EXO = 0, External Interrupt 0 I. disabled. , Flgllre 7-23", IE: Interrupt Enable Register 7-23 MCS®-51 ARCHITECTURE Each of these interrupt sources can be individually enabled or disabled by slltting or clearing a bit in Special Function Register IE (Figure 7-23). Note that IE contains also a global disable bit, EA, which disables all interrupts at once. 7.8.1 Priority Level Structure If two requests of different priority levels are received simultaneously, the request of higher priority level is serviced. Ifrequests of the same priority level are received siplUltaneously,. an internal polling sequence determines which request is serviced. Thus within each priority level there is a second priority structure determined by the polling sequence, as follows: Each interrupt source can also be individually programmed to' one of two priority levels by setting or clearing a bit in Special Function Register IP (Figure 7-24). A lowpriority interrupt can itself be interrupted by a high-priority interrupt, but not by another low-priority interrupt. A high-prillrity. interrupt can't be interrupted by any other interrupt source. (MSB) 2. 3. 4. 5. 6. Position IP.7 FuncUon reserved IP.6 reserved PT2 IP.5 defines the Timer 2 Int,rrupt priority level. PT2 =1 programs It to the higher priority level. PS IP.4 defines the Serial Port In,..rupt priority level. PS =1 program. It to the higher priority level. PT1 IP.3 defines the Timer 1 Interrupt priority . level. PT1 =1 programs It to the higher priority level. PX1 IP.2 defines the External Interrupt 1 priority level. PX1 =1 programs It to the higher priority level. PTO IP.1 defines the Timer 0 Interrupt priority level. PTO =1 programs It to the higher priority level. PXO IP.O defines the External Interrupt 0 priority level. PXO =1 programs It to the higher priority level. Figure 7-24. IP: Interrupt Priority Register S6 PRIORITY WITHIN LEVEL lEO TFO IE1 TFl (hlgheat) AI+TI TF2 + EXF2 (low••') 7.8.2 How Interrupts Are Handled The interrupt flags are sampled at S5P2 of every machine cycle. The samples are polled during the following machine cycle. If one of the flags was in a set condition at S5P2 of 'the preceding cycle, the polling cycle will find it and the interrupt syste~ will generate an LCALL to the appropriate service routine, provided this hardware-generated LCALL is not blocked by any of the following conditions: I. An interrupt of equal or higher priori,ty level is already in progress. 2. The current (polling) cycle is not the final cycle in the execution of ,the instruction in progress. 3. The instruction in progress is RETI or any access to the IE or IP registers. Any of these three conditions will block the generation of the LCALL to the interrupt service routine. Condition -2 ensUf!lS that the instruction in progress will be completed ......~·---C1-_ .. -tI_.- - C 2 - -....-I..... ---C3 ISSP21 SOURCE Note that the "priority within level" structure is only used to resolve simultaneous requests of the same priority level. (LSB) I X I X I PT2lpsl PTl I pXll PTO I PXO I Symbol 1. • I .. C4--".....1 ••- - C 5 - -.. •.. I ........ ~'\-,--..L.-~1'\r--..L-.--....,1l'..~- - - ' - - - - - h1 INTERRUPT GOES ACTIVE INTERRUPT LATCHED LONG CALL TO INTERRUPT VECTOR ADDRESS INTERRUPTS ARE POLLED This is the last"t possible "sponse when C2 is the final cycle 01 an Instruction other than RETI or an access to IE or IP. Figure 7-25. Interrupt Response Timing Diagram 7-24 INTERRUPT ROUTINE MCS®-S1 ARCHITECTURE before vectoring to any service routine. Condition 3 ensures that if the instruction in progress is RETI or any access to IE or IP, then at least one more instruction will be executed before any interrupt is vectored to. The polling cycle is repeated with each machine cycle, and the values polled are the values that were present at S5P2 of the previous machine cycle. Note then that if an interrupt flag is active but not being responded to for one of the above conditions, if the flag is not still active wh,en the blocking condition is removed, the denied interrupt will not be serviced. In other words, the fact that the interrupt flag was once active but not serviced is not rem~mbered. Every polling cycle is new. 7.8.3 External Interrupts The external sources can be programmed to be levelactivated or transition-activated by setting or clearing bit IT! or ITO in Register TCON. If ITx = 0, external interrupt x is triggered by a detected low at the INTx pin. If ITx = I, external interrupt x is edge-triggered. In this mode if successive samples of the INTx pin show a high in one cycle and a low in the next cycle, interrupt request flag lEx in TCON is set. Flag bit lEx then requests the interrupt. Since the external interrupt pins are sampled once each machine cycle, an input high or low should hold for at least 12 oscillatorperiods ..to ensure sampling. If the external interrupt is transition-activated, the external source has to hold the request pin high for at least one cycle, and then hold it low for at least one cycle to ensure that the transition is seen so that interrupt request flag lEx will be set. lEx will be automatically cleared by the CPU when the service routine is called. The polling cycle/LCALL sequence is illustrated in Figure 7-25. Note that if an interrupt of higher priority level goes active prior to S5P2 of the machine cycle labeled C3 in Figure 7-25, then in accordance with the above rules it will be vectored to during C5 and C6, without any instruction of the lower priority routine having been executed. If the external interrupt is level-activated, the external source has to hold the request active until the requested interrupt is actually generated. Then it has to deactivate the request before the interrupt service routine is completed, or else another interrupt will be generated. Thus the processor acknowledges an interrupt request by executing a hardware-generated LCALL to the appropriate servicing routine. In some cases it also clears the flag that generated the interrupt, and in other cases it doesn't. It never clears the Serial Port or Timer 2 flags. This has to be done in the user's software. It clears an external interrupt flag (lEO or lEI) only if it was transition-activated. The hardware-generated LCALL pushes the contents of the Program Counter onto the stack (but it does not save the PSW) and reloads the PC with an address that depends on the source of the interrupt being vectored to, as shown below. SOURCE VECTOR ADDRESS lEO TFO OOOBH IE1 TF1 RI+TI TF2+EXF2 0013H 001BH 0023H 002BH 7.8.4 Response Time The INTO and INTI levels are inverted and latched into lEO and lEI at S5P2 of every machine cycle. The values are not actually polled by the circuitry until the next machine cycle. If a request is active and conditions are right for it to be acknowledged, a hardware subroutine call to the requested service routine will be the next instruction to be executed. The call itself takes two cycles. Thus, a minimum of three complete machine cycles elapse between activation of an external interrupt request and the beginning of execution of the first instruction of the service routine. Figure 7-25 shows interrupt response timings. 0003H A longer response time would result if the request is blocked by one of the 3 previously listed conditions. If an interrupt of equal or higher priority level is already in progress, the additional wait time obviously depends on the nature of the other interrupt's service routine. If the instruction in progress is not in its final cycle, the additional wait time cannot be more than 3 cycles, since the longest instructions (MUL and DIY) are only 4 cycles long, and if the instruction in progress is RETI or an access to IE or IP, the additional wait time cannot be more than 5 cycles (a maximum of one more cycle to complete the instruction in progress, plus 4 cycles to complete the next instruction if the instruction is MUL or DIY). Execution proceeds from that location until the RETI instruction is encountered. The RETI instruction informs the processor that this interrupt routine is no longer in progress, then pops the top two bytes from the stack and reloads the Program Counter. Execution of the interrupted program continues from where it left off. Note that a simple RET instruction would also have returned execution to the interrupted program, but it would have left the interrupt control system thinking an interrupt was still in progress. Thus, in a single-interrupt system, the response time is always more than 3 cycles and less than 8 cycles. 7-25 MCS®-51 ARCHITECTURF1 7.9 SINGLE-STEP OPERATION The 8051 intenupt structure allows single-step execution ,with very little software overhead. As previously noted, an intenupt request will not be responded to while an intenupt of equal priority level is still in progress, nor will it be responded to after RETI until at least one other instruction has been executed. Thus, once an intenupt routine has been entered, it cannot be re-entered until at least once instruction of the intenupted program is executed. One way to use this feature for single-step operation is to program one of the external intenupts (say, INTO) to be level-activated. The service routine for the intenupt will terminate with the following code: JNB P3.2,$ JB P3.2,$ RETI ;WAIT HERE TILL INTO GOES HIGH ;NOW WAIT HERE TILL IT GOES LOW :GO BACK AND EXECUTE ONE INSTRUCTION Now if the INTO pin, which is also the P3.2 pin, is held normally low, the epu will go right into the External Intenupt 0 routine and stay there until INTO is pulsed (from low to high to low). Then it will execute RETI, go back to the task program, execute one instruction, and immediately re-enter the External Intenupt 0 routine to await the next pulsing of P3.2. One step of the task program is executed each time P3. 2 is pulsed. 7.10 RESET an internal reset. It also configures the ALE and PSEN pins as inputs. (They are quasi-bidirectional). The internal reset is executed during the second cycle in which RST is high and is repeated every cycle until RST goes low. It leaves the internal registers as follows: REGISTER CONTENT PC OOOOH ACC OOH B OOH PSW OOH SP 07H DPTR OOOOH PO-P3 OFFH IP (8051) XXXOOOOOB IP (8052) XXOOOOOOB IE (8051) OXXOOOOOB IE (8052) OXOOOOOOB TMOD OOH TCON OOH T2CON (8052 only) OOH THO OOH TLO OOH TH1 OOH TL1 OOH TH2 OOH TL2 OOH RCAP2H (8052 only) OOH RCAP2L (8052 only) OOH SCON OOH SBUF Indeterminate PCON(HMOS)OXXXXXXXB PCON (CHMOS) OXXXOOOOB The internal RAM is not affected by reset. When vee is turned on, the RAM content is indeterminate unless the part is returning from a reduced power mode of operation. The reset input is the RST pin, which is the input to a Schmitt Trigger. A reset is accomplished by holding the RST pin high for at least two machine cycles (24 oscillator periods), while the oscillator is running. The epu responds by executing POWER·ON RESET An automatic reset can be obtained when vee is turned on by connecting the RST pin to vee through a 10 J-tf capacitor and to VSS through an 8. 2Kll resistor, providing the vee risetime does not exceed a millisecond and the oscillator start-up time does not exceed 10 milliseconds. This power-on reset circuit is shown in Figure 7-26. When power comes on, the current drawn by RST commences to charge the capacitor. The voltage at RST is the difference between vee and the capacitor voltage, and decreases from vee as the cap charges. :The larger the capacitor, the more slowly VRST decreases. VRST must remain above the lower threshhold of the Schmitt Trigger long enough to effect a complete reset. The time required is the oscillator start-up time, plus 2 machine cycles. vee + 10,<1 ='= vee - 8051 . RST 8.2Kn 7.11 POWER-SAVING MODES OF OPERATION V.SS "'":::'" For applications where power consumption is a critical factor, both the HMOS and eHMOS versions provide reduced power modes of operation. For the eHMOS ver- Figure 7·26. Power on Reset Circuit 7-26 MCS®·51 ARCHITECTURE sion of tbe 8051 tbe reduced power modes, Idle and Power Down, are standard features. In the HMOS versions a reduced power mode is available, but not as a standard fe~ture. The local sales office will provide ordering information for users requiring this feature. (MSB) 7.11.1 HMOS Power Down Mode The power down mode in the HMOS devices allows one to reduce vee to zero while saving the on-chip RAM through a backup supply connected to the RST pin. To use the feature, the user's system, upon detecting that a power failure is imminent, would interrupt the processor in some manner to. transfer relevant data to the on-chip RAM and enable the backup power supply to the RST pin before vee falls below its operating limit. When power returns, the backup supply needs. to stay On long enough to accomplish a reset, and then can be removed Sl) that normal operation can be resumed. I GFl GFO PO Symbol Position Name and Function SMOO PCON.7 GFl GFO PD PCON.& PCON.S PCON.4 PCON.3 PCON.2 PCON.l IDL PCON.O Double BaUd rate bit. When set to a 1, the baud rate Is doubled when the serial port Is being used In either modes 1, 2 or 3. (Reserved) (Reserved) (Reserved) General-purpose flag bit. General-purpose flag bit. Power Down bit. Setting this bit activates power down operation. Idle mode bit. Setting thlsliit activates Idle mode operation. IOL If 1s are written to PD and IDL at the same time, PD takes precedence. The resel value 01 PCON Is (OXXXOOOO). Figure 7-28. PCON: Power Control Register 7.11.2 CHMOS Power Reduction Modes CHMOS ,versions have two power-reducing modes, Idle and Power Down. The input through which backup power is supplied d\lring these operations is vee. F,igure 7-27' shows the internal circuitry which implements these features. In the Idle mode (IDL = I), the oscillator continues to run and the Interrupt, Serial Port, and Timer blocks continue to be clocked, but the clock signal is gated off to the. CPU. In Power Down (PD = 1), the oscillator is frozen. Tbe Idle and Power Down modes are activated by setting bits in Special Function Register PeQN. The address of this register is 87H. Figure 7-28 details its contents. (LSB) ISMool the Idle mode, the internal clock signal is gated off to the CPU, but not to the Interrupt, Timer, and Serial Port functions. The CPU status is preserved in its entirety: the Stack Pointer, Program Counter, Program Status Word, Accumulator, and all other registers maintain their data during Idle. The port pins hold the logical states they had at the time Idle was activated. ALE and PSEN hold at . logic high levels. IDLE MODE There are two ways to terminate the Idle. Activation of any enabled interrupt will cause PeON. 0 to be cleared by hardware, terminating the Idle mode. The interrupt will be serviced, and following RET! the next instruction to be executed will be the one following the instruction that put the device into Idle. An instruction that sets PeON.O causes that to be the last instruction executed before going into the Idle mode. In The flag bits GFO and GFl can be used to give an indication if an interrupt occurred during normal operation or ~~ XTAL 2 = XTAL 1 INTERRUPT, I-_--C>. SERIAL PORT, TIMER BLOCKS CPU Figure 7-27. Idle and Power Down Hardware 7-27 MCS®·51 ARCHITECTURE 7.12 8751H during an Idle. For example, an instruction that activates Idle can also set one or both flag bits. When Idle is terminated by an interrupt, the interrupt service routine can examine the flag bits. The 8751H is the EPROM member of the MCS-51 family. This means that the on-chip Program Memory can be electrically programmed, and can be erased by exposure to ultraviolet light. The 8751H also has a provision for denying external access to the on-chip Program Memory , in order to protect its contents against software piracy. The other way of terminating the Idle mode is with a hardware reset. Since the clock oscillator is still running, the hardware reset needs to be held active for only two machine cycles (24 oscillator periods) to complete the reset. 7.12.1 Programming the EPROM To be programmed, the 8751H must be running with a 4 to 6 MHz oscillator. (The reason the oscillator needs to be running is that the internal bus is being used to transfer address and program data to appropriate internal registers.) The address of an EPROM location to be programmed is applied to Port 1 and pins P2.0-P2.3 of Port 2, while the data byte is applied to Port O. Pins P2.4--P2.6 and PSEN should be held low, and P2.7 and RST high. (These are all TTL levels except RST, which requires 2.5V for a logic high.) EAlVPP is held normally high, and is pulsed to +2IV. While EAlVPP is at 21V, the ALE/PROG pin, which is normally being held high, is pulsed low for 50 msec. Then EAlVPP is returned to high. This setup is shown in Figure 7.29. Detailed timing specifications are provided in the 875lH data sheet. POWER DOWN MODE An instruction that sets PCON.I causes that to be the last instruction executed before going into the Power Down mode. In the Power Down mode, the on-chip oscillator is stopped. With the clock frozen, all functions are stopped, but the on-chip RAM and Special Function Registers are held. The port pins output the values held by their respective SFRs. ALE and PSEN output lows. 'The only exit from Power Down is a hardware reset. Reset redefines all the SFRs, but does not change the on-chip RAM. In the Power dow\l mode of operation, VCC can be reduced to minimize power consumption. Care must be taken, however, to ensure that VCC is not reduced before the Power Down mode is invoked, and that vce is restored to its normal operating level, before the Power Down mode is terminated. The reset that terminates Power Down also frees the oscillator. The reset should not be activated before VCC is restored to its normal operating level, and must be held active long enough to allow the oscillator to restart and stabilize (normally less than 10 msec). Note: The EA pin must not be allowed to go above the maximum specified VPP level of 21.5V for any amount of time. Even a narrow glitch above that voltage level can cause permanent damage to the device. The VPP source should be well regulated and free of glitches. 7.12.2 Program Verification If the program security bit has not been programmed, the on-chip Program Memory can be read out for verification +5V ADDR. OOOOHOFFFH vee Pl 8751H P2.0P2.3 TTL HIGH P2.4 P2.5 ALE/PROG P2.& P2.7 XTAL2 EAlVPP XTALl VSS -=- -=- Figure 7-29. Programming the 8751 H 7-28 MCS®-51 ARCHITECTURE programming, except that pin P2.6 is held at TTL high. The setup is shown in Figure 7.31. Port 0, Port 1, and pins P2.O""P2.3 of Port 2 may be in any state. purposes, if desired, either during or after the programming operation. The required setup, which is shown in Figure 7.30, is the same as for programming the EPROM except that pin P2.7 is held at TTL low (or used as an active-low read strobe). The address of the Program Memory location to be read is applied to Port I and pins P2.O""P2.3. The other Port 2 pins and PSEN are held low. ALE, EA, and RST are held high. The contents of the addiessed location will come out on Port O. External pullups are required on Port 0 for this operation. Once the security bit has been programmed, it can be deactivated only by full erasure of the Program Memory. While it is programmed, the internal Program Memory cannot be read out, the device cannot be further programmed, and it cannot execute external program memory. Erasing the EPROM, thus deactivating the security bit, restores the device's full functionality. It can then be re-programmed. 7.12.3 Program Memory Security 7.12.4 Erasure Characteristics The 8751H contains a security bit, which, once programmed, denies electrical access by any external means to the on-chip Program Memory. The setup and procedure for programming the security bit are the same as for normal Erasure of the 8751H Program Memory begins to occur when the chip is exposed to light with wavelengths shorter +5V ADDR. --~---,,....,., OOOOHOFFFH vcc P1 PGM DATA (USE 10K PULLUPS) PO P2.0P2.3 8751H 8051 P2.4 P2.5 ALe TTL HIGH XTAL2 RST VIH1 XTAL1 PSEN P2.6 P2.7 VSS .". .". Figure 7-30. Program Verification In the 8751 Hand 8051 +5V 'I x vcc P1 PO P2.oP2.3 = "DON'T ·CARE" X 8751H P2.4 P2.5 ALE/PFiOG 50 ms PULSE TO GND P2.6 P2.7 TTL HIGH XTAL2 XTAL1 VSS EAlVPP + 21V PULSE RST PSEN .". VIH1 .". Figure 7-31. Programming the Security Bit in the 8751H 7-29 MCS®·51 ARCHITECTURE than approximately 4,000 Angstroms. Since sunlight and fluorescent lighting have wavelengths in this range, exposure to these light sources over an extended time (about I week in sunlight, or 3 years in room-level fluorescent , lighting) could cause inadvertent erasure. If an application subjects the 8751H to this type of exposure, it is suggested that an opaque label be placed over the window. The recommended erasure procedure is exposure to ultraviolet light (at 2537 Angstroms) to an integrated dose of at least 15 W/cm2 . Exposing the 8751H to an ultraviolet lamp of 12,000 /LW/cm2 rating for 20 to 30 minutes, at a distance of about 1 inch, should be sufficient. Erasure leaves the array in an all Is state. 7.13 MORE ABOUT THE ON·CHIP OSCILLATOR 7.13.1 HMOS Versions The on-chip oscillator circuitry for the HMOS (HMOS-I and HMOS-II) members of the MCS-51 family is a single stage linear inverter (Figure 7-32), intended for use as a crystal-controlled, positive reactance oscillator (Figure 7-33). In this application the crystal is operated in its fundamental response mode as an inductive reactance in parallel resonance with capacitance external to the crystal. Vee TO INTERNAL TIMING CKTS XTAL2 XTAL1 if SUBST. Figure 7-32. On-Chip Oscillator Circuitry in the HMOS Versions of the MCS-51 Family Q2 TO INTERNAL TIMING CKTS VSS 8051 XTAL1---- XTAL2------ _--1"-- QUARTZ CRYSTAL OR CERAMIC ReSONATOR Figure 7-33. Using tile HMOS On-Chip OSCillator 7-30 MCS®-S1 ARCHITECTURE ramic resonators, and the selection of values for CI and C2 can be found in Application Note AP-155, "Oscillators for Microcontrollers," which is included in this manual. The crystal specifications and capacitance values (CI and C2 in Figure 7-33) are not critical. 30 pF can be used in these positions at any frequency with good quality crystals. A ceramic resonator can be used in place of the crystal in cost-sensitive applications. When a ceramic resonator is used, CI and C2 are normally selected to be of somewhat higher values, typically, 47 pF. The manufacturer of the ceramic resonator should be consulted for recommendations on the values of these capacitors. To drive the HMOS parts with an external clock source, apply the external clock signal to XTAL2, and ground XTALl, as shown in Figure 7-34. A pull-up resistor may be used (to increase noise margin), but is optional if VOH of the driving gate exceeds the VIHMIN specification of XTAL2. A more in-depth discussion of crystal specifications, ce- 7.13.2 CHMOS The on-chip oscillator circuitry for the 80C51, shown in Figure 7-35, consists of a single stage linear inverter intended for use as a crystal-controlled, positive reactance oscillator in the same manner as the HMOS parts. However, there are some important differences. Vcc - EXTERNAL OSCILLATOR SIGNAL 8051 t .;.c>--+---i XTAL2 - One difference is that the SOC51 is able to turn off its oscillator under software control (by writing a I to the PD bit in PeON). Another difference is that in the SOC5l the internal clocking circuitry is driven by the signal at XTALl, whereas in the HMOS versions it is by the signal at XTAL2. XTAL1 TTL GATE WITH TOTEM-POLE OUTPUT >-- VSS The feedback resistor Rf in Figure 7-35 consists of paralleled n- and p-channel FETs controlled by the PD bit, such that Rf is opened when 'PD = I. The diodes D I and D2, which act as clamps to VCC and VSS, are parasitic to the Rf FETs. Figure 7-34. Driving the HMOS MCS-51 Parts with an External Clock Source Vcc TO INTERNAL TIMING cKrs 01 R, 4000 XTAL1 XTAL2 02 r PO Figure 7-35. On-Chip Oscillator Circuitry in the CHMOS Versions of the MCS-51 Family 7-31 MCS®-51 ARCHITECTURE VCC TO INTERNAL TIMING CKTS RI VSS -------80C51 XTAL1----- XTAL2------ ~-r-- QUARTZ CRYSTAL OR CERAMIC RESONATOR C~ I ~ FIgure 7-36. Using the CHMOS On-Chip Oscillator The oscillator can be used with the same external components !IS the HMOS versions, as shown in Figure 7-36. Typically, CI = C2 = ·30 pF when the feedback element is a quartz crystal, and Cl = C2 = 47 pF when a ceramic resonator is used. To drive the.CHMOS parts with an external clock source, apply the external clock signal to XTALl, and leave XTAL2 float, as shown in Figure 7-37. The reason for this change from the way the HMOS part is driven can be seen by comparing Figures 7-32 and 7-35. In the HMOS devices the internal timing circuits are driven by the signal at XTAL2. In the CHMOS devices the internal timing circuits are driven by the signal at XTALI. 80C51 XTAL2 EXTERNAL OSCILLATOR SIGNAL t :>0----1 7.14 INTERNAL TIMING Figures 7-38 through 7-41 show when the various strobe and port signals are clocked internally. The figures do not show rise and fall times of the signals, nor do they show propagation delays between the XTAL2 signal and events at other pins. Rise and fall times are dependent on the external loading that each pin must drive. They are often taken to be some: thing in the neighborhood of 10 nsec, measured between 0.8V and 2.0V. Propagation delays are different for different pins. For a given pin they vary with pin loading, temperature, VCC, and manufayturing lot. If the XTAL2 waveform is taken as the timing reference, prop delays may vary from 25 to 125 nsec. the AC Timings section of the data sheets do not reference any timing to the XTAL2 waveform. Rather, they relate the critical edges of control and input signals to each other. The timings published in the data sheets include the effects of propagation delays under the specified test conditions. XTAL1 7.15 MCS-51 PIN DESCRIPTIONS )Iss CMOS GATE VCC: Supply voltage. VSS: Circuit ground potential. P9rt 0: Port 0 is an 8-bit open drain bidirectional 1/0 port. Figure 7-37. DrIvIng the CHMOS MCS-51 Parts wIth an External Clock Source· As an open drain output port it can sink 8 LS TTL loads. Port 0 pins that have 1s written to them float, and in that state will function as high-impedance inputs. Port 0 is also 7-32 MCS®-51 ARCHITECTURE the multiplexed low-order address and data bus during accesses to external memory. In this application it uses strong internal pullups when emitting Is. Port 0 also emits code bytes during program verification. In that application, external pullups are required. The Port 3 output buffers can sourcelsink 4 LS TTL loads. RST: Reset input. A high on this pin for two machine cycles while the oscillator is running resets the device. ALEJPI«)G: Address Latch Enable output pulse for latching the low byte of the address during accesses to external memory. ALE is emitted at a constant rate of 116 of the oscillator frequency, for external timing or clocking purposes, even when there are no accesses to external memory. (However, one ALE pulse is skipped during each acces to external Data Memory) This pin is also the program pulse input (PROG) during EPROM programming. Port 1: Port I is an 8-bit bidirectional I/O port with internal pullups. The port I output buffers can sink/source 4 LS TTL loads. Port I pins that have I s written to them are pulled high by the internal pullups, and in that state can be used as inputs. As inputs, Port I pins that are externally being pulled low will source current (IlL, on the data sheet) because of the internal pullups. In the 8052, pins Pl.O and PI.I also serve the alternate functions of T2 and T2EX. T2 is the Timer 2 external input. T2EX is the input through which a Timer 2 "cap. ture" is triggered. PSEN: Program Store Enable is the read strobe to external Program Memory. When the device is executing out of external Program Memory, PSEN is activated twice each machine cycle (except that two PSEN activations are skipped during accesses to external Data Memory). PSEN is not activated when the device is executing out of internal Program Memory. Port 2: Port 2 is an 8-bit bidirectional 1/0 port with internal pullups. The Port 2 output buffers can sink/source 4 LS TTL loads. Port 2 emits the high-order address byte during accesses to external memory that use 16-bit addresses. In this application it uses the strong internal pullups when emitting Is. Port 2 also receives the high-order address and control bits during 8751H programming and verification, and during program verification in the 8051AH. EAlVPP: When EA is held high the CPU executes out of internal Program Memory (unless the Program Counter exceeds OFFFH in the 8051AH, or lFFFH in the 8052). Holding EA low forces the CPU to execute out of external memory regardless of the Program Counter value. In the 803IAH and 8032, EA must be externally wired low. In the 8751H, this pin also receives the 21V programming supply voltage (VPP) during EPROM programming. Port 3: Port 3 is an 8-bit bidirectional I/O port with internal pullups. It also serves the functions of various special features of the MCS-51 Family, as listed below: PORT PIN P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 ALTERNATE FUNCTION RXD (serial Input port) TXD (serial putput port) iNTO (external Interrupt 0) INT1 (external. Interrupt 1) TO (Timer 0 external Input) !!JTlmer 1 ext,rnal input) WR (external data memory write strobe) RD (external data memory read str9i:!e) XTALl: Input to the inverting oscillator amplifier. XTAL2: Output from the inverting oscillator amplifier. 7-33 MCS®-51 ARCHITECTURE I STATE 11 STATE 21 STATE 31 STATE 41 STATE 51 STATE 61 STATE 1.1 STATE 21 ~I~ ~I~ ~I~ ~I~ ~I~ ~I~ ~I~ ~I~ XTAL2: ALE: PSEN: ~ -+I . L , - - - I- - - - - ' DATA k-SAMPLED po: P2: PCH OUT PCH OUT PCH OUT Figure 7-38. External Program Memory Fetches I~I~ I~I~ STATE 41 ~TATE 51 STATE 61 STATE 1 STATE 21 STATE 31 STATE 41 STATE 51 ~I~ ~I~ ~I~ ~I~ ~I~ ~I~ XTAl2: ALE: PCL OUT IF RD: DATA SAMPLED FLOAT PO: P2: PCH OR P2SFR DPH OR P2 SFR OUT Figure 7-39. External Data Memory Read Cycle 7-34 PCH OR P2SFR MCS®-S1 ARCHITECTURE I I STATE 41 STATE 51 STATE 81 STATE 1 STATE 31 STATE 21 STATE 41 STATE 51 ~I~ ~I~ ~I~ ~I~ ~I~ ~I~ ~I~ ~I~ XTAL2: ALE: PCL OUT IF PROGRAM MEMORY IS EXTERNAL WR: po: P2 DATA OUT PCH OR P2SFR PCH OR P2SFR DPH OR P2 SFR OUT Figure 7-40. External Data Memory Write c:ycle 41 STATE 51 STATE 61 STATE 1 ISTATE 21 STATE 31 STATE 41 STATE 51 ISTATE ~I~ ~I~ ~I~ ~I~ ~I~ ~I~ ~I~ ~I~ XTAL2: INPUTS SAMPLED: ~J~--,PO, Pl po, P1 = : r ! - P 2 , P3, RST MOV PORT, SRC: OLD DATA -Lt P2, P3, R S T = : r ! - NEW DATA SERIAL PORT SHIFT CLOCK (MODE 0) -.j ~ RXD PIN SAMPLED Figure 7·41. Port Operation 7-35 RXD SAMPLED ---l j.c- MCS®~51lnstruction Set 8 CHAPTER 8 MCS®-S1 INSTRUCTION SET 8.0 INTRODUCTION • MOVX performs a byte move between the External Data Memory and the accumulator. The external address can be specified by the 0 PTR register (16bit) or the R I or RO register (8-bit). The MCS@-51 instruction set includes III instructions, 49 of which are single-byte, 45 two-byte and 17 three byte. The instruction op code format consists of a function mnemonic followed by a "destination, source" operand field. This field specifies the data type and addressing methodes) to be used. • MOVC moves a byte from Program memory to the accumulator. The operand in A is used as an index into a 256-byte table pointed to by the base register (DPTR or PC). The byte operand accessed is transferred to the accumulator. 8.1 FUNCTIONAL OVERVIEW ADDRESS-OBJECT TRANSFER The MCS-51 instruction set is divided into four functional groups: • • • • • MOV DPTR, #data loads 16-bits of immediate data into a pair of destination re~isters, DPH and DPL. Data Transfer Arithmetic Logic Control Transfer 8.1.2 Arithmetic The 8051 has four basic mathematical operations. Only 8-bit operations using unsigned arithmetic are supported directly. The overflow flag, however, permits the addition and subtraction operation to serve for both unsigned and signed binary integers. Arithmetic can also be performed directly on packed decimal (BCD) representations. 8.1.1 Data Transfer Data transfer operations are divided into three classes: • General Purpose • Accumulator-Specific • Address-Object ADDITION None of these operations affect the PSW flag settings except a pap or MOV directly to the PSW. • INC (increment) adds one to the source operand and puts the result in the operand. • ADD adds A to the source operand and returns the result to A. GENERAL-PURPOSE TRANSFERS • MOV performs a bit or a byte transfer from the source operand to ,the destination operand. • ADDC (add with Carry) adds A and the source operand, then adds one ( I) if CY is set, and puts the result in A. • PUSH increments the SP register and then transfers a byte from the source operand to the stack location currently addressed by SP. • DA (decimal-add-adjust for BCD addition) corrects the sum which results from the binary addition of two two-digit decimal operands. The packed decimal sum formed by DA is returned to A. CY is set if the BCD result is greater than 99; otherwise, it is cleared. • POP transfer a byte operand from the stack location addressed by SP to the destination operand and then decrements SP. SUBTRACTION ACCUMULATOR SPECIFIC TRANSFER~ • XCH exchanges the byte source operand with register A (accumulator). • SUBB (subtract with borrow) subtracts the second source operand from the first operand (the accumulator), subtracts one (I) if CY is set and returns the result to A. • XCHD exchanges the low-order nibble of the byte source operand with the low-order nibble of A. • DEC (decrement) subtracts one (I) from the source operand and returns the result to the operand. 8-1 MCS®·51 INSTRUCTION SET • RL, RLC, RR, RRC, SWAP are the five rotate operations that can be performed on A. RL, rotate left, RR, rotate right, RLC, rotate left through C, RRC, rotate right through C, and SWAP, rotate left four. For RLC and RRC the CY flag becomes equal to the last bit rotated out. SWAP rotates A left four places to exchange bits 3 through 0 with bits 7 through 4. MULTIPLICATION • M U L performs an unsigned multiplication of the A register by the B register, returning a double-byte result. A receives the low-order byte, B receives 'the high-order byte. OV is cleared if the top half of the result is zero and is set if it is non-zero. CY is cleared. AC is unaffected. DIVISION TWO-OPERAND OPERATIONS • DIV performs an unsigned division of the A register by the B register and returns the integer quotient to A and returns the fractional remainder to the B register. Division by zero leaves indeterminate data in registers A and B and sets OV; otherwise OV is cleared. CY is cleared. AC is unaffected. • ANL performs bitwise logical and of with two source operands (for both bit and byte operands) and returns the result to the location of the first operand. • 0 R L performs bitwise logical or of two source operands (for both bit and byte operands) and returns the result of the location of the first operand. Unless otherwise stated in the above descriptions, the flags of PSW are affected as follows: • XRL performs bitwise logical or of two source operands (byte operands) and returns the result to the location of the first operand. • CY is set if the operation causes a carry to or from the resulting high-order bit. Otherwise CY is cleared. • AC is set if the operation results in a carry from the low-order four bits of the result (during addition), or a borrow from the high-order bits to the low-order bits (during subtraction); otherwise AC is cleared. 8.1.4 Control Transfer There are three classes of control transfer operations: unconditional calls, returns and jumps; conditional jumps; and interrupts. All control transfer operations cause, some upon a specific condition, the program execution to continue at a non-sequential location in program memory. • OV is set if the operation results in a carry to the high-order bit of the result but not a carry from the high-order bit, or vice versa; otherwise 0\1 is cleared. OV is used in two's-complement arithmetic, because it is set when the signed result cannot be represented in 8 bits. UNCONDITIONAL CALLS, RETURNS AND JUMPS • P is set if the mod ulo 2 sum of the eight bits in the accumulator is I (odd parity); otherwise P is cleared (even parity). When a value is written to the PSW register, the P bit remains unchanged, as it always reflects the parity of A. Unconditional calls, returns and jumps transfer control from the current value of the Program Counter to the target address. Both direct and indirect transfers are supported. 8.1.3 Logic • ACALL and LCALL push the address of the next instruction onto the stack and then transfer control to the target address. ACALL is a 2-byte instruction used when the ,target address is in the current 2K page. LCALL is a 3-byte instruction that addresses the full 64K program space. In ACALL, immediate data (i.e. an II bit address field) is concatenated to the five most significant bits of the PC (which is pointing to the next instruction). If ACALL is in the last 2 bytes of a 2K page then the call will be made to the next page since the PC will have been incremented to the next instruction prior to execution. The 8051 performs basic logic operations on both bit and byte operands. SINGLE-OPERAND OPERATIONS • CLR sets A or any directly addressable bit to zero (0). • SETB sets any directly addressable bit to one (I). • CPL is used to compliment the contents of the A register without affecting any flags, or any directly addressable bit location. 8-2 MCS$-S1INSTRUCTION SET • RET transfers control to the return address saved on the stack by a previous call operation and decrements the SP register by two (2) ,to adjust the SP for the popped address. made between A directly addressable bytes in Internal Data Memory or between an immediate value and either A, a register in the selected Register Bank, or a Register-Indirect addressed byte of Internal RAM. • AJM p, U M P'and SJ M P transfer controlto the target operand. The operation of AJMP and UMP are analogous to ACALL and LCALL. The SJMP (short jump) instruction provides for transfe.rs within a 256 byte range centered a,bout the starting address of the next instruction (-128 to + 127). • DJNZ dec;rements the source operand and returns the result to the operand. Ajump is performed if the result is not zero. The source operand of the DJNZ instruction may be any byte in the Internal Data Memory. Either Direct or Register Addressing may be used to address the source operand. • JMP @A+DPTR performs a jump relative to the DPTR register. The operand in A is used as the offset (0-255) to the address in the DPTR register. Thus, the effective destination for ajump can be anywhere in the Program Memory space. INTERRUPT RETURNS • RET! transfers control as does RET, but additionally enables interrupts of the current priority level. 1 8.2 INSTRUCTION DEFINITIONS CONDITIONAL JUMPS Each of the 51 basic MCS-51 operations, ordered alphabetically according to the operation mnemonic are described beginning page 8-8. ,Conditional jumps perform a jump contingent upon a specific condition. The destination will be within a 256'byte range centered about the starting address of the next instruction (-128 to +127). A brief example of how the instruction might be used is given well as its effect on the PSW flags. The number of bytes and machine cycles required,the binary machine~ ,language encoding, and a symbolic description or restatem~nt of the function is also provided. as • JZ performs a jump if the accumulator is zero. '. J NZ performs a jump if the accumulator is not zero. • JC performs a jump if the carry flag is set. Note: Only the carry, auxiliary-carry, and overflow flags are discussed. The parity bit is computed after every instruction cycle that alters the accumulator. Similarly, instructions which alter directly addressed registers could affect the other status flags if the instruction is applied to the PSW. Status flap can also be modified by bitmanipUlation. • JNC performs a jump if the carry flag is not set. • JB performs ajump if the Direct Addressed bit is set. • JNB performs a jump if the Direct Addressed bit is not set. • JBC performs a jump if the Direct Addressed bit is set and then clears the Direct Addressed bit. For details on the MCS-SI assembler, ASM51, refer to the MCS-51 Macro Assembler User's Guide, publication number 9800937, • CJNE compares the first operand to the second operand and performs ajump if they are not equal. CY is set if the first operand is less than the second operand; otherwise it is cleared. Comparisons can be Table 8-1 summarized the M ':-51 instruction set. - 8-3 ~ '--.............. MCSI!!>-51 INSTR!JCrION SEr , Table 8-1. 8051 Instruction Set Summary Notes on instruction'set and addressing modes: Rn -Register R 7-RO of the currently selected Register Bank. -8obit internal data location's address. This cduld be direct an Internal Data RAM location (0-127) or'a SFR [Le., I/O port, control register, status register, etc. (128-255)]. , , @Ri -8obit internal data RAM location (0-255) addressed indirectly through register R I or RO. #data -8-bit constant included in instruction. #data 16 -16-b.t constant included in instruction addr 16 -16-bit destination address. Used by LCALL & LJ M P. A branch can be anywhere within \he 64Kbyte Program Memory address space. , addr II -II-bit destination address. Used by ACALL & AJMP. The branch will be within the same 2K-byte page of program memory as' the first byte of the following instruction. reI -Signed (two's complement) 8-bit offset byte. Used by SJMP and all conditional jumps. Range is -128 to + 127 bytes relative to first byte of the following instructiol1. bit -Direct. Addressed bit in Internal Data RAM or Special Function Register. :"'New operation 110t provided by 8048AH/8049AH. Interrupt Response Time: To fimsh execution of current instruction, respond to the interrupt request, push the PC and to vector to the first instruction of the interrupt service program requires 38 to 81 oscillator periods (3 to 7IlS @ 12 MHz). INSTRUCTIONS THAT AFFECT FLAG SETTINGS' INSTRUCTION FLAG INSTRUCTION OYAC X X CLRC X X CPLC X, X ANLC,bit o X ANL C,/bit o X ORLC,bit X ORLC,bit X MOYC,bit ,X CJNE I ADD ADDC SUBB MUL DIY DA RRC RLC SETBC FLAG C OYAC C X X X o . X X X X X X ?' 'Note that operations on SFR byte address 208 or bi! addresses 209-215 (Le., the PSW or bits in the,PSW) will also affect flag settIngs. ARITHMETIC OPERATIONS Mnemonic ADD A,Rn ADD A,direct ADD A,@Ri ADD A,#data ADDC A,Rn ADDC A,dlrect ADDC A,@Ri ADDC A,#data SUBB A,Rn SUBB A,direct Description Add register to Accumulator Add direct byte to' Accumulator Add indirect RAM to Accumulator Add immediate data to Accumulator Add register to Accumulator with Carry Add direct byte to Accumulator with Carry Add indirect RAM to Accumulator with Carry Add immediate data to Acc with Carry Subtract register from Acc with borrow Subtract d.rect byte from Acc with borrow ARITHMETIC QPERATIONS Cont. Osclllato~ Oscillator Byte Period Mnemonic 12 2 SUBB A,@Ri SUBB A,#data 12 12 2 2 12 INC A 12 INC INC Rn direct 12 INC @Ri DEC A DEC Rn DEC direct DEC @Ri 12 INC DPTR 12 MUL DIY DA AD AB A 12 2 2 12 Deseription Byte Period S'ubtract indirect RAM fromAcc with borrow Subtract immediate data from Acc with borrow Increment Accumulator Increment register Increment direct byte Increment indirect RAM Decrement Accumulator Decrement Register Decrement direct byte Decrement indirect RAM Increment Data Pointer Multiply A & B Divide A byB Decimal Adjust Accumulator f 12 2 12 I 2 12 12 All mnemoniCs copYrighted @lotelCorporation 1980 8-4 12 12 .12 12 2 12 12 24 48 48 12 MCS~-51INSTRUCTION SET Table 8-1. 8051 Instruction Set Summary (Continued) LOGICAL OPERATIONS Coni. LOGICAL OPERATIONS Mnemonic ANL ANL ANL ANL ANL ANL ORL ORL ORL ORL ORL ORL XRL XRL A,Rn Description AND register to Accumulator AND direct byte A,direct to Accumulator A,@Ri AND indirect RAM to Accumulator A,#data AND immediate data to Accumulator dlrect,A AND Accumulator to direct byte direct,#data AND immediate data to direct byte A,Rn OR register to Accumulator A,direct OR direct byte to Accumulator A,@Ri OR indirect RAM to Accumulator A,#data OR immediate data to Accumulator direct,A OR Accumulator to direct byte direct,#data OR immediate data to direct byte A,Rn ExclUSive-OR register to Accumulator A,direct Exclusive-OR direct byte to Accumulator Oscillator Byte Period I 12 2 12 Mnemonic XRL XRL 12 XRL 2 12 2 12 XRL 2 2 24 CLR 12 CPL 12 RL 12 RLC 12 RR 2 12 3 24 RRC 12 SWAP 2 12 Description Byte A,@Ri Exclusive-OR indirect RA M to Accumulator A,#data Exclusive-OR immediate data to Atcumulator Exclusive-OR direct,A Accumulator to direct byte direct,#data Exclusive-OR immediate data to direct byte A Clear Accumulator Complement A Accumulator Rotate A Accumulator Left Rotate A Accumulator Left through the Carry Rotate A Accumulator Right A Rotate Accumulator Right through the Carry A Swap nibbles Within the Accumulator All mnemonics copynghted @Intel CorporatIOn 1980 8-5 Oscillator Period 12 2 12 2 12 3 24 12 12 12 12 12 12 12 MOS@·S1INSTRUOTION SET Table 8-1. 8051 Instruction Set Summary (Continued) DATA TRANSFER DATA TRANSFER Cont. Mnemonic Description MOY A,Rn MOY A,direct MOY A,@Ri MOY A,#data MOY Rn,A Move register to Accumulator Move direct byte to Accumulator Move indirect RAMto Accumulator Move immediate data to Accumulator Move Byte 2 2. Oscillator Period Mnemonic 12 MOY 12 MOYC 12 MOYC 12 MOYX 12 MOYX Accumulator MOY MOY MOY Rn,direct Rn,#data direct,A MOY direct,Rn MOY direct,direct MOY direct,@Ri MOY direct,#data MOY @Ri,A MOY @Ri,dtrect MOY @Ri,#data to register Move direct byte to register Move immediate data to register Move Accumul"tor to direct byte Move register to direct byte Move direct byte to direct Move indirect RAMto direct byte Move immediate data to direct byte Move Accumulator to indirect RAM Move direct byte to indirect RAM Move immediate data to mtlirect RAM 2 24 MOYX 12 MOYX 12 PUSH 2 24 POP 24 2 24 XCH 24 XCH 12 XCH 2 24 2 12 XCHD Description Byte Oscillator Period 3 24 DPTR,#dataI6 Load Data Pointer with a l6-bit constant A,@A+DPTR Move Code byte relative fo DPTR to Ace A,@A+PC Move Code byte relative to PC to Ace A,@Ri Move External RAM (8-bit addr) to Acc A,@DPTR Move External RAM (l6-bit addr) to Ace @Ri,A Move Aceto External-RAM (8-bit addr) @DPTR,A Move Aceto External RAM (l6-bit addr) direct Push direct byte onto stack direct Pop direct byte from stack A,Rn Exchange register with Accumulator A,direct Exchange direct I>yte with Accumulator A,@Ri Exchange indired RAM with Accumulator A,@Ri Exchange loworder Digit indirect RA M with Ace All mnemoniC!> copYrighted ©Intel Corporation 1980 8-6 24 24 24 24 24 24 2 24 2 24 12 2 12 12 12 MCS®-51 INSTRUCTION SET Table 8-1. 8051 Instruction Set Summary (Continued) BOOLEAN VARIABLE MANIPULATION Mnemonic CLR CLR SETB SETB CPL C bit C bit C CPL bit ANL C.bit ANL C,/bit ORL C.bit ORL C,/bit MOV C,bit MOV bit,C JC rei Description Clear Carry Clear direct bit Set Carry Set direct bit Complement Carry Complement direct bit AND direct bit to Carry AND compleme~t of direct bit to Carry OR direct bit to Carry OR complement of direct bit to Carry Move direct bit to Carry Move Carry to direct bit Jump if Carry PROGRAM BRANCHING Conl Byte I 2 I 2 O~.cillator Oscillator Period Mnemonic RETI 12 12 12 12 12 AJMP LJMP SJMP 2 12 2 24 2 24 JZ 2 24 JNZ 2 24 JMP CJNE 2 12 2 24 2 24 2 24 CJNE is set JNC rei JB bit, rei JNB bit, rei JBC bit,rel Jump if Carry not set JljffiP if direct Bit is set Jump if direct Bit is Not set Jump if direct Bit is set & clear bit CJNE 24 24 CJNE 24 DJNZ PROGRAM BRANCHING Mnemonic ACALL addrll LCALL addrl6 RET Description - Absolute Subroutine Call Long Subroutine Call Return from Subroutine Byte Oscillator Period 2 24 3 24 DJNZ NOP Do:scription Byte Return from interrupt addrll Absolute' Jump addrl6 Long Jump rei Short Jump (relative addr) @A+DPTR Jump indirect relative to the DPTR rei Jump if Accumulator is Zero rei Jump if Accumulator . is Not Zero A,direct,rel Compare direct byte to Ace and Jump if Not Equal A,#data,rel Compare immediate to Acc.and Jump iLNot Equal Rn,#data,rel Compare immediate to register and Jump If Not Equal @Ri,#data,rel Compare immediate to indirect and Jump if Not Equal Rn,rel Decrement register and Jump if Not Zero direct, rei Decrement direct byte and Jump if Not Zero No Operation All mnemonics copYrighted ©Intel Corporation 1980 24 8-7 Period 24 2 24 3 24 24 2 24 2 24 2 24 24 3 24 24 24 24 3 24 12 MCS@·S1 INSTRUCTION SET ACALL addr11 Function: Description: Example: Absolute Call ACALL unconditionally calls a subroutine located at the indicated address. The instruction increments the PC twice to obtain the address of the following instruction, then pushes the 16-bit result onto the stack (low-order byte first) and increments the stack pointer twice. The destination address is obtained by successively concatenating the five high-order bits of the incremented PC, opcode bits 7-5, and the second byte of the instruction. The subroutine called must therefore start within the same 2K block of the program memory as the first byte of the instruction following ACALL. No flags are affected. Initially SP equals 07H. The label "SUBRTN" is at program memory location 0345H. After executing the instruction, ACALL SUBRTN at location 0123H, SP will contain 09H, internal RAM locations OSH and O9H will contain 25H and OIH, respectively, and the PC will contain 0345H. Bytes: Cycles: Encoding: Operation: 2 2 IaIO a9 as I I 0 0 0 1 I Ia7 ACALL (PC)---(PC) + 2 (SP) ~ (S]» + 1 «SP»-(PC7-0) (SP) ---- (SP) + I «SP» -(PCI5-S) (PClO-O)-page address 8-8 a6 as a41 a3 a2 al aO I MCS®·51 INSTRUCTION SET' ADD A, Function: Description: Add ADD adds the byte variable indicated to the accumulator, leaving the result in the accumulator. The carry and auxiliary-carry flags are set, respectively, if there is a carry-out from bit 7 or bit 3, and cleared otherwise. When adding unsigned integers, the carry flag indicates an overflow occurred. OV is set if there is a carry-out of bit 6 but not out of bit 7, or a carry-out of bit 7 but not bit 6; otherwise OV is cleared. When adding signed integers, OV in- dicates a negative number produced as the sum of two positive operands, or a positive sum from two negative operands. Example: Four source operand addressing modes are allowed: register, direct, registerindirect, or immediate. The accumulator holds OC3H (llOOOOllB) and register 0 holds OAAH (lOlOlOlOB). The instruction, ADD A,RO will leave 6DH (01 101 lOlB) in the accumulator with the AC flag cleared and both the carry flag and OV set to 1. ADD A,Rn Bytes: Cycles: Encoding: Operation: ADD 1 0 0 o 11 r r r I ADD (A)_ (A) + (Rn) A,direct 2 Bytes: Cycles: 1 0 1 Encoding: 10 Operation: ADD (A)- (A) + (direct) 01 0 0 11 Idirect a,ddress I 8-9 MCS®~51 INSTRUCTION S~T ADD A,@RI Bytes: Cycles: 01 0 Encoding: 10 Operation: ADD (A)- (A) + «Ri» 0 1 1 i 1 ADD A,#data Bytes: Cycles: 2 0 Encoding: 10 Operation: ADD (A)_ (A) + #data 01 0 1 0 01 I immediate data I 8-10 MCS@-51 INSTRUCTION SET· ADDC A, Function: Description: Add with Carry ADDC simultaneously adds the byte variable indicated, the carry flag and the accumulator contents, leaving the result in the accumulator. The carry and auxiliary-carry flags are set, respectively, if there is a carry-out from bit 7 or bit 3, and cleared otherwise. When adding unsigned integers, the carry flag indicates an overflow occurred. OV is set if there is a carry-out of bit 6 but not out of bit 7, or a carryout of bit 7 but not out of bit 6; otherwise OV is cleared. When adding signed integers, OV indicates a negative number produced as the sum of two positive operands or a positive sum from two negative operands. Example: Four source operand addressing modes are allowed: register, direct, registerindirect, or immediate. The accumulator holds OC3H (llOOOOllB) and register 0 holds OAAH (lOlOlOlOB) with the carry flag set. The instruction, ADDC A,RO will leave 6EH (OllOlllOB) in the accumulator with AC cleared and both the carry flag and OV set to 1. ADDC A,Rn Bytes: Cycles: 10 Operation: ADDC (A)_(A) + (q + (Rn) 0 1 11 r rl Encoding: It AD DC A,direct Bytes: 2 Cycles: 1 Encoding: Operation: I0 0 I I I0 I 0 Idirect address I 11 ADDC (A)-(A) + (q + (direct) 8-11 MCS®-51 INSTRUCTION SET ADDC A,@Ri Bytes: Cycles: Encoding: Operation: 100111011 il ADDC (A)- (A) + (C) + «RU) ADDC A,#data Bytes: 2 Cycles: Encoding: Operation: AJMP I0 0 I 1 1 0 1 0 0 I Iimmediate data I ADDC (A)"-: (A) + (C) + #data addr11 . Function: Description: Example: Absolute Jump AJMP transfers program execution to the indicated address, which is formed at run-time by concatenating the high-order five bits of the PC (after incrementing the PC twice), opcode bits 7-5, and the second byte of the instruction. The destination must therefore be within the same 2K block of program memory as the first byte of the instruction following AJMP. The label "JMPADR" is at program memory location 0123H. The instru<.:tion, AJMP JMPADR is at location 0345H and will load the PC with 0123H. Bytes: Cycles: 2 2 Encoding: I alO Operation: AJMP I a9 as 0 0 0 0 1 I I a7 (PC)- (PC) + 2 (PClO-O)_ page address 8-12 a6 a5 a41 a3 a2 a1 aO I MCS®-51 INSTRUCTION SET ANL , Function: Description: Logical-AND for byte variables ANL performs the bitwise logical·AND operation between the variables indicated and stores the results in the destination variable. No flags are affected. The two operands allow six addressing mode combinations. When the destination is the accumulator, the source can use register, direct, register-indirect, or immediate addressing; when the destination is a direct address, the source can be the accumulator or immediate data. Example: Note: When this instruction is used to modify an output port, the value used as the original port data will be read from the output data latch, not the input pins. If the accumulator holds OC3H (llOOOOllB) and register 0 holds OAAH (lOlOlOlOB) then the instruction, ANL A,RO will leave 41H (OlOOOOOlB) in the accumulator. When the destination is a directly addressed byte, this ,instruction will clear cOIl}binations of bits in any RAM location or hardware register. The mask byte determining the pattern of bits to be cleared would either be a constant contained in the instruction or a value computed in the accumulator at run-time. The instruction, ANL Pl,#OlllOOllB will clear bits 7, 3, and 1 of output port l. ANL A,Rn Bytes: Cycles: Encoding: Operation: 10 ANL (A)_ (A) 1\ (Rn) 8-13 MCS®-51 INSTRUCTION SJET ANL A,~irect Bytes: Cycles: 2 Encoding: 10 Operatjpn: ANL (A)- (A) ANL 0 1 0 1 0 1 1 1\ I (direct) A,@RI Bytes: Cycles: Encoding: 10 1 0 1 1 0 1 1 i 1 Operation: ANL (A) _ ANL A,#data Bytes: Cycles: Encoding: Operation: ANL I direct address I (A) 1\ «Ri» 2 1 lii 0 ANL (A)_(A) I immedillte data I 11 0 1 0 01 1\ #data direct,A Bytes: 2 Cycles: 1 Encoding: 10 Operation: ANL 0 11 0 0 1 01 (direct)-(cJirect) direct address (A) 1\ ANL .direct,#data Bytes: 3 Cycles: 2 Encoding: 10 Operation: ANL 0 11 0 (direct) _ o (direct) I 1 1 1\ #data direct address 8-14 Iimmediate data I MCS@-51 INSTRUCTION SET ANL C, Function: Description: Example: Logical-AND for bit variables If the Boolean value of the source bit is a logical 0 then clear the carry flag; otherwise leave the carry flag in its current state. A slash ("I") preceding the operand in the assembly language indicates that the logical complement of the addressed bit is used as the source value, but the source bit itself is not affected. No other flags are affected. Only direct bit addressing is allowed for the source operand. Set the carry flag if, and only if, P 1.0 = 1, ACC. 7 = 1, and OV = 0: MOV C,Pl.O ANL C,ACC.7 ANL C,IOV ANL C,bit Bytes: Cycles: 2 2 Encoding: 11 Operation: ANL (C}-(C) II (bit) C,/bit Bytes: Cycles: Encoding: ;LOAD CARRY WITH INPUT PIN STATE ;AND CARRY WITH ACCUM. BIT 7 ;AND WITH INVERSE OF OVERFLOW FLAG 0 0 01 0 0 1 01 Ibit address I Ibit address 1 ANL Operation: CJNE 2 2 0 11 0 0 0 01 ANL (C) , , rei Function: Description: Compare and Jump if Not Equal. CJNE compares the magnitudes<>f the first two operands, and branches if their values are not equal. The branch destination is computed by adding the signed relative-displacement in the last instruction byte to the PC, after incrementing the PC to the start of the next instruction. The carry flag is set if the unsigned integer value of is less than the unsigned integer value of ; otherwise, the carry is cleared. Neither operand is affected. 8-15 MCS®-51 INSTRUCTION SET .Example: The first two operands allow four addressing mode combinations: the accumulator may be compared with any directly addre~sed byte or immediate data, and any indirect RAM location or working register can be compared with an immediate constant. The accumulator contains 34H. Register 7 contains 56H. The first instruction in the sequence, CJNE NOTJQ: R7,#60H, NOTJQ R7 = 60H. IF R7 <60H. R7>60H. JC sets the carry flag and branches to the instruction at label NOTJQ. By testing the carry flag, this instruction determines whether R7 is greater or less than 60H. If the data being presented to port I is also 34H, then the instruction, WAIT: CJNE A,P1,WAIT clears the carry flag and continues with the next instruction in sequence, since the accumulator does equal the data read from Pl. (If some other value was being input on PI, the program will loop at this point until the PI data changes to 34H.) CJNE A,direct,rel Bytes: 3 Cycles: 2 I Encoding: 11 Operation: (PC) ~ (PC) + 3 IF (A) <> (direct) 0 1 1 0 1 0 1 I Idirect address I IreI. address I THEN (PC) ~ (PC) + relative offset IF (A) < (direct) THEN (C) ~ (C) ~O 1 ELSE 8-16 MCS®-51 INSTRUCTION SET CJNE A,#data,rel Bytes: 3 Cycles: r:2_ _ _-.-_ _ _--, Encoding: 1 0 1 1 1 0 I° I Operation: (PC) - (PC) + °I Iimmediate datal I reI. address I 3 IF (A) <> data THEN (PC) - + (PC) relative offset IF (A) < data THEN (C) -1 ELSE (C) - 0 CJNE Rn,#data,rel Bytes: 3 Cycles: 2 Encoding: Operation: 11 0 1 111 r r r I Iimmediate data I Irei. address I (PC) - (PC) + 3 IF (Rn) <> data THEN (PC) IF (Rn) (PC) + relative offset < data THEN (C) -1 ELSE (C) - 0 CJNE @Ri,#data,rel Bytes: 3 Cycles: 2 Encoding: I'-I_O__I_I-LI_O___--'iI I immediate data I IreI. address I Operation: (PC) - IF «Ri» + 3 <> data (PC) THEN (PC) - IF (PC) «Ri» < data + relative offset THEN (C) - 1 ELSE (C) - 0 8-17 MCS®·51INSTRUCTION,SET CLR A Function: Description: Example: Clear Accumulator The accumulator is cleared (all bits set to zero) .. No flags are affected. The accumulator contains 5CH (OlOIlIOOB). The instruction, CLR A will leave the accumulator set to OOH (OOOOOOOOB). Bytes: Cycles: Encoding: Operation: CLR I 0 o_1_0----'0 _I_ _ _-,-I I' - I CLR (A)-O bit Function: Description: Example: Clear bit The indicated bit is cleared (reset to zero). No other flags are affected. CLR can operate on the carry flag or any directly addressable bit~ Port I has previously been written with 5DH (OlOlllOIB). The instruction, P1.2 CLR will leave the port set to 59H (OlOllOOIB). CLR C Bytes: Cycles: Encoding: II Operation: CLR (C)-O CLR bit Bytes: Cycles: 0 01 ° 0 I 1 1 2 ° 01 ° ° 1 Encoding: 11 Operation: CLR (bit)-O 01 Ibit address I 8-18 , MCS®·51 INSTRUCTION SET CPL A Function: Description: Example: Complement Accumulator Each bit of the accumulator is logically complemented (one's complement). Bits which previously contained a one are changed to zero and vice-versa. No flags are affected. The accumulator contains SCH (010111ooB). The instruction, CPL Bytes: Cycles: A will leave the accumulator set to OA3H (101oooUB). 1 1 Encoding: Operation: 11 0 O--y] CPL '(A)_, (A) CPL bit Function: Description: Example: 'Complement bit The bit variable specified is complemented. A bit which had been a one is changed to zero and vice-versa. No other flags are affected. CLR can operate on the carry or any directly addressable bit. Note: When this instruction is used to modify an output pin, the value used as the original data: will be read from the output data latch, not the input pin. Port 1 has previously been written with SBH (01011101B). The instruction sequence, CPL CPL Pl.l P1.2 will-leave the port set CPL to SBH (01011011B). ' C Bytes: Cycles: Encoding: Operation: 1'-1_0_----'11,-0_0_1---111 CPL (q---,(q MCS®~51 CPL bit Bytes: Cycles: Encoding: Operation: DA INSTRUCTION SET 2 1 I 1 0 0 1 0 I Ibit address I CPL (bit)----, (bit) A Function: Description: Decimal-adjust Accumulator for Addition DA A adjusts the eight-bit value in the accumulator resulting from the earlier addition of two variables (each in packed-BCD format), producing two four-bit digits. Any ADD or ADDC instruction may have been used to perform the addition. If accumulator bits 3-0 are greater than nine 9] v [(AC) = 1]] THEN (A3-0)_(A3-0) + 6 AND IF [[(A7.4) >9] v [(C) = 1]] THEN (A7-4)- (A7-4) + 6 8-21 DEC byte Function: Description: Example: Decrement 'I The variable indica~ed i$, decremented by 1. An original value of OOH will underflow to OFFH. No flags are affected. Four operanc! ad~ressing modes are allowed: accumulator, register, direct, or register~indirect. Note: When this instruction is used to modify an output port, the value used as the, original port data will be read from the output data latch, not the input pins. Register 0 contains 7FH (01111111B). Internal RAM locations 7EH and 7FH contain OOH and 4OH, respectively. The instrnction sequence, DEC @RO DEC RO DEC @RO will leave register 0 set to 7EH and internal RAM locations 7EH and 7FH set to OFFH and 3FH. DEC' A Bytes: Cycles: Encoding: Operation: DEC 10 0 0 11 0 1 0 0 1 DEC (A)_(A) -' 1 Rn Bytes: Cycles: Encoding: Operation: 1000111rrr DEC (Rn)_ (Rn) - 1 8-22 MCS®-S1 INSTRUCTION SET DEC direct Bytes: Cycles: 2 Encoding: !O 0 0 1!0 1 0 Operation: DEC (direct)_ (direct) - 1 DEC I! !directaddress! @Ri Bytes: Cycles: Encoding: Operation: 10001101 1 DEC «Ri»- «Ri» - 1 DIV AB Function: Description: Example: Divide DIV AB divides the unsigned eight-bit integer in the accumulator by the unsigned eight-bit integer in register B. The accumulator receives the integer part of the quotient; register B receives the integer remainder. The carry and OV flags will be cleared. Exception: if B had originally contained OOH, the values returned in the accumulator and B-register will be undefined and the overflow flag will be set. The carry flag is cleared in any case. The accumulator contains 251 (OFBH or l1111011B) and B contains 18 (12H or 000100lOB). The instruction, DIV Bytes: Cycles: . Encoding: Operation: AB will leave 13 in the accumulator (ODH or 0000llOlB) and the value 17 (11 H or 0OOI000IB) in B, since 251 = (13 x 18) + 17. Carry and OV will both be cleared. 1 4 1100010100 DIV (A)15-8 _ (B)7-0 (A) / (B) 8-23 MCS®-S1 INSTRUCTION SET DJNZ· , Function: Description: Decrement and Jump if Not Zero DJNZ decrements the location indicated by 1, and branches to the address indicated by the second operand if the resulting value is not zero. An original value of OOH will underflow to OFFH. No flags are affected. The branch destination would be computed by· adding the signed relative-displacement value in the last instruction byte to the PC, after incrementing the PC to the first byte Of the following instruction. The location decremented may be a register or directly addressed byte. Example: Note: When this instruction is used to ~odjfy an output port, the value used as the original port data will be read from the output data latch, not the input pins. Internal RAM locations 4OH, 50H, and 60H contain the values OIH, 70H, and I5H, respectively. The instruction sequence, DJNZ DJNZ DJNZ 40H,LABEL_I 50H,LABEL~ 60H,LABEL_3 will cause a jump to the instruction at label LABEL~ with the values OOH, ·6FH, and I5H in the three RAM locations. The first jump was not taken because the result was zero. This instruction provides a simple way of executing a progmm loop a given number of times, or for adding a moderate time delay (from 2 to 512 machine cycles) with a single instruction. The instruction sequence, TOGGLE: MOV CPL DJNZ R2,#8 Pl.7 R2, TOGGLE will toggle Pl.7 eight times, causing four output pulses to appear at bit 7 of output port 1. Each pulse will last three machine cycles; two for DJNZ and one to alter the pin. 8-24 MCS®-S1 INSTRUCTION SET DJNZ Rn,rel Bytes: Cycles: Encoding: Operation: 2 2 11 o 1 11 r I Idirect address I r r DJNZ (PC)- (PC) + 2 (Rn)_ (Rn) - 1 IF (Rn) > 0 or (Rn) < 0 THEN (PC)- (PC) + rei DJNZ direct,rel Bytes: 3 Cycles: 2 o Encoding: Operation: I 1 0 1 0 1 I Idirect address I IreI. address DJNZ (PC)- (PC) +2 (direct)_ (direct) - 1 IF (direct) > 0 or (direct) < '0 THEN (PC)- (PC) + reI INC Function: Description: Increment INC increments the indicated variable by 1. An original value of OFFH will overflow to OOH. No flags are affected. Three addressing modes are allowed: register. direct, or register-indirect. Note: When this instruction is used to modify an output port, the value used as the original port data wili be read from the output data latch, not the input pins. 8-25 MCS®·51INSTFlUCTION SET Example: Register 0 contains 7EH (011J.11l1OB). Internal RAM locations 7EH and 7FH contain OFFH and 40H, respectively. The instruction sequence, INC INC INC @RO RO @RO will leave register 0 set to 7FH and internal RAM loc:ations 7EH and 7FH holding (respectively) OOH and 41H. INC A Bytes: Cycles: Encoding: Operation: I0 0 0 0 I0 1 o-y] INC (A)_ (A) + INC Rn Bytes: Cycles: Encoding: Operation: INC direct Bytes: Cycles: Encoding: Operation: I0 li_r_r iJ 0 0 0 INC (Rn)-(Rn) + 2 I0 I 0 0 0 0 1 0 1 I Idirect address I INC (direct),-'- (direct) + 8-26 MCS®-51 INSTRUCTION SET INC @Ri Bytes: Cycles: ° ° 0\01 Encoding: \0 Operation: INC «Ri»_ «Ri» + 1 INC 1 DPTR Function: Description: Example: Increment Data Pointer Increment the 16-bit data pointer by I. A 16-bit increment (modulo 2 16) is performed; an overflow of the low-order byte of the data pointer (DPL) from OFFH to OOH will increment the high-order byte (DPH). No flags are affected. This is the only 16-bit register which can be incremented. Registers DPH and DPL contain 12H and OFEH, respectively. The instruction sequence, INC INC INC DPTR DPTR DPTR will change DPH and DPL to 13H and OIH. Bytes: Cycles: Encoding: Operation: 1 2 _1_0_ _0-,--10__ 0_1_1-, <-I INC (DPTR)_ (DPTR) + 1 8-27 MCS@-51 INSTRUCTION SET JB bit,rel Func::tion: Description: Example: Jump if Bit set If the indicated bit is a one, jump to the address indicated; otherwise proceed with the next instruction. The branch destination is computed by adding the signed relative-displacement in the third instruction byte to the PC" after incrementing the PC to the first byte of the next instruction. The bit tested is not modified. No flags are affected. The data present at input port 1 is llOOlOlOB. The accumulator holds 56 (010101 lOB). The instruction sequence, JB JB Bytes: Cycles: Encoding: Operation: JBC P1.2,LABELl ACC.2,LABEL2 will cause program execution to branch to the instruction at label LABEL2. 3 ,2 I0 0 I 1 0 0 0 0 0 I I bit address I I reI. address I JB (PC) - (PC) + 3 IF (bit) = 1 THEN (PC) -(PC) + reI bit,rel Function: Description: Example: Jump if Bit is set and Clear bit If the indicated bit is one, branch to the address indicated; otherwise proceed with the next instruction. In either case, clear the designated bit. The branch destination is computed by adding the signed relative-displacement in the third instruction byte to the PC, after incrementing the PC to the first byte of the next instruction. No flags are affected. Note: When this instruction is used to test an output pin, the value used as the original data will be read from the output data latch, not the input pin. The accumulator holds 56H (010101 lOB). The instruction sequence, JBC JBC ACC.3,LABELl ACC.2,LABEL2 will cause program execution to continue at the instruction identified by the label LABEL2, with the accumulator modified to 52H (OlOlOOlOB). 8-28 MC$@-511.NSTRUCTION SET Bytes: Cycles: Encoding:. Operation: JC 3 2 I° 0 0 1 I° 0 0 °I I bit address I IreI. address I JBC (PC) (PC) + 3 IF (bit) = 1 THEN (bit)_O (PC)- (PC) + reI rei Function: Description: If the carry flag is set, branch to the address indicated; otherwise proceed with Example: the next instruction. The branch destination is computed by adding the signed relative-displacement in the second instruction byte to the PC, after incrementing the PC twice. No flags are affected. The carry flag is cleared. The instruction sequence, Jump if Carry is set JC LABELl CPL C JC LABEL2 will set the carry and cause program execution to continue at the instruction identified by the label LABEL2. Bytes: Cycles: Encoding: Operation: 2 2 I° 1 0 °I° 0 0 °I I reI. address JC (PC)-(PC) + 2 IF (C) = 1 THEN (PC) 4 - (PC) + reI 8-29 I MCS®-S1 INSTRUCTION SET JMP @A+DPTR Function: Description: Example: Jump indirect Add the eight-bit unsigned contents of the accumulator with thlr sixteen-bit data pointer, and load the resulting sum to the program counter. This will be the address for subsequent instruction fetches. Sixteen-bit addition is performed (modulo 2 16): a carry-out from the low-order eight bits propagates through the higher-order bits. Neither the accumulator nor the data pointer is altered. No flags are affected. An even number from 0 to 6 is in the accumulator. The following sequence of instructions will branch to one of four AJMP instructions in a jump table starting at JMP_ TBL: MOV JMP_ TBL: Bytes: Cycles: DPTR,#JMP_TBL @A+DPTR LABELO LABELl LABEL2 LABEL3 If the accumulator equals 04H when starting this sequence, execution will jump .to label LABEL2. Remember that AJMP is a two-byte instruction, so the jump instructions start at every other address. 1 2 Encoding: 1 Operation: JMP AJMP AJMP AJMP AJMP 0 JMP (PC)~(A) + (DPTR) 8-30 MCS®-S1 INSTRUCTION SET JNB blt,rel Function: Description: Example: Jump if Bit Not set If the indicated bit is a zero, branch to the indicated address; otherwise proceed with the next instruction. The branch destination is computed by adding the signed relative-displacement in the third instruction byte to the PC, after incrementing the PC to the first byte of the next instruction. The bit tested is not modified. No flags are affected. The data present at input port 1 is 11 0010 lOB. The accumulator holds 56H (010101IOB). The instruction sequence, JNB JNB Bytes: Cycles: P1.3,LABELl ACC.3,LABEL2 will cause program execution to continue at the instruction at label LABEL2. 3 2 I Encoding: 10 Operation: JNB (PC)- (PC) + 3 IF (bit) = 0 THEN (PC) - JNC 0 1 0 0 0 0 I Ibit actdress I IreI. addres!l (PC) + reI. rei Function: Description: Example: Jump if Carry not set , If the carry flag is a zero, branch to the address indicated; otherwise proceed with the next instruction. The branch destination is computed by adding the signed relative-displacement in the second instruction byte to the PC, after incrementing the 'PC twice to point to the next instruction. Tlie carry flag is not modified. The carry flag is set. The instruction sequence, JNC CPL JNC LABELl C LABEL2 will clear the carry and cause program execution to continue at the instruction identified by the label LABEL2. 8-,31 MCS®·S1 INSTRUCTION SET Bytes: Cycles: Encoding: Operation: 2 2 [ ] I addr15 - addrsl I addr7 - addrO I addf15-0 8-34 Mcse-51 INSTRUCTION SET MOV , Function: Description: Example: Move byte variable The byte variable indicated by the second operand is copied into the location specified by the first operand. The source byte is not affected. No other register or flag is affected. This is by far tHe most flexible operation. Fifteen combinations of source and destination addressing rpodes are allowed. Internal RAM location 30H holds 4OH. The value of RAM location. 40H is lOR. The data present at input port 1 is ll00IOIOB (OCAH). MOV MOV MOV· MOV MOV MOV RO,#30H A,@RO Rl,A R,@Rl @Rl,Pl ,P2, PI ;RO<= 30H ;A <. = 40H ;Rl < = 40H ;B < = IOH ;RAM (40H) < = OCAH ;P2 #OCAH leaves the value 30H in register 0, 40H in both the accumulator and register 1, lOH in register B, and OCAH (1IOO1010B) both in RAM location 40H and out· put on port 2. MOV A,Rn Bytes: Cycles: 1 1 Encoding: 11 Operation: MOV (A)_(Rn) 011 I r r r I 0 11 *MOV A,dlrect Bytes: 2 Cycles: 1 Encoding: 11 Operation: MOV (A)- (direct) . 01 0 Idirect address I *II/IOV A,ACC Is not a valid Instruction. 8-35 MCS~-51INSTRUCTION MOV SEr A,@Ri Bytes: Cycles: Encoding: Operation: 11 01 0 1 1 MOV (A)_ «Ri» MOV A,#data Bytes: 2 Cycles: Encoding: Operation: 1 0 110 oj] Iimmediate data I MOV (A)-#data MOV Rn,A Bytes: Cycles: Encoding: Operation: 1 1 11 11 r r r 011 r r r Idirect addr. I r r r Iimmediate data I 1 MOV (Rn)_(A) MOV Rn,direct Bytes: 2 Cycles: 2 Encoding: Operation: 11 0 MOV (Rn)_(direct) MOV, Rn,#data Bytes: 2 Cycles: Encoding: Operation: 10 111 MOV (Rn)_#data 8-36 MCS@·51INSTRUCTION SET MOV dlrect,A Bytes: 2 1 Cycles: I Encoding: 11 Operation: MOV (direct)_ (A) MOV 1 0 11 Operation: MOV (direct)-(Rn) 0 0 01 1 r 11 Operation: MOV (direct) - 0 0 01 0 I I direct address I 1 0 1I I dir. addr. (src) I Idir. addr. (dest)I (direct) direct,@Ri Bytes: 2 Cycles: 2 Encoding: 11 Operation: MOV (direct) -«Ri» MOV r r dlrect,dlrect Bytes: 3 Cycles: 2 Encoding: MOV I direct address I 11 dlrect,Rn Bytes: 2 Cycles: 2 Encoding: MOV 1 0 0 0 01 0 1 1 i , Idirect addr.' direct,#data Bytes: 3 Cycles: 2 Encoding: 10 Operation: MOV (direct)_#data 1 10 1 0 1 I Idirect address I Iimmediate data I 8-37 MCSI8l-S1 INSTRUCTION SET MOV @Ri,A Bytes: Cycles: Encoding: 11 1 1 0 1 1 i 1 I Operation: MOV «Ri»_(A) , MOV @Ri,direct Bytes: 2 Cycles: 2 Encoding: . Operation: MOV 01 0 1 1 i I I 1 1 immediate direct addr ·1 MOV «Ri»_(direct) @Ri,#data Bytes: 2 Cycles: Encoding: Operation: MOV 11 0 1 0 1. 1 1 1 0 1 1 i MOV «RI» _ data 1 #data , Function: Description: Example: Move bit data The Boolean variable indicated by the second operand is copied into the location specified by the first operand. One of the operands must be the carry flag; the other may be any directly addressable bit. No other register or flag is affected. The carry flag is originally set. The data present at input port 3 is llOOO101B. The data previously written to output port 1 is 35H (OOl10101B). MOV P1.3,C MOV C,P3.3 MOV P1.2,C will leave the carry cleared and change port 1 to 39H (OOll1001B). 8-381 MC$@·51INSTRUCT,ON SeT MOV C,blt Bytes: Cycles: 2 1 Encoding: 11 Operation: MOY (C)-(bit) MOV bit,C Bytes: Cycles: 0 01 0 0 I· bit address 1 01 I bit ~ddress I 2 2 Encoding: 11 Operation: MOY (bit)-(C) MOV 1 01 0 0 1 10 0 DPTR,#data16 Function:. Description: Example: Load Data Pointer with a 16-bit constant The data pointer is loaded with the 16-bit constant indicated. The 16-bit constant is loaded into the second and third bytes of the instruction. The second byte (DPH) is the high~order byte, while the third byte (DPL) holds the loworder byte. No flags are affected. This is the only instruction which moves 16 bits of data at once. The instruction, MOY Bytes: Cycles: Encoding: Operation: DPTR,#1234H will load the value 1234H into the data pointer: DPH will hold 12H and DPL will hold 34H. 3 2 fT 0 0 I 1 0 0 0 0 I Iimmed. data15 • 81 Iimmed. data7 - 0 I MOY (DPTR)_ #dataI5-0 DPH 0 DPL-.-.-.#dataI5_8 0 #data7_0 8-39 MOS®·S1INSTRUCTIONse:r. MOVC A,@A+ Function: Description: Example: Move Code byte The MOVC instructions load the accumulator with a code byte, or constant from program memory. The address of the byte fetched is the sum of the original unsigned eight-bit accumulator contents and the contents of a sixteenbit base register, which may be either the data pointer or th~ PC. In the latter case, the PC is incremented to tlie address of the following instruction before being added with the accumulator: otherwise the base register is not altered. Sixteen-bit addition is performed so a carry-out from the low-order eight bits may propagate through higher-order bits. No flags are affected. . A value between 0 and 3 is in the accumulator. The following instructions will translate the value in the accumulator to one of four values defined by the DB (define byte) directive. REL_PC: INC A A,@A+PC MOVC RET DB 66H 77H DB 88H DB 99H DB , If the subroutine is called with the accumulator equal to 01 H, 'it will return with 77H in the accumulator. The INC A-before the MOVC instruction is needed to "get around" the RET instruction above the table. If several bytes of code separated the MOVC from the table; the corresponding number would be added to the accumulator instead. MOVC A,@A+ DPTR Bytes: 1 Cycles: 2 Encoding: Operation: MOVC (A)-«A) + (DPTR» 8-40 MCS®·51 INSTRUCTION SET MOVC A,@A + PC 1 Bytes: Cycles: 2 Encoding: 11000100111 Operation: Move (PC)-(PC) + 1 (A)- «A) + (PC» MOVX (dest·byte>, Function: Description: Move External The MOVX instructions transfer data between the accumulator and a byte of external data memory, hence the "X" appended to MOV. There are two types of instructions, differing in whether they provide an eight-bit or sixteen-bit indirect address to the external data RAM. In the first type, the contents of RO or RI in the current register bank provide an eight-bit address multiplexed with data on PO. Eight bits are sufficient for external I/O expansion decoding Of a relatively small RAM array. For somewhat larger arrays, any output port pins can be used to output higher-order address bits. These pins would be controlled by an output instruction preceding the MOVX. In the second type of MOVX instruction, the data pointer generates a sixteenbit address. P2 outputs the high-order eight address bits (the contents of DPH) while PO multiplexes the low-order eight bits (DPL) with data. The P2 Special Function Register retains its previous contents while the P2 'output buffers are emitting the contents of DPH. This form is faster and more efficient when accessing very large data arrays (up to 64K bytes), since no additional instructions are needed to set up the output ports. It is possible in some situations to mix the two MOVX types. A large RAM ar- ray with its high-order address lines driven by P2 can be addressed via the data pointer, or with code to output high-order address bits to P2 followed by a MOVX instruction using RO or RI. 8-41 MCS®·51 INSTRUCTION SET Example: An external 256 byte RAM using multiplexed address/data lines (e.g., an Inte1® 8155 RAM/I/O/Timer) is connected to the 8051 Port O. Port 3 provides control lines for the external RAM. Ports 1 and 2 are used for normal I/O. Registers 0 and 1 contain 12H and 34H. Location 34H of the external RAM holds the value 56H. The instruction sequence, MOVX MOVX A,@Rl @RO,A copies the value 56H into both the accumulator and external RAM location 12H. MOVX A,@Ri Bytes: 2 Cycles: Encoding: 11 Operation: MOVX (A)_«Ri» 1 1 01 0 0 1 MOVX A,@DPTR Bytes: 1 Cycles: 2 Encoding: 11 Operation: MOVX (A)_«DPTR» 1 1 01 0 0 0 01 MOVX @Ri,A Bytes: 1 Cycles: 2 I Encoding: 11 Operation: . MOVX· «Ri»- (A) 1 1 1 0 0 1 MOVX @DPTR,A Bytes: 1 Cycles: 2 Encoding: 11 Operation: MOVX (DPTR)_(A) 1 1 0 0 0 01 8-42 MCS@·51 INSTRUCTION SET MUL AB Function: Description: Example: Multiply MUL AB multiplies the unsigned eight-bit integers in the accumulator and register B. The low-order byte of the sixteen-bit product is left in the accumulator, and the high-order byte in B. If the product is greater than 255 (OFFH) the overflow flag is set; otherwise it is cleared. The carry flag is always cleared. Originally the accumulator holds the value 80 (50H). Register B holds the value 160 (OAOH). The instruction, MUL AB will give the product 12,800 (3200H), so B is changed to 32H (OOII00IOB) and the accumulator is cleared. The overflow flag is set, carry is cleared. Bytes: Cycles: I 4 01 0 Encoding: Operation: I 0 01 MUL (A)7-0-(A) X (8) (B)15-8 \ 8-43 MC$@:-51INSt:RUCTION SE;T NOP Function: Description: Example: No Operation Execution continues at the following instruction. Other than the PC, no registers or flags .are affected. It is desired to produce a low-going output pulse on bit 7 of port 2 lasting exactly 5 cycles. A simple SETB/CLR sequence would generate a one-cycle pulse, so four additional cycles must be inserted. This may be done (assuming no interrupts are enabled) with the instruction sequence, CLR NOP NOP NOP NOP SETB P2.7 P2.7 Bytes: Cycles: Encoding: Operation: 10 0 0 010 0 0 01 NOP (PC)- (PC) + 1 8-44 MCS®-51 INSTRUCTION SET ORL (src·byte> Function: Description: Logical-OR for byte variables ORL performs the bitwise logical-OR operation between the indicated variables, storing the results in the destination byte. No flags are affected. The two operands allow six addressing mode combinations. When: thedestination is the accumulator, the source can use register, direct, register-indirect, or immediate addressing; when the destination is a direct address, the source can be the accumulator or immediate data. - Example: Note: When this instruction is used to modify an output port, the value used as the original port data will be read from the output data latch, not the input pins. If the accumulator holds OC3H (IlOOOOIlB) and RO hol Function: Description Example: Logical-OR for bit variables Set the carry flag if the Boolean value is a logical I; leave the carry in its current state otherwise. A slash ("I") preceding the operand in the assembly language indicates that the logical complement of the addressed bit is·used as the 1J0urce value, but the source bit itself is not affected. No other flags are affected. Set the carry flag if and only if Pl.O :; 1, ACC.7 = 1, or OV = 0: MOV C,Pl.O ORL C,ACC.7 ORL C,IOV ORL C,bit Bytes: Cycles: Encoding: Operation: ;LOAD CARRY WITH INPUT PIN PlO ;OR CARRY WITH THE ACC. BIT 7 :OR CARRY WITH THE INVERSE OF OV 2 2 10 1 I0 0 1 01 I bit address I ORL (C)-(C) v (bit) ORL C,/bit Bytes: Cycles: Encoding: Operation: 2 2 11 0 01 0 0 0 01 I bit address 1 ORL (C)- (C) v (bit) POP. direct Function: Description: Pop from stack. . . The contents of the internal RAM location addressed by the stack pointer is read, and the stack pointer is decremented by one. The value read is the transfer to the directly addressed byte indicated. No flags are affected. 8-47 MCS®-51 INSTRUCTION SET Example: The stack pointer originally contains the value 32H, and internal RAM locations 30H through 32H contain the values 20H, 23H, and OlH, respectively. The instruction sequence, POP POP DPH DPL will leave the stack pointer equal to the value 30H and the data pointer set to 0123H. At this point the instruction, POP SP will leave the stack pointer set to 20H. Note that in this special case the stack pointer was decremented to 2FH. before being loaded with the value popped (20H). Bytes: Cycles: 2 2 o Encoding: Operation: PUSH I 1 0 O· 0 0 I Idirect address POP (direct) ____ «SP» (SP)_(SP) - 1 direct Function: Description: Example: Push onto stack The stack pointer is incremented by one. The contents of the indicated variable is then copied into the internal RAM location addressed by the stack pointer. Otherwise no flags are affected. On entering an interrupt routine the stack pointer contains 09H. The data pointer holds the value 0123H. The instruction sequence, PUSH PUSH DPL DPH will leave the stack pointer set to OBH and store 23Hand OlH in internal RAM locations OAH apd OBH, respectively. Bytes: Cycles: 2 2 I Encoding: o Operation: PUSH (SP)-(SP) + «SP»_ (direct) 0 0 0 0 0 I Idirect address I 8.. 48 MCS®·S1 INSTRUCTION SET RET Function: Description: Example: Return from subroutine, RET pops the high- and low-order bytes of the PC successively from the stack, decrementing the stack pointer by two. Program execution continues at the resulting address, generally the instruction immediately following an ACALL or LCALL. No flags are affected. The stack pointer originally contains the value OBH. Internal RAM locations OAH and OBH contain the values 23H and OlH, respectively. The insttuction, RET will leave the stack pointer equal to the value 09H. Program execution will continue at location 0123H. Bytes: Cycles: 1 2 Encoding: 10 0 Operation: RET (PC 15-8)- «SP» (SP)-(SP) - 1 (PC7-0)_«SP» , (SP) __ (SP) - 1 010 0 1 0 RETI Function: Description: Return from interrupt RETI pops the high- and low-order bytes of the PC successively from the stack, and restores the interrupt logic to accept additional interrupts at the same priority level as the one just processed. The stack pointer is left decremented by two. No other registers are affected; the PSW is not automatically restored to its pre-interrupt status. Program execution continues at the resuIting address, which is generally the instruction immediately after the point at which the interrupt request was detected. If a lower- or same-level interrupt had been pending when the RETI instruction is executed, that one instruction will be executed before the pending interrupt is processed. 8-49 MCS®·5.1INSTRUCTION SeT Example: The stack pointer originally contains the value OBH. An interrupt was detected during the instruction ending at location 0122H. Internal RAM locations OAH and OBH contain the values 23H and OlH, respectively. The instruction, RET! will leave the stack pointer equal to 09H and return program execution to location 0123H. Bytes: Cycles: Encoding: Operation: 1 2 10 0 RET! (PC 15.8)- «SP» (SP)- (SP) - 1 (PC7-0) _«SP» (SP)- (SP) - 1 8-50 · MCS®-S1 INSTRUCTION SET RL A Function: Description: Example: Rotate accumulator Left The eight bits in the accumulator are rotated one bit to the left. Bit 7is rotated into the bit 0 position. No flags are affected. The accumulator holds the value OC5H (1IoooI01B). The instruction, RL A leaves the accumulator holding the value 8BH (IOOOI011B) with the carry unaffected. Bytes: Cycles: 1 1 Encoding: 100101001 Operation: RL (An + })_ (An) (AO)-(A7) RLC 11 n=0-6 A Function: Description: Example: Rotate accumulator Left through the Carry flag The eight bits in the accumulator and the carry flag are together rotated one bit . to the left. Bit 7 moves into the carry flag; the original state of the carry flag moves into the bit 0 position. No other flags are affected. The accumulator holds the value OC5H (11000101 B),and the carry is zero. The instruction, RLC A leaves the accumulator holding the value 8BH (loooI0IOB) with the carry set. Bytes: Cycles: 1 1 Encoding: 10 0 Opera'tion: RLC (An + 1 ) - (An) (AO)--(C) (C)--(A7) 11001 11 n=0-6 8-51 MCS®-S1 INSTRUCTION SeT RR A Function: Description: Example: Rotate accumulator Right The eight bits iri'the accumulator are rotated one bit to the right. Bit 0 is rotated into the bit 7 position. No flags are affected. The accumulator holds the value OC5H (llOOOlOlB). The instruction, RR A leaves the accumulator holding the value OE2H (lll000lOB) with the carry unaffected. Bytes: Cycles: 1 1 Encoding: 10 0 0 010 0 1 1 Operation: RR (An)_ (An + t) (A7)_(AO) RRC I n=O-6 A Function: Description: Example: Rotate accumulator Right through Carry flag The eight bits in the accumulator and the carry flag are together rotated one bit . to the right. Bit 0 moves into the carry flag; the original value of the carry flag moves into the bit 7 position: No other flags are affected. The accumulator holds the value OC5H (1100010lB), the carry is zero. The instruction, RRC A leaves the accumulator holding the value 62 (0110001OB) with the carry set. Bytes: Cycles: 1 1 Encoding: 10001100111 Operation: RRC (An)_ (An + 1) (A7)_(C) (C)_(AO) n=0-6 8-52 MCS®-S1 INSTRUCTION SET SETB Function: Description: Example: Set Bit SETB sets the indicated bit to one. SETB can operate on the carry flag or any directly addressable bit. No other flags are affected. The carry flag is cleared. Output port 1 has been written with the value 34H (00110100B). The instructions, SETB SETB. .C Pl.O will leave the carry flag set to 1 and change the data output on port 1 to 35H (00110101 B). C Bytes: Cycles: SETB Encoding: 11 Operation: SETB (C)--1 bit Bytes: Cycles: 0 1 0 0 1 1 11 1 0 0 1 1 01 SETB Encoding: Operation: 2 11 0 Ibit address I SETB (bit)~1 SJMP rei Function: Description~ Short Jump Program control branches unconditionally to the address indicated. The branch destination is computed by adding the signed displacement in the second instruction byte to the PC, after incrementing the PC twice. Therefore, the range of destinations allowed is from 128 bytes preceding this instruction to 127 bytes following it. 8-53 MCS®'·51 INSTRUC:rIONSET Example: The label "RELADR" is assigned to an instruction at program memory location 0123H. The instruction, SJMP RELADR will assemble into location OlOOH. After the instruction is executed, the PC will contain the value 0123H. (Note: Under the above conditions the instruction following SJMP will be at 102H. Therefore, the displacement byte of the instruction will be the relative offset (0123H-0102H) = 21H. Put another way, an SJMP with a displacement of OFEH would be a one-instruction infinite loop.) Bytes: Cycles: 2 2 I Encoding: 11 Operation: SJMP (PC)- (PC) + 2 (PC) - - (PC) + rei 0 0 0 0 0 y-DJ I reI. address I 8-54 MCS®·51 INSTRUCTION SET SUBB A, (src·byte> Function: Description: Subtract with borrow SUBB subtracts the indicated variable and the carry flag together from the accumulator, leaving the result in the accumulator. SUBB sets the carry (borrow) flag if a borrow is needed for bit 7, and clears C otherwise. (If C was set be/ore executing a SUBB instruction, this indicates that a borrow was needed for the previous step in a multiple precision subtraction, so the carry is subtracted from the accumulator along with the source operand.) AC is set if a borrow is needed for bit 3, and cleared otherwise. OV is set if a borrow is needed into bit 6, but not into bit 7, or into bit 7, but not bit 6. When subtracting signed integers OV indicates a negative number produced when a negative value is subtracted from a positive value, or a positive result when a positive number is subtracted from a negative number. Example: The source operand allows four addressing modes: register, direct, registerindirect, or immediate. ' The accumulator holds OC9H (11001001B), register 2 holds 54H (01010100B), and the carry flag is set. The instruction, SUBB A,R2 will leave the value 74H (01110100B) in the accumulator, with the carry flag and AC cleared but OV set. Notice that OC9H minus 54H is 75H. The difference between this and the above result is due to the carry (borrow) flag being set before the operation. If the state of the carry is not known before starting a single or multiple-precision subtraction, it should be explicitly deared by a CLR C instruction. SUBB A,Rn Bytes: Cycles: Encoding: Operation: 1 r r r I SUBB (A)_ (A) - (C) - (Rn) 8-55 MCS@)-51INSTRUCTION SET SUBB A,direct Bytes: 2 Cycles: ° 0 1, I° 1 0 1 I Idire~t address I Encoding: 11 Operation: SUBB (A)-- (A) - (C) - (direct) SUBB A,@RI Bytes: Oycles: Encoding: 1100 tlo 1 1 Operation: SUBB (A).-.- (A.) - (C) - «Ri» SUBB A,#data' Bytes: 2 'Cycles: 1 ° ° 1 I°'1 °I Iimmediate data I Encoding: 11 Operation: SUBB (A)--:'-(A) - (C) - #data SWAP 0 A Function: Description: Example: Swap nibbles within the Accumulator, SWAP A interchanges the low- and high.order nibbles (four-bit fields) of the acc~mulator (bits 3-0 and bits 7-4). The operation can also be thought of as a four-bit rotate instruction. No flags are affected. The accumulator holds the value OCSH (11000101B). The instruction, SWAP A leaves the accumulator holding the value 5CH (01011100B). Bytes: Cycles: Encoding: Operation: 1 L 1L.. ,. 1____ 0 _0-,1,-0_,_1_0_0--,1 SWAP (A3-0)~(A7.4), (A7-4)_(A3-0) 8-&6 MCS®-S1 INSTRUCTlo.N SET XCH A, Function: Description: Example: Exchange Accumulator with byte variable XCH loads the accumulator with the contents of the indicated variable, at the same time writing the original accumulator contents to the indicated variable. The source/destination operand can use register, direct, or register-indirect addressing. RO contains the address 20H. The accumulator holds the value 3FH (001111118). Internal RAM location 20H holds the 'value 75H (01110101B). The instruction, A,@RO XCH will leave RAM location 20H holding the values 3FH (001111118) and 75H (011101018) in the accumulator. XCH A,Rn Bytes: Cycles: Encoding: o.peration: OOl l r r r l XCH (A)~(Rn) XCH A,direct Bytes: 2 Cycles: o Encoding: Operation: 0I0 1 0 11 I direct address I XCH (A)~(direct) XCH A,@Ri Bytes: Cycles: o Encoding: Operation: 0 10 XCH (A)~«Ri» 8-57 MCS®-51 INSTRUCTION SET XCHD A,@Ri Function: Description: Example: Exchange Digit XCHD exchanges the low-order nibble of the accumulator (bits 3-0), generally representing a hexadecimal or BCD digit), with that of the internal RAM loca~ tion indirectly addressed by the specified register. The high-order nibbles (bits 7-4) of each register are not affected. No flags are affected. . RO contains the address 20H. The accumulator holds the value 36H (001101 lOB). Internal RAM location 20H holds the value 75H (01110101B). The instruction, XCHD A,@RO will leave RAM location 20H holding the value 76H (OlllOllOB) and 35H (001 10101 B) in the accumulator. Bytes: Cycles: 1 Encoding: 11 Operation: XCHD 101 1 0 (A3-0)~«Ri3-0» 8-58 MCS@-S1INSTRUCTION SET XRL , (src-byte> Functi(»n: Description: Logical Exclusive·OR for byte variables XRL performs the bitwise logical Exclusive-OR operation between the indicated variablj::s, storing the results in the destination. No flags are affected. The two operands allow six addressing mode combinations; When the destination is theaccumuJator, the source can use register, direct, register·indirect, Of immediate addressing; when the destination is a direct address, the source can be the accumulator or immediate data. Example: (Note: When this instruction is used to· modify an output port, the value used as the original port' data will be read from the output data latch, not the input pins.) If the accumulator holds OC3H (llOOOOllB) and register 0 holds OAAH (1OIOIOIOB) 'then the instruction, XRL A,RO will leave the accumulator holding the value 69H (OllOIOOIB). When the destination is a directly addressed byte, this instruction can complement combinations of bits in any RAM location or hardware register. The pattern of bits to be complemented is then d'etermined by a mask byte, either a constant contained in the instruction or a variable computed in the accumulator at run-time. The instruction, XRL PI,#OOllOOOIB . will complement bits 5, 4, and 0 of output port l. XRL A,Rn Bytes: Cycles: Encoding: Opera~ion: 10 A,direct Bytes: Cycles: I Encoding: Operation: r r r XRL (A)_ (A) XRL 011 "t (Rn) 2 1 1'-____ 0 0. 1_0 . . __ ~ XRL (A)_(A) "t Idirect address I (direct) 8·59 XRL A,@RI Bytes: Cycles: ., 1 1 ",' Encoding: 10 Operation: XRL 1 -I ,°1- 0 1 (A)-(A) 'V XRL A,#data Bytes: Cycles: Encoding: Operation: I, ': 1' i '. «It» " '\! !, " :';-;' " , 2 1 01 0 1 ° 01 10 1'immediate data 1 XRL (A)_(A) 'V #data XRL direct,A Bytes: Cycles: 2 1 Encoding: 10 Operation: XRL 1 1 01 0 ° (direct)_ (direct) XRL dlrect,#data Bytes: 3 Cycles: 2 Encoding: Operation: 1 'V 01 1 direct address 1 (A) 0____0-'1_0_0___1.. .,1 1direct address I 1. . . XRL (direct)_ (direct) 'tf #data 8-60 1 immediate data I " ' MCS®~51 Data Sheets 9 MCS®-S1 a-BIT CONTROL-ORIENTED MICROCOMPUTERS S031/S051 S031 AH/S051 AH S032AH/S052AH S751H/S751H-12 • • • • • • • • • • High Performance HMOS Process Internal Timers/Event Counters 2-level Interrupt Priority Structure 32 I/O lines (Four S-Bit Ports) 64K Program Memory Space Boolean Processor Bit-Addressable RAM Programmable Full Duplex Serial Channel 111 Instructions (64 Single-Cycle) 64K Data Memory Space • Security Feature Protects EPROM Parts Against Software Piracy The MCS®-51 products are optimized for control applications. Byte-processing and numerical operations on small data structures are facilitated by a variety of fast addressing modes for accessing the internal RAM. The instruction set provides a convenient menu of 8-bit arithmetic instructions, including multiply and divide in structions. Extensive on-chip support is provided for one-bit variables as a separate data type, allowing direct bit manipulation and testing in control and logic systems that require Boolean processing. Internal Memory Device Program Data 8052AH 8051AH 8051 8032AH 8031AH 8031 8751H 8751H-12 8K x 8 ROM 4K x 8 ROM 4K x 8 ROM none none none 4K x 8 EPROM 4K x 8 EPROM 256 x 8 RAM 128 x 8 RAM 128 x 8 RAM 256 x 8 RAM 128 x 8 RAM 128x8RAM 128 x 8 RAM 128 x 8 RAM Timersl Event Counters 3 2 2 3 2 2 2 2 x x x x x x x x 16-Bit 16-Bit 16-Bit 16-Bit 16-Bit 16-Bit 16-Bit 16-Bit Interrupts 6 5 5 6 5 5 5' 5 The 8751 H is an EPROM version of the 8051 AH; that is, the on-Chip Program Memory can be electrically programmed, and can be erased by exposure to ultraviolet light. It is fully compatible with its predecessor, the 8751-8, but incorporates two new features: a Program Memory Security bit that can be used to protect the EPROM against unauthorized read-Qut, and a programmable baud rate modification bit (SMOD). SMOD is not . . present in the 8751 H-12. 9-1 803118051 • 8031 AH/8051 AH 8032AH/8052AH • 8751 H/8751 H·12 ......, Vcc r ------'-----;.tl~~:;_ '~Wti-----------'--l p~ Figure 1. MCS®-51 Block Diagram PIN DESCRIPTIONS VCC VSS Port 0 also receives the code bytes during programmirig of the EPROM parts, and outputs the code bytes during program verification of the ROM and EPROM parts. External pullups. are required during program verification. Circuit ground. Port 1 PortO Port 1 is an a-bit bidirectional lID port with Internal pullups. The Port 1 output buffers can sink/source 4 LS TTL inputs. Port 1 pins that have 1s written to them are pulled high by the internal pullups, and in that state can be used as inputs. As inputs, Port 1 pins that are externally being pulled low will source current (ilL, on the data sheet) because of the internal pullups. Supply voltage. Port 0 is an a-bit open drain bidirectional lID port. As an output port each pin can sink a LS TTL inputs. Port 0 pins that have 1s written to them float, and in that state can be used as high-impedance inputs. Port 0 is also the multiplexed low-order address and data bus during accesses to external Program and Data Memory. In this application it uses strong internal pullups when emitting 1s, and can source and sink a LS TTL inputs. Port 1 also receives the low-order address bytes during programming of the EPROM parts and during program verification of the ROM and EPROM parts. 9-2 803118051 • 8031AHI8OS1AH 8032AH/80S2AH • 8751H/8761H·12 =:... . . . .~~,~,,...,.=~,..~'~"":["'oA-i.fi.~~i..,..,.i,.....,lli~i!;,........... r-[-{ vee T2I!X 1'1.1 1'1.2 1'1.3 P1A 1'1.& P1.s 1'1.7 R8T RXDP3.0 lXD 1'3.1 IIi'I'ti P3.2 iR'fi Pu topu PO.OADO PO.l AlII 1'0.2 AlIa PO.3 AlIa POAAD4 PO.I ADs PO.lADe PO.7,ArR UMIo ALIi/IIIfilII _,. .PU PtAA12 PUAl1 XTAL2 XTALI VS8 N. r:!-: POS 111.7 :€] ~~: flOl ..., ~!] [~: ".7 • PU JiJ r-- I'l Ne J~] ~~: He ]!:] [~: ALE d'_ PI.2 :1!:] pUAU 1'2.5 A13 W!lpu r:!t: ):] Pl1 IIftii T1PU L·J. LSJ L~ LJJ LiJ L'J ~J ~ ~ ~~ ~ P1" p,. :( ) -12-1'1'0- _ONLY f~: mR PU :,~] r!~ Pl7 nc 1!] {:!f 1'21 P2.2Al0 1'2.1 Q P2,oQ Pad Figure 2. MCS~-51 In the 8032AH and 8052AH, Port 1 pins P1.0 and P1.1 also serve the T2 and T2EX functions, respectively. Port 2 / Port 2 is an 8-bit bidirectional I/O port with internal pullups. The Port 2 output buffers can sink/sOurce 4 LS TTL inputs. Port 2 pins that have 1s written to them are pulled high by the Intemal pullups, and In that state can be used as inputs. As inputs, Port 2 pins that are externally being' pulled low will source current (ilL, on the data sheet) because of the internal pullups. Port 2 emits the high-order address byte during fetches from external Program Memory and during accesses to external Data Memory that use 16-bit addresses (MOV>< @DPTR). In this application it uses strong internal pullups when emitting 1s. During 'accesses to external Data Memory that use a·bit addresses (MOVX @Ri), Port 2 emits the contents of the P2 SpeciEiI Function Register. Port 2 also receives the high-order address bits during programming of the EPROM parts and during program verification of the ROM and EPROM parts. Pin Connections Port 3 Port 3 is an 8-bit bidirectional I/O port with internal pullups. The Port 3 output buffers can sink/source 4 LS TTL inputs. Port 3 pins that have 1s written to them are pulled high by the internal pullups, and in that state can be used as inputs. As inputs, Port 3 pins that are externally being pulled low will source current (ilL, on the data sheet) because of the pullups. Port :3 also serves the functions of various special features of the MeS-51 Family, as listed below: Port Pin P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 Alternative Function RXO (serial input p()rt) TXD {Serial output port) 1m'O (external interrupt 0) jJij'ff (external interrupt 1) TO, (Timer 0 external input) T1 (Timer 1 external input) WR (external data memory write strobe) Jm (external data memory read strobe) . .8031/S051 • S031AH/S051AH S0324H/S052AH • 8751·H/S751H-12 RST Note, hOwever, that if the Security Bit in the EPROM devices is programmed, the device will not fetch code from any location in external Program Memory. Reset input. A high on this pin for two machine cycles while the oscillator is running resets the device. This pin also receives the 21 V programming supply voltage (VPP) durir;lg programming of the EPROM parts. ALE/PROG Address Latch Enable output pulse for latching the low byte of the address during accesses to external memory. ALE can drive 8 LS TTL il utS. This pin is also the program pulse input (PR G) during programming of the EPROM parts'. XTAL1 6 Input to the inverting oscillator amplifier. XTAL2 In normal operation ALE is emitted at a constant rate of '/6 the oscillator frequency, and may be used for external timing or clocking purposes. Note, however, that one ALE pulse is skipped during each access to external Data Memory. Output from the inverting oscillator amplifier. OSCILLATOR CHARACTERISTICS XTAL 1 and XTAL2 are the input and output, respectively, of an inverting amplifier which can be configured for use as an on-chip oscillator, as shown in Figure 3. Either a quartz crystal or ceramic resonator may be used. More detailed information concerning the use of the on-chip oscillator is available in Application Note AP-155, "Oscillators for Microcontrollers." Program Store Enable is the read strobe to external Program Memory. PSEN can drive 8 LS TTL inputs. When the device is executing code from external Program Memory, PSEN is activated twice each machine cycle, except that two PSEN activations are skipped during each access to external Data Memory. To drive the device from an external clock source, XTAL 1 should be grounded, while XTAL2 is driven, as shown in Figure 4. There are no requirements on the duty cycle of the external clock signal, since the input to the internal clocking circuitry is through a divide-by-two flip-flop, but minimum and maximum high and low timesspecified on the Data Sheet must be observed. EANPP External Access enable EA must be externally held low in order to enable any MCS-51 device to fetch code from external Program Memory locations 0 to OFFFH (0 to 1 FFFH, in the 8032AH and 8052AH). C2 ,......--tl~-+---t XTAL2 EXTERNAL OSCILLATOR - - - - t XTAL2 SIGNAL o t---tl~--e---t XTALl Cl - XTALl t----~---tvss ....- - t vss Cl, C2 = 30 pF ",10 pF FOR CRYSTALS = 40 pF "'10.pF FOR CERAMIC RESONATORS Figure 3,. Oscillator Connections Figure 4. External Drive Configuration 9-4 8031/8051 e8031 AH/8051 AH 8032AH/8052AH e 8751H/8751H-12 inter ABSOLUTE MAXIMUM RATINGS· -NOTICE: Stresses above those listed under "Absolute Maximum Ratings" may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or any other conditions above those indicated in the operational sections of this specification is not implied. Exposure to absolute maximum rating conditions for extended periods may affect device reliability. Ambient Temperature Under Bias ... O·C to 70·C Storage Temperature . , ... -65·C to + 150·C Voltage on EANPP Pin to VSS . - 0.5V to + 21.5V Voltage on Any Other Pin to VSS. - 0.5V to + 7V Power Dissipation . . . . . . . . . . . . . . . . 1 .5W D.C. CHARACTERISTICS: (TA = O·C to 70°C; VCC = 5V ± 10%; VSS = OV) Symbol Min Max Unit -0.5 0.8 V 0 0.7 V Input High Voltage (Except XTAL2, RST) 2.0 VCC+0.5 V 2.5 VCC+0.5 V XTAL1 0.45 V IOL = 1.6 mA 0.60 0.45 V V IOL IOL 3.2 mA 2.4 mA 0.45 = = = Parameter VIL Input· Low Voltage (Except EA Pin of 8751H,8751H-12) V/.L1 Input Low Voltage to EA Pin of 8751 H, 8751 H-12 VIH VIH1 Input High Voltage to XTAL2, RST VOL Output Low Voltage (Ports 1, 2, ~)* VOL1 Output Low Voltage (Port 0, ALE, PSEN)8751H,8751H-12 Test Conditions = VSS V IOL VOH Output High Voltage (Ports 1, 2, 3) 2.4 V IOH = -80/LA VOH1 Output High Voltage (Port 0 in External Bus Mode, ALE, PSEN) 2.4 V IOH ilL Logical 0 Input Current (Ports 1, 2, 3) 8032AH, 8052AH All Others All Others 3.2 mA = - 400 /LA -800 -500 !LA Logical 0 Input Current to EA Pin of 8751H, 8751H-12 Only -15 mA 1IL2 Logical 0 Input Current (XTAL2) -3.2 mA Vin = 0.45 V III Input Leakage Current (Port 0) . 8751H, 8751H-12 All Others ±100 ±10 /LA !LA 0.45 < Vin < VCC 0.45 < Vin < VCC /LA 1IL1 /LA Vin = 0.45 V Vin = 0.45 V IIH Logical 1 Input Current to EA Pin of 8751H,8751H-12 500 IIH1 Input Current to RST to Activate Reset 500 !LA Vln < (VCC - 1.5V) ICC Power Supply Current: 8031/8051 8031 AH/8051 AH 8032AH/8052AH 8751H/8751 H-12 160 125 175 250 mA mA mA mAo All Outputs Disconnected; EA = VCC CIO Pin Capacitance 10 pF test freq = 1MHz -Note: Capacitive loading on Ports 0 and 2 may cause spurious noise pulses to be superimposed on the VOLs of .ALE and Ports 1 and 3. The noise is due to external bus capacitance discharging into the Port 0 and Port 2 pins when these pins make 1-to-0 transitions during bus operations. In the worst cases.(capacitive loading> 100 pF), the noise pulse on the ALE line may exceed O.BV. In such cases it may be desirable to qualify ALE with a Schmitt Trigger, or use an address latch with a Schmitt Trigger STROBE input. 9-5 803118051 • 803:1 AHf80S1AH 8002AH/8052AH • 8751Ml8751H-12 inter A.C. CHARACTERISTICS: (TA = () °C to. +70 °C, VCC = 5V ±100/0; VSS=;i OV, Load Capacitance for Port 0, ALE, and PSEN = 100 pF, Load Capacitance for All Other Outputs '" 80 pF) Symbol 1fTCLCL Parameter 12MHz Osc Min Max Oscillator Frequency Variable Oscillator Min Max 3.5 12. Units MHz 127 2TCLCL-40 ns Address Valid to ALE Low 43 TCLCL-40 ns TLLAX Address Hold After ALE Low 48 TCLCL-35 TLLlV ALE Low to Valid Instr In 8751H,8751H-12 All Others TLHLL ALE Pulse Width TAVLL TLLPL ALE Low to PSEN Low TPLPH PSEN Pulse Width 8751H,8751H-12 All Others TPLIV TPXIX Input Instr Hold After PSEN Input Instr Float After PSEN TPXAV TAVIV TPLAZ 183 233 PSEN to Address Valid 4TCLCL-150 . 4TCLCL-100 58 TCLCL-25 ns 190 215 3TCLCL-60 3TCLCL-35 ns ns PSEN Low to Valid Instrln 8751H,8751H-12 All Others TPXIZ ns ns· 100 125 O' 3TCLCL-150 3TCLCL:.-125 0 ns TCLCL-20 63 TCLCL-8 75 ns .ns ns ns Address to Valid Instr In 8751H,8751H-12 All Others 267 302 5TCLCL-150 5TCLCL-115 ns ns PSEN Low to Address Float TBD TBD ns TRLRH RD Pulse Width 400 6TCLCL,100 ns TWLWH WR Pulse Width 400 6TCLCL-100 ns TRLDV RD Low to Valid Data In TRHDX Data Hold After RD TRHDZ Data Float After RD TLLDV TAVDV TLLWL ALE Low to RD or WR Low 200 TAVWL Address to RD or WR Low 203 TOVWX Data Valid to WR Transition 8751H,8751H-12 All Others 252 0 5TCLCL-165 0 ns ns 97 2TCLCL-70 ns ALE Low to Valid Data In 517 8TCLCL-150 ns Address to Valid Data In 585 9TCLCL-165 ns 3TCLCL+50 ns TOVWH Data Valid to WR High TWHOX Data Held After WR' TRLAZ RD .Low to Address Float TWHLH RD or WR High to ALE High 8751H,8751H-12 All Others 300 13 23 433 3TCLCL-50 4TCLCL-130 ns TCLCL-70 TCLCL-60 ns ns 7T~LCL-150 ns TCLCL-50 33 TBD 33 43 9-S 133 123 TCLCL-50 TCLCL-40. ns TBD' ns TCLCL+50 TCLCL+40'" ns ns I 8031/8051 • 8031AH/8051AH 8032AH/8052AH • 8751H/8751H·12 EXTERNAL PROGRAM MEMORY READ CYCLE ALE I-TLLPL j--TPLPH TLLIV ....--+-1 TPLIV ·PORTO 14---TAVIV - - - + - I PORT 2 A8-A15 A8-A15 9-7 803118051 e8031AH/8051AH 8032AH/8052AHe 8751Ht8751H":12 EXTERNAL DATA MEMORY READ CYCLE I----~ TLHLL ALE t-----TLLDV----Pl _~---TRLRH -r----t PORTO ~-----TAVDV-----_+i PORT 2 P2.0-P2.7 OR A8-A15 FROM DPH 9-8 A8-A15 FROM PCH inter 8031/8051 .' 8031 AH/8051 AH 8032AH/8052AH • 8751H/8751H-12 EXTERNAL DATA MEMORY WRITE CYCLE TWHLH "'-_~TLHLL ALE TLLWL--+""----TWLWH - - - - + - I TOVWX ...~~-~~-i----TOVWH--------~ PORTO PORT 2 DATA OUT P2.0-P2.7 OR AB-A15 fRO!/! DPH 9~9 INSTR IN AB-A 15 fROM PCH B031/B051.·., B031AH/8051AH 8032AH/8052AH. 8751 H18751 H-12 inter SERIAL PORT TIMING - SHIFT REGISTER MODE Test Cpnditions: T A = O·C to 70 ·C; VCC = 5V ± 10%; VSS Symbol Parameter = OV; Load Capacitance = 80 pF 12MHz Osc Variable Oscillator Min Min Max Max Units TXLXL Serial Port Clock Cycle Time 1.0 12TCLCL JLS TQVXH Output Data Setup to Clock Rising Edge 700 10TCLCL-133 ns TXHQX Output Data Hold After Clock Rising Edge 50 2TCLCL-117 ns TXHDX Input Data Hold After Clock Rising Edge 0 0 ns TXHDV Clock Rising Edge to Input Data Valid 700 10TCLCL-133 ns SHIFT REGISTER TIMING WAVEFORMS INSTRUCTION ALE CLOCK OUT1'lIT OATA '--t WRITE 1'0 seUF \ X ".0' I--..j X j 1-".0. X'-~-..JX'-_-..JX'-_-..JX'-_-.JX'-_-.JI t sun f S£TRi 9-10 8031/8051 • 8031 AH/8051 AH 8032AH/8052AH • 8751H/8751H-12 EXTERNAL CLOCK DRIVE Symbol Min Max Units 1fTClCl Oscillator Frequency Paramet,r 3.5 12 MHz TCHCX High Time 20 ns TClCX low TIme 20 ns TClCH Rise Time 20 ns TCHCl Fall Time 20 ns EXTERNAL CLOCK DRIVE WAVEFORMS TCHCL t-------TCLCL A.C. TESTING INPUT, OUTPUT WAVEFORM 24=X ? 2.0 TEST POINTS 0.45 0.8 x= <. 20 0.8 \ A C TESTING INPUTS ARE DRIVEN AT 2 4 v FOR A lOGIC 1 ANO 045 V FOR A. lOGIC' 0 TIMING MEASUREMENTS ARE MADE AT 2 OV FOR A LOGIC 1 AND 0 BV FOR A lOGIC O' 9-11 ------001 intel· S031/S051 • S031AH/8051AH S032AH/S052AH • S751H/S751H~12 EPROM CHARACTERISTICS: Table 3. EPROM Programming Modes Mode RST PSEN ALE EA P2.7 P2.6 P2.5 P2.4 Program 1 0 0' VPP 1 0 X X X 1 X Inhibit 1 0 1 0 X Verify 1 0 1 1 0 0 X X Security Set 1 0 0' VPP 1 1 X X Note: "1" = logic high for that pin "0" = logic low for that pin "X" = "don't care" "VPP" = + 21 V ± 0.5V 'ALE is pulsed low for 50 msec. Note that the EAlVPP pin must not be allowed to go above the maximum specified VPP level of 21.5V for any amount of time. Even a narrow glitch above that voltage level can cause permanent damage to the device. The VPP source should be well regulated and free of glitches. Programming the EPROM To be programmed, the part must be running with a 4 to 6 MHz oscillator. (The reason the oscillator needs to be running is that the internal bus is being used to transfer address and program data to appropriate internal registers.) The address of an EPROM location to be programmed is applied to Port 1 and pins P2.0-P2.3 of Port 2, while the code byte to be programmed into that location is ~d to Port O. The other Port 2 pins, and RST, PSEN, and EA should be held at the "Program" levels indicated in Table 3. ALE is pulsed low for SO msec to program the code byte into the addressed EPROM location. The setup is shown in Figure S. Program Verification If the Security Bit has not been programmed, the onchip Program Memory can be read out for verification purposes, if desired, either during or after the programming operation. The address of the Program Memory location to be read is applied to Port 1 and pins P2.0-P2.3. The other pins should be held at the "Verify" levels indicated in Table 3. The contents of the addressed location will come out on Port O. External pullups are required on Port 0 for this operation. - Normally EA is held at a !2gic high until just before ALE is to be pulsed. Then EA is raised to + 21 V, ALE is pulsed, and then EA is returned to a logic high. Waveforms and detailed timing specifications are shown in later sections of this data sheet. The setup, which is shown in Figure 6, is the same as for programming the EPROM except that pin P2.7 is held at a logic low, or may be used as an activelow read strobe. +5V +5V L -....HXTAl1 vss Figure 6. Program Verification Figure 5. Programming Configuration 9-12 S031/S051 • S031AH/S051AH S032AH/S052AH • S751H/S751H·12 inter EPROM Security The security feature consists of a "locking" bit which when programmed denies electrical access by any external means to the on-chip Program Memory. The bit is programmed as shown in Figure 7. The setup and procedure are the same as for normal EPROM programming, except that P2.6 is held at a logic high. Port 0, Port 1, and pins P2.0~P2.3 may be in any state. The other pins should be held at the "Security" levels indicated in Table 3. +5V x = ··DON·T CARE·· P20P2.3 8751H P24 ALEIPROG P2.5 P26 Once the Security Bit has been programmed, it can be cleared only by full erasure of the Program Memory. While it is programmed, the internal Program Memory can not be' read out, the device can not be further programmed, and it can not execute out of external program memory. Erasing the EPROM, thus clearing the Security Bit, restores the device's full functionality. It can then be reprogrammed. P2.7 E4'VPP XTAL2 VIH1 XTALl VSS Erasure Characteristics Figure 7. Programming the Security Bit Erasure of the EPROM begins to occur when the chip . is exposed to light with wavelengths shorter than approximately 4,000 Angstroms. Since sunlight and flourescent lighting have wavelengths in this range, exposure to these light sources over an extended time (about 1 week in sunlight, or 3 years in roomlevel flourescent lighting) could cause inadvertent erasure. If an application subjects the device to this type of exposure, it is suggested that an .opaque label be placed over the window. The recommended erasure procedure is exposure to ultraviolet light (at 2537 Angstroms) to an integrated dose of at least 15 W-sec/cm 2 . Exposing the EPROM to an ultraviolet lamp of 12,000 p.W/cm 2 rating for 20 to 30 minutes, at a distance of about 1 inch, should be sufficient. Erasure leaves the array in an all 1s state . .EPROM PROGRAMMING AND VERIFICATION CHARACTERISTICS: (TA = 21°C to 27 °C, VCC = 5V ±1 0%, VSS Symbol = OV) Parameter Min Max 20.5 21.5 V 30 mA 6 MHz Units VPP Programming Supply Voltage IPP Programming Supply Current 1tTCLCL Oscillator Frequency TAVGL Address Setup to PROG Low TGHAX Address Hold After PROG 48TCLCL TDVGL Data Setup to PROG Low 48TCLCL TGHDX Data Hold After PROG 48TCLCL TEHSH P2.7 (ENABLE) High to VPP 48TCLCL TSHGL VPP Setup to PROG Low 10 p,Sec TGHSL VPP Hold After PROG 10 p.sec TGLGH PROG Width 45 TAVQV Address to Data Valid TELQV ENABLE Low to Data Valid TEHQZ Data Float After ENABLE 4 48TCLCL. 55 48TCLCL 48TCLCL 0 9-13 48TCLCL msec S0311S051 .. S031AH/S051AH S032AH/S052AH • S751H/S75.1H-12 EPROM PROGRAMMING AND VERIFICATION WAVEFORMS P1.0-P1.7 P2.0-P2.3 PROGRAMMING VERIFICATION ADDRESS ADDRESS PORTO ~TAVQV DATA IN TDVGL TAVGL! A LE/PROG - "/ DATA OUT 4!--TGHDX I- TGHAX \~ TSHGL Ei./VPP T d TGHSL TGLGH 21V :I: .SV \ TTL HIGH TTL HIGH TTL HIGH TEHSH r-P2.7 (ENABLE) TELQV---to: , J FOR PROGRAMMING CONDITIONS SEE FIGURE 5. 9-14 ~- !--TEHQZ I FOR VERIFICATION CONDITIONS SEE FIGURE 6. 8052AH-BASIC • Full BASIC Interpreter in ROM on a Single Chip • BCD Floating Point Math • Generates All Timing Necessary to Program EPROMS and E2PROMS • Fast Tokenlzed Interpreter • "Stand Alone" Software Development • All Arithmetic and Utility Routines Can Be Called From Assembly Language • Interrupts Can Be Handled By BASIC or Assembly Language • Built-In Accurate REAL TIME CLOCK • Multiple User Programs • Programs May Reside In RAM, EPROM or E2PROM, • Built In Radix Conversion - Hex to Decimal and Decimal to Hex 8052AH-BASIC is an 8052AH microcontroller with a complete full-featured BASIC interpreter, MCS® BASIC52, resident in the 8K of available ROM. This Software-On-Silicon product is specifically designed to address the needs of process control, measurement, and instrumentation applications. MCS BASIC-52 allows 8052AH users to write programs in the popular BASIC language, which is much simpler to write and easier to understand than assembly language. In addition tothe standard BASIC commands and functions, such as floating point arithmetic and transcendental operations, MCS BASIC-52 contains many unique features that allow the user to perform tasks that usually require assembly language. Bit-wise logical operators, such as AND, OR, and EXCLUSIVE-OR are supported as well as hexadecimal arithmetic. A minimum amount of hardware is required to support MCS BASIC-52. Small systems can be constructed with only a latch, 1K bytes of external memory, and the appropriate serial port drivers. With the addition of a transistor, a gate, and a couple of passive components, MCS BASIC-52 can program EPROM or E2PROM devices with the users application program. Both the standard and the inteligent Programming'· algorithms are supported. ' MCS BASIC-52 is an interpreted language. This aliows the user to develop a program interactively without the cumbersome and repetitive process of editing, assembling, loading, and running which is required by assemblers and compilers. MCS BASIC-52 was designed to permit the programmer to develop resident high level language software using the high performance 8052AH device. + 5 VOLTS---l JC~ LINE PRINTER OUTPUT RESET XTAL1 XTAL2 PULSEr----------------------------, ENABLEr--------------------------, --------,I PSENr-----------------~ LEVEL SHIFTERS ~~--------------~~ __M':~':E~~_.1 ~r------------' CONSOLE OUTPUT CONSOLE INPUT t LEVEL SHIFTERS M System Block Diagram 9-15 inter 8052AH-BASIC FEATURES' \ AUTOSTART COMMAND SET . MCS BASIC-52 contains all standard BASIC commands, statements, and operators. Figure 1 list the software feature set of MCS BASIC-52. DATA FORMAT The range of numbers, that can be represented in MCS BASIC-52 is: ±1E':'127 to ±.99999999E + 127 CONTROL ORIENTED FEATURES MCS BASIC-52 contains many unique features to perform task that usually require assembly language programming. The XBY and DBY operators can read and/or write external and internal memory respectively. The CBY operator is used to read program memory. Additionally, virtually all of the special function registers on the 8052AH can be accessed with MCS BASIC-52. This allows the user to set the timer or interrupt modes within the constructs of a BASIC program. An accurate interrupt driven REAL TIME CLOCK that has a 5 millisecond resolution is also implemented in MCS BASIC-52. This clock can be enabled, disabled, and used to generate interrupts. Finally, a CALL statement that allows the programmer to CALL assembly language routines is available in MCS BASIC-52. Parameters can be passed in a number of different ways. After the user programs an,EPROM o~ E2PROM ;"ith the desired BASIC program. The PROG2 or FPROG2 commands may be used to enable the unique AUTOSTART feature of MCSBASIC-52. When AUTOSTART is enabled, MeS BASIC-52 will execute the user program after RESET or a power-up condition. This permits the user to RUN a program without connecting the MCS BASIC-52 device ,to a console - a powerful feature for control environments. USER ACCESSABLE FUNCTION LIBRARY Another unique feature of MCS BASIC-52 is that it contains a complete library of functions that can be accessed with assembly language. All floating point, radix conversion, and 1/0 routines contained in MCS BASIC-52 can be accessed with assembly language CALL instructions. These complex arithmetic routines can be used by the programmer in applications requiring the speed of assembly language, but also the complex arithmetics offered by BASIC. 8052AH-BASIC PIN DESCRIPTION (FIGURE 2) 8052AH-BASIC is an 8052AH device, however, MCS BASIC-52 assumes a particular hardware configuration. The following pin description outlines the pin functions defined by MCS BASIC-52. EPROM/E2PROM FILE VSS Most Basic interpreters allow only one program to be resident in memory, and many require that the program reside in RAM. MCS BASIC-52 allows programs to reside in both RAM and EPROMI E2PROM. Additionally, up to 255 programs may reside in EPROM/E2PROM. Programs may also be transfered (XFER) from EPROM/E2PROM to RAM for editing purposes. Circuit ground potential. EPROM/E2PROM PROGRAMMING A powerful feature of MCS BASIC-52 is that it generates all of the timing necessary to program any standard EPROM or E2PROM device with the users' program (PROG/FPROG). Additionally, very little external hardware is required .to implement this feature. Saving programs in EPROM/E2PROM is much more,attractive and reliable than other alternatives, such as cassette tape, especially in control and/or other noisy environments. VCC Circuit supply voltage. 5 volts ± 10% relative to VSS. ADO-AD7 The multiplexed low-order address and data bus used during accesses to external memory: External pullup devices (- 10K 0) are required on these pins if the MCS BASIC-52 EPROM/E2PROM programming feature is used. AS"':A15 "Fhe high order address bus used during accesses to external memory. 9-16 8052AH-BASIC ~ommands RUN LIST L1ST# NEW NULL RAM ROM XFER PROG PROGl PROG2 FPROG FPROGl FPROG2 Statements Operators BAUD ADD (+) CALL DIVIDE (I) CLEAR EXPONENTIATION (**) CLEARS MULTIPLY (*) CLEARI SUBTRACT(-) CLOCKO LOGICAL AND (.AND.) CLOCKl LOGICAL OR (.OR.) DATA LOGICAL X-QR (.xOR.) READ LOGICAL NOT RESTORE ABS( ) DIM INT( ) DO-WHILE SGN ( ) DO-UNTIL SOR ( ) END RND FOR-TO-STEP LOG ( ) NEXT EXP ( ) GOSUB SIN ( ) RETURN COS ( ) GOTO TAN ( ) ON-GOTO ATN ( ) ON-GOSUB =, >, >=, T2/Pl.0 T2EX/P1.l PWM OUTPUT I Pl.2 ALE DISABLE I Pl.3 PROGRAM PULSE I Pl.4 PROGRAM ENABLE I Pl.5 DMA ACKNOWLEDGE I Pl.& UNE PRINTER OUTPUT I Pl.7 RESET CONSOLE SERIAL INPUT CONSOLE SERIAL OUTPUT INTO I DMA REQUEST INTl TO Tl WR RD XTAL2 XTALl VSS VCC ADO ADl AD2 AD3 AD4 AD5 AD& AD7 +5 VOLTS ALE PSEN A15 A14 A13 A12 All Al0 A9 AS Figure 2. Configuration <, <=, <> IF-THEN-ELSE INPUT LET ONERR ONEXTl ONTIME PRINT PRINT# PHO. PHO.# PH1. PH1.# PUSH POP' PWM REM RETl STOP STRING UIO Ull UOO UOl ASC( ) CHR ( ) CBY( ) DBY( ) XBY( ) GET IE IP PORTl PCON RCAP2 T2CON TCON TMOD TIME TIMERO TIMERl TIMER2 TIME XTAL MTOP LEN FREE PI the T2 trigger function are covered in the Microcontrollers Handbook. Order Number 210918002. PORT 1.1 (T2EX) Can be used as the external input to TIMER/ COUNTER 2. A one (1) must be written to this port pin output latch in order for this function to operate. Details of the T2 trigger function are covered in the Microcontroller Users Manual. PORT 1.2 (PWM OUTPUT) This pin is used as the PWM output port when the PWM statement is executed. PWM stands for Pulse Width Modulation and is used to generate pulses of varying duty cycle and frequency. PORT 1.3 (ALE orSABLE) This pin is used to disable the ALE signal to the external address latch when the EP.ROM/E2PROM programming feature is used. In a system, this pin is logically anded with ALE. Figure 1. MCS® BASIC-52 Software Feature Set PORT 1 A general purpose quasi-bidirectional 8-bit input! output port. The individual pins on PORT 1 all have alternate functions which mayor may not be implemented by the user. The alternate functions are as follows: POR,T 1.4 (PROGRAMMING PULSE) When the EPROM/E2PROM programming feature is used, this pin provides the proper programming pulse width to program EPROM and INTElligent EPROM@> devices. MCS BASIC-52 actually calculates the proper programming pulse width from the system crystal value (XTAL) to assure the proper timing of this pulse. When used to program E2PROM devices, the length of this pulse is not critical. This pin is active in the logical zero (0) state. PORT 1.0 (T2) Can be used as the trigger input to TIMER/COUNTER 2. A one (1) must be written to this port pin output latch in order for this function to operate. Details of 9-17 inter . 8052AH~SASIC PORT 1.5 (PROGRAMMING ENABLE) When the EPROM/E2PROM pro!ilramming feature is implemented, this pin is used to enable the EPROM programming voltage. This pin remains active (logically low (0» during the entire EPROM programming process. On E2PROM devices. that do not require any special programming voltage, this pin is not used. A control Signal that is used to enable READ operations to external data memory. This pin is active low (0). WR A control signal that is used to enable WRITE operations to external data memory. This pin is active low (0). PORT 1.6 (DMA ACKNOWLEDGE) T1 When the DMA feature is implemented as described in the MCS® BASIC-52 users manual, this pin functions as an active low DMA ACKNOWLEDGE output. This pin can be programmed to be an external input to TIMER/COUNTER 1. PORT 1.7 (LINE PRINTER OUTPUT) TO This pin functions as a serial output port when the LlST# or PRINT# command and/or statement is used. This enables the user to make a "hard copy" of a program or to print out results of a calculation. This pin can be programmed to be an external input to TIMER/COUNTER O. INT1 RESET This pin is the external interrupt 1 pin. It is active low and interrupts on this pin may be handled in either BASIC or in assembly language. A high (2.5 volts) on this pin for two machine cycles while the oscillator is running resets the device. An external pulldown resistor (-8.2K) from RESET to VSS permits power-on reset when a capacitdr (-10 uf) is connected from this pin to VCC. INTO/DMA REQUEST This is the external interrupt 0 pin. It is active low and may be optionally programmed to function as a DMA request input pin. The DMA REQUEST pin is used by E2PROM devices during programming. ALE ALE (address latch enable) is an output pin that is used to latch the low order address byte during Read, Write, or program fetch operations to external memory. CONSOLE SERIAL OUTPUT This is the serial output pin to the console device. Standard ASCII codes are used as "'Iell as a standard asynchronous frame. This pin (Program Store ENable) is a control signal that is used to enable external program memory. In MCS® BASIC-52, this pin will always remain inactive (logically high (1» unless the user is running an assembly language program in external memory. CONSOLE SERIAL INPUT This is th!'! serial input pin that receives data f~om the console device. Standard ASCII codes are assumed to be the input and the data is assumed to be transmitted using a standard asynchronous frame. XTAL1 Input to the inverting amplifier that forms the oscillator. NOTES XTAL2 If pin 31 is grounded the'8052AH-BASIC will operate as a standard 8032AH. The tolerances on this pin are described under DC characteristics. Output of the.inverting amplifier that forms the oscillator, and input to the internal clock generator. Receives the external oscillator signal when an external oscillator is used. For detailed information concerning this product please refer to the MCS BASIC-52 Users Manual (Order Number 210918-002). . 9-18 8052AH-BASIC ABSOLUTE MAXIMUM RATINGS· "NOTICE: Stresses above those listed under .. Absolute Maximum Ratings" may cause permanimt damage to the device. This is a stress rating only and functional operation of the device at these or any other conditions above those indic{Jted in the operational sections of this specification is not implied. Exposure to absolute maximum rating conditions for extended periods may affect device reliability. Ambient Temperature Under Bias ... O°C to 70°C Storage Temperature . . . . . . - 65°C to + 150·C Voltage on Any' Pin With Respect to Ground (VSS) . . .. -0.5Y to + 7V Power Dissipation . . . . . . . . . . . . . . . 2 Watts DC CHARACTERISTICS (TA = O°C to 70°C, VCC = 4.5V to 5.5V, VSS = OV) Symbol Parameter Min Max 'Unit -0.5 O.S V Test Conditions VIL Input Low Voltage VIH Input High Voltage (Except RST and XTAL2) 2.0 VCC+ 0.5 V VIHl Input High Voltage to RST for Reset, XTAL2 2.5 VCC + 0.5 V XTALl to VSS VOL Output Low Voltage Port 1, AS-15, Control Functions 0.45 .V IOL = 1.6mA VOLl Output Low Voltage ALE, PSEN (Note 1) 0.45 V IOL = 3.2mA VOH Output High Voltage Port 1, AS-15, Control Functions 2.4 V IOH == -SOIlA VOHl Output High Voltage ADO-7, ALE, PSEN 2.4 V IOH = ilL Logical 0 Input Current Port 1, AS-15 Control Functions -SOO IlA Vin = 0.45V 1IL2 Logical 0 Input Current XTAL2 ~2.5 mA XTAL1 at VSS, Vin=0.45V III Input Leakage Current To ADO-7 EA ±10 /LA 0.45V (2.0 OAS " 2.oX= TEST POINTS ..,;0;,;;.8.....;._ _ _ _.....;0;,;;;...8_ FLOAT 2.4 i-----FLOAT - - - + I 2.0 2.0 0.8 0.8 2.4 . 0.45 0.45 AC inputs during testing are driven at 2.4V for a logic "1" and 0.45V for a logic "0", Timing measurements are made at 2.0V for a logic "1" and O.BV for a logic "0". For timing purposes, the float state is defined as the pOint at which an ADO-7 pin sinks 2.4mA or sources 400JLA at the voltage test levels. 9-22 inter 8052AH-BASIC CLOCK WAVEFORMS INTERNAL CLOCK 1 STATE 4 P11P2 I' 'STATE 5 P11P2 1 STATE 1 STATE 6 P11P2 P1 I P2 STATE 2, P1 I P2 STATE 3 P1 I P2 STATE 5 STATE 4 P1 I P2 P1 I P2 XTAL2 ~------------~. ALE EXTERNAL PROGRAM MEMORY FETCH ~I--------------~ THESE ~ . ~_ _.....' SIGNALS ARE NOT ACTIVATED DURING THE EXECUTION OF A MOVX INSTRUCTION I~' L ADO-7 ________..... ·.,ND,CATES ADDRESS TRANSIONSI~___________________-' A6-15 READ CYCLE RD PCL OUT (IF PROGRAM MEMORY IS EXTERNAL) AOO-7 A6-15 WRITE CYCLE WR ---------------------, ·AOO'-7· ~:. DPLOR RI OUT ~--------------~ PCL OUT (EVEN IF PROGRAM MEMORY IS INTERNAL) O--UT=--=--=--:"'~"*,,: i f • ..t--tL ---DA1:--A L PCl OUT (IF PROGRAM ...-_____________________________-,MEMORY IS EXTERNAL) A6-15 I PORT OPERATION MOV PORT, SRC MOVDEST, P1 (INCLUDES INTO, INT1, TO, T1) OLD DATA ~ SERIAL PORT S-H-,FT-C-L-OC--K----, ~E 0) I NEW DATA P1, PIN SAMPLED ~RXD P1, PIN SAMPLED SAMPLED Y RXDSAMPLED This diagram indicates when Signals are clocked intemally. The time it takes the signals to propagate to the pins, however, ranges from 25 to 125 ns. This propagation delay is dependent on variables such as temperature and pin loading, Propagation also varies from output to output and component to component. Typically though, (TA = 25°C, fully loaded) RD and WR propagation delays are approximately 50 ns. The other signals are typically 85 ns. Propagation delays are incorporated in the AC specificlltions. 9·23 -n+ .-I® I•• ,~ 80C51 BH/80C51BH-2 CHMOS SINGLE COMPONENT 8'-BIT MICROCONTROLLER with Factory Mask-Programmable ROM , . 80C31 BH/80C31BH-2 CHMOS SINGLE COMPONENT 8-BIT CONTROL-ORIENTED CPU WITH RAM AND I/O 80C51BH/80C31BH- 3.5 to 12 MHz VCC = 5V ± 20% 80C51BH-2/80C31BH-2 - 0.5 to 12 MHz VCC ::;:: 5V ± 20% • • • • 128 X 8 RAM 32 Programmable 110 Lines Two 16-Bit Timer/Counters 64K Program Memory Space • • • • Boolean Processor 5 Interrupt Sources Programmable Serial Port 64K Data Memory Space The MCS®-51 CHMOS products are fabricated on Intel's advanced CHMOS III process and are functionally compatible with the standard MCS-51 HMOS and EPROM products, CHMOS III is a technology which combines the high speed and density characteristics of HMOS with the low power attributes of CMOS, This combination expands the effectiveness of the powerful MCS-51 ,architecture and instruction set Like the MCS-51 EPROM and HMOS, the MCS~51 CHMOS products have the following features: 4K of ROM ' (80G51BH/80C51BH-2,only); 128 bytes of RAM; 32 I/O lines; two 16-bit timer/counters; a five-source two-level interrupt structure; a full duplex serial port; and on-chip oscillator and clock circuitry, In addition, the MCS-51 CHMOS products have two software selectable modes of reduced activity for further' power reduction -.:... Idle and Power Down. Idle mode freezes the CPU while allowing the RAM, timer/counters, serial port and interrupt system to continue functioning. Power Down mode saves the RAM contents but freezes the oscillator causing all other chip functions to be inoperative. Figure 1. Block Diagram 9-24 aoC51 BH/80C51 BH-2 80C31 BH/80C31 BH-2 inter INDEX CORNER .. Ii: "! Ii: N ~ 31 LSJ LSJ L4J :L....J VCC PO.O PO.l PO.2 PO.3 PO.4 PO.S PO.6 PO.7 Pl.0 Pl.l Pl.2 Pl.3 Pl.4 Pl.S Pl.6 Pl.7 RST P3.0/RXD P3.1/TXD P3.21INTO P3.31NT1 P3.4/TO P3.S/Tl P3.6/WR P3.7/RD XTAL2 XTALI VSS t U U ~ z Ii: 21 '1' I I I I L....J ~ ~ ~J ~~ ~~ ~ t t41[ ~ L.J ~J P1.5 PO.4 Pl.S PO.S Pl.7 PO.S RST PO.7 P3.0 EA ALE PSEN P2.7 P2.6 P2.S P2.4 P2.3 P2.2 P2.1 ,P2.0 '" ~ Ei BOC51BH BOC51BH-2 BOC31BH aOC31BH-2 NC P3.1 Ne ALE iiftN P3.2 P3.3 P2.7 P3.4 P2.& P3.S ,..., r, r, rl r, ,...., -, ,..., ;18: :19: :20: ;21: ;22: :23: 124: Pin ~ ~ N ~ ~ ~ UI " " DIagrams are for Pin reference only Package sizes are not 10 scale ~ U z ~ r' r.., 1 ; 25 1 126 I I ~ N r, P2.S ;271 :28: ~ !i. !i ~ ~ Pad ,Figure 2. Configurations IDLE AND POWER DOWN OPERATION These special modes are activated by software via the Special Function Register, PCON. Its hardware address is 87H. PCON is not bit addressable. Figure 3 shows the jnternal Idle and Power Down clock configuration. As illustrated, Power Down operation freezes the oscillator. Idle mode operation allows the interrupt, serial port, and timer blocks to continue to function while the clock to the CPU is halted. PCON: Power Control Register (MSB) (LSB) ISMODI - I - I - I GF1 I GFO I PO I IDL I Symbol Position Name and Function SMOD PCON.7 Double Baud rate bit. When set to a 1. the baud rate is doubled when the serial port is being used in either modes 1. 2 or 3. XTAL2 XTALI GF1 GFO PO INTERRUPT. ~~-{:::> SERIAL PORT. TIMER BLOCKS IDL CPU PCON.6 (Reserved) PCON.5 (Reserved) PCON.4 (Reserved) PCON.3 General-purpose flag bit. PCON.2 General-purpose flag bit. PCON.1 Power Down bit. Setting this bit activates power down operation. PCON.O Idle mode bit. Setting Ihis bit activates idle mode operation. If 1's are written to PD and IDL at the same time, PD takes precedence. The reset value of PCON is Figure 3. Idle and Power Down Hardware (OXXXOOOO). 9-25 80C51 BH/80C51 BH~2 80C31 BH/80C31 BH..2 'Idle Mode The instruction that sets PCON.O is the last instruction executed in ,the normal operating mode before Idle mode is activated. Once in the Idle mode, the CPU , status is preserved in its entirety: the Stack Pointer, Program Counter, Program Status Werd, Accumu. lator, RAM, and all other registers maintain their data during Idle. Table 1 describes the status of the external pins during Idle mode. There are two ways to terminate the Idle mode. Activation of any enabled interrupt will cause PCON.O to be cleared by hardware, terminating Idle mode. The interrupt is serviced, and following RETI, the next instruction to be executed will be the one following the instruction that wrote a 1 to PCON.O. power down mode is entered, and that the voltage is restored before the hardware reset is applied which fr,ees the oscillator. Reset should not be released until the oscillator has restarted and stabilized. Table 1 describes the status of the external pins while in the power down mode. It should be noted that if the power down mode is activated while in external program memory, the port data that is held in the Special Function Register P2 is restored to Port 2. If .the data is a 1, the port pin is held high during the power down mode by the strong pullup, p1, shown in figure 4. 80C51 BH I/O Ports The I/O port drive of the 80C51BH is similar to the 8051. The I/O buffers for Ports 1, 2, and 3 are implemented as shown in figure 4. The flag bits GFO and GF1 may be used to determine whether the interrupt was received during normal execution or during the Idle mode. For example, the instruction that writes to PCON.O can also set or clear one or both flag bits., When Idle mode is terminated by an enabled interrupt, the service routine can examine the status of the flag bits. When the port latch contains a 0, all pFETS in figure 4 are off while the nFET is turned on. When the port latch makes a 0-to-1 transition, the nFET turns off. The strong pullup pFET, p1, turns on for two oscillator periods, pulling the output high very rapidly. As the output line is drawn high, pFET p3 turns on through the inverter to supply the IOH source current. This inverter and p3 form a latch which holds the 1 and is supported by p2. The second way of terminating the Idle mode is with . a hardware reset. S(nce the oscillator is still running, the hardware reset needs to be active for only 2 machine cycles (24 oscillator periods) to complete the reset operation. When Port 2 is used as an address port, for access to external program of data memory, any address bit that contains a 1 will have its strong pullup turned on for the entire duration of the external memory access. Power Down Mode The instruction that sets PCON.1 is the last executed prior to going into power down. Once in power down, the oscillator is stopped. Only the contents of the onchip RAM is preserved. The Special Function Registers are not saved. A hardware reset is the only way of exiting the power down mode. When an I/O pin on Ports 1, 2, or 3is used as an input, the user should be aware that the external circuit must sink current during the logical 1-to-0 transition. The maximum sink current is specified as ITL under the D.C. Specifications. When the input goes below approximately 2V, p3 turns off to save ICC current. Note, when returning to a logical 1, p2 is the only internal pullup that is on. This will result in a slow rise time if the. user's circuit does n~t force the input In the Power Down mode, VCC may be lowered to minimize circuit power consumption. Care must be taken to ensure the voltage is not reduced until the Table 1. Status of the external pins during Idle and Power Down modes Mode Program Memory ALE PSEN PORTO Idle: Internal 1 1 Port Data Idle External 1 1 Power Down Int~rhal 0 Power Down External 0 PORT1 PORT2 . PORT3 Port Data. Port Data Port Data Floating Port Data Address Port Data 0 Port Data Port Data Port Data Port Data 0 Floating Port Data Port Data Port Data 9-26 SOC51 BH/SOC51 BH~2 SOC31 BH/SOC31 BH~2 vee VCC VCC Q FROM PORT LATCH READ PORT PIN Figure 4. 1/0 Buffers in the 8OC51 BH (Ports 1, 2, 3) line high. For additional information, refer to the chapter entitled "Design Considerations When Using CHMOS" in the 1984 Intel Microcontroller Handbook. pulled high by the internal pullups, and in that state can be used as inputs. As inputs, Port 1 pins that are externally being pulled low will source current (ilL, on the data sheet) because of the internal pullups. PIN DESCRIPTIONS 'Port 1 also receives the low-order address bytes dur-' ing program verification. VCC Port 2 Supply voltage during normal, Idle, and Power Down operations. Port 2 is an 8-bit bi-directional I/O port with internal pullups. Port 2 pins that have 1's written to them are pulled high by the internal pullups, and in that state can be used as inputs. As inputs, Port 2 pins that are externally being pulled low will source current (ilL, on the data sheet) because of the internal pullups. VSS Circuit ground. Port 0 Port 2 emits the high-order address byte during fetches from external Program Memory and during accesses to external Data Memory that use 16-bit addresses (MOVX @DPTR). In this application it uses strong internal pullups when emitting 1's. During accesses to external Data Memory that use 8-bit addresses (MOVX @Ri), Port 2 emits the contents of the P2 Special Function Register. Port 0 is an 8-bit open drain bi-directional I/O port. Port 0 pins that have 1's written to them float, and in that state can be used as high-impedance inputs. Porf 0 is also the multiplexed low-order address and data bus during accesses to external Program and Data Memory. In this application it uses strong internal pullups when emitting 1's. Port 0 also outputs the code bytes during program verification in the 80C51 BH. External pullups are required during program verification. Port 3 Port 3 is an 8-bit bi-directional I/O port with internal pullups. Port 3 pins that have 1's written to them are pulled high by the internal pullups, and in that state can be used as inputs. As inputs, Port 3 pins that are externally being pulled low will source current (ilL, on the data sheet) because of the pullups. Port 1 Port 1 is an 8-bit bi-directional I/O port with internal pullups. Port 1 pins that have 1's written to them are 9-27 80C51 BH/80C51 BH-2 80C31 BH/80C31 BH~2 inter Port 3 also serves the functions of various special features of the MCS-51 Family, as. listed below: Program Store Enable is the read strobe to external Program Memory, Port Pin Alternate Function ,P3.0 RXD (serial input port) When the 80C51BH is executing code from external Program Memory, PSEN is activated twice each machine cycle, except that two PSEN activations are skipped during each access to external Data Memory. P3.1 TXD (serial output port) EA P3.2 INTO (external interrupt 0) P3.3 INT1 (external Interrupt 1) External Access enable. EA must be externally held low in order to enable the device to fetch code from external Program Memory locations OOOOH to OFFFH. P3.4 TO (Timer 0 external input) P3.5 T1 (Timer 1 external input) P3.6 WR (external data memory write strobe) P3.7 RD (external data memory read strobe) XTAL1 Input to the inverting oscillator amplifier and input to the internal clock generator circuits. XTAL2 Output from the inverting oscillator amplifier. RST OSCILLATOR CHARACTERISTICS Reset input. A high on this pin for two machine cycles while the oscillator is running resets the device, An internal diffused resistor to VSS permits Power-On reset using only an external capacitor to Vcc. XTAL 1 and XTAL2 are the input and output respectively, of an inverting amplifier which is corifigured for use as an on-chip oscillator, as shown in Figure 5. Either a quartz crystal or ceramic resonator may be used. More detailed information concerning the use of the on-chip oscillator is available in Application Note AP-155, "Oscillators for Microcontrollers." ALE Address Latch Enable output pulse for latching the low byte of the address during accesses to external memory. To drive the device from an external clock source, XTAL 1 should be driven while XTAL2 is left unconnected as shown in figure 6. There are no requirements on the duty cycle of the external clock signal, since the input to the internal clocking circuitry is through a divide-by-two flip-flop, but minimum and maximum high and low times specified on the Data Sheet must be observed. In normal operation ALE is emitted at a constant rate of '/6 the oscillator frequency, and may be used for external timing or clocking purposes. Note, however, that one ALE pulse is skipped during each access to external Data Memory. L I Ii 9 1- I ~- XTAL2 - r- EXTERNAL OSCILLATOR SIGNAL XTAL 1 NC -----------1 XTAL2 XTAL 1 VSS - Figure 6. External Drive Configuration Figure 5. Crystal O.$clllator 9-28 80C51 ~H/80C51 BH-2 80C31 f3H/SOC31 BH-2 inter ABSOLUTE MAXIMUM RATINGS· 'NOTICE: Stresses above those listed under "Absolute Maximum Ratings" may cause permanent damage to the device. This is a stress rating only and functional operation of the device at these or any other conditions above those indicated in the operational sections of this specification is not implied. Exposure to absolute maximum rating conditions for extended periods may affect device reliability. Ambient Temperature Under Bias . . . O°C to 70°C Storage Temperature .. . . . . - 65°C to + 150°C Voltage on Any Pin to VSS ... -O.SV to VCC+ 1V Voltage on VCC to VSS. . . . . .. - 0.5V to + 7V Power Dissipation . . . . . . . . . . . . . . . . LOW D.C. CHARACTERISTICS: (TA = O°C to 70°C; VSS = OV; VCC = SV ± 20%) Symbol Parameter Min Max Unit Test Conditions -0.5 0.2VCC-·1 V 0.2VCC+·9 VCC+0.5 V 0.7VCC VCC+0.5 V Output Low Voltage (Ports 1, 2, 3) O.4S V IOL = 1.6 mA VOL1 Output Low Voltage (Port 0, ALE, PSEN) 0.45 V IOL = 3.2 mA (Note 1) VOH Output High Voltage (Ports 1, 2, 3) 2.4 V IOH = - 80J,LA VCC = SV ± 10% O.7SVCC V IOH= - 3OILA 0.9VCC V IOH = -1 OJ,LA 2.4 V IOH= -400J,LA VCC=SV±10% 0.7SVCC V IOH = -150J,LA VIL Input Low Voltage VIH Input High Voltage (Except XTAL 1, RST) VIH1 Input High Voltage to XTAL1, RST VOL VOH1 Output High Voltage (Port 0 in External Bus Mode, ALE, PSEN) V 0.9VCC IOH = - 40J,LA (Note 2) IlL Logical 0 Input Current (Ports 1, 2, 3) -50 J,LA Yin = 0.4SV ITL Logical 1 to 0 transition Current (Ports 1, 2, 3) -SOO J,LA Yin = 2.0V III Input Leakage Current (Port 0, EA) ±10 ILA . 0.45 < Yin < VCC RRST RST Pulldown Resistor 12S Kohm CIO Pin Capacitance 10 pF tast freq = 1 MHz, TA = 2SoC IpD Power Down Current 50 J,LA VCC = 2 to 6V (Note 3) 40 Maximum Operating ICC (mA) (note 4) VCC Freq. 0.5 MHz 3.S MHz 8 MHz 12 MHz 4V 5V 6V 1.6 4.3 8.3 12 2.2 5.7 11 16 3 7.5 14 20 Maximum Idle ICC (mA) (note 5) VCC Freq. O.S MHz 3.S MHz 8 MHz 12 MHz 9-29 4V 5V 6V 0.6 0.9 1.6 2.7 3.7 . 1.2 2.2 3.7 S 1.1 1.8 2.5 I 80C51 BH/SOC51 BH-2 80C31BH/80C31BH.2 Note 1: Capacitive loading on Ports 0 and 2 may cause spurious noise pulses to be superimpt>sed on the' VOLS of ALE, and Ports 1 and 3. The noise is due to the external bus capacitance discharging into the Port 0 and Port 2 pins when these pins make a 1-to-0 transition during bus operations. In the worst case (capacitive loading> 100 pF), the nOise pulse on ALE line may exceed In such cases it may be desirable to qualify ALE with a Schmitt Trigger, or use an ,address latch with a Schmitt Trigger STROBE input. o.av. Note 2: Capacitive loading on Ports 0 and 2 may cause the VOH on ALE and PSEN to momentarily fall below the .9VCC specification when the address bits are stabilizing. ' Note 3: Power Down ICC is measured with all output pins disconnected; EA=PORTO=VCC; XTAL2 N.C.; RST=VSS. Note 4: ICC is measured with all output pins disconnected; XTAL 1 driven with TCLCH, TCHCL = 10 ns, Vii = VSS + .5v, Vih=VCC-.5v; XTAL2 N.C.; EA= RST= PORTO=VCC. Note 5: Idle ICC is measured with all output pins disconnected; XTAL1 driven with TCLCH, TCHCL = 10 ns, ViI=VSS+ .5v, Vih=VCC-·5v; XTAL2 N.C.; EA= PORTO = VCC; RST=VSS. A.C. CHARACTERISTICS (TA = O°C to 70°C; VSS = OV; VCC = 5V ± 20%; Load Capacitance for Port 0, ALE, and PSEN = 100 pF, Load Capacitance for All Other Outputs = 80 pF) EXTERNAL PROGRAM AND DATA MEMORY CHARACTERISTICS Min Max Units Oscillator Freq (80C51 BH) 3.5 12 MHz Oscillator Freq (80C51BH-2) 0.5 12 MHz Parameter Symbol lfTCLCL ALE Pulse Width 2TCLCL-40 ns Address Valid to ALE Low TCLCL-40 ns TLLAX Address Hold After ALE Low TCLCL-35 ns TLHLL TAVLL TLLlV ALE Low to Valid Instr In TLLPL ALE Low to PSEN Low TCLCL-25 TPLPH PSEN Pulse Width 3TCLCL-35 TPLIV PSEN Low to Valid Instr In TPXIX Input Instr Hold After PSEN TPXIZ Input Instr Float After PSEN TPXAV PSEN to Address Valid 4TCLCL-150 ns ns ns ,3TCLCL - 150 ns 0 ns TCLCL-20 ns TCLCL-8 TAVIV Address to Valid Instr In TPLAZ PSEN Low to Address Float TRLRH RD Pulse Width 6TCLCL - 1.00 TWLWH WR Pulse Width 6TCLCL-l00 TRLDV RD Low to Valid Data In ns 5TCLCL-150 0 ns , ns ns ns 5TCLCL-165 ns TRHDX Data Hold After RD TRHDZ Data Float After RD 2TCLCL-70 ns 'TLLDV ALE Low to Valid Data In 8TCLCL-150 ns 0 9·30 ns 80\;:)1 tst1/6UC515t1-2 inter SOC31 BH/SOC31 BH-2 EXTERNAL PROGRAM MEMORY READ CYCLE I·--T~HLL-- \ ALE -TAVLL- - TLLPL ---TPLPH--- TLLIV \ PSEN 1'Pi:iV j 'I. TLLAX 1- TPXIZI-- - - ~"J TPXAV TAZPL TPXIX- "'i INSTR IN AO-A7 J >Jl\ AO-A7 TAVIV PORT 2 X X AB-A15 A8-A15 EXTERNAL DATA MEMORY READ CYCLE TWHlH ALE I-----TLLDV-----I --TlLWL--I-----TRLRH-+----1 - -TRlAZ PORTO I------TAVDV------I PORT2 P2 O·P2 7 OR A8~A15 FROM DPH 9-31 A8·A15 FROM PCH inter VV"';' l'gn/!II'u",;, I'gn-,r; 80C31 BI1/S0C31 BH-2 A.C. CHARACTERISTICS EXTERNAL PROGRAM AND DATA MEMORY CHARACTERISTICS (Continued) Parameter Symbol TAVDV Address to Valid Data In Min Max Units 9TCLCL-16S ns 3TCLCL+SO ns TLLWL ALE Low to RD or WR Low 3TCLCL-SO TAVWL Address to RD or WR Low 4TCLCL-130 ns TQVWX Data Valid to WR Transition TCLCL-60 ns TQVWH Data Valid to WR High 7TCLCL-1S0 ns TWHQX Data Held After WR TCLCL-SO ns TRLAZ RD Low to Address Float TWHLH RD or WR High to ALE High 0 ns TCLCL-40 TCLCL+SO ns EXTERNAL CLOCK DRIVE Symbol 1tTCLCL Min Max Units Oscillator Freq (80CS1 BH) 3.S 12 MHz 12 MHz Parameter Oscillator Freq (80C51 BH-2) 0.5 TCHCX High Time 20 TCLCX Low Time 20 TCLCH Rise Time 20 ns TCHCL Fall Time 20 ns EXTERNAL CLOCK DRIVE EXTERNAL OSCILLATOR SIGNAL I---TCLCL---- NC EXTERNAL OSCILLATOR SIGNAL XTAL,2 XTAL 1 VSS -::.- 9-32 ns ns SOC51 BH/SOC51 BH-2 SOC31 BH/SOC31 BH-2 EXTERNAL DATA MEMORY WRITE CYCLE ALE PSEN -0~_---+--'lh,--------,/ ~ I \,-----,1 I -TllWL-I---TWlWH----! rQVWx ~ I~+----TQVWH----'• PORTO TWHQX ..L DATA OUT PORT 2 AS - A15 FROM PCH P20- P27 OR A8 - A15 FROM DPH SERIAL PORT TIMING - SHIFT REGISTER MODE A.C. CHARACTERISTICS: (TA = O°C to 70°C; VSS = OV; VCC = 5V ± 20%; Load Capacitance = 80 pF) Symbol Parameter TXLXL Serial Port Clock Cycle Time TQVXH TXHQX Min Max Units 12TCLCL J-LS Output Data Setup tQ Clock Rising Edge 1OTCLCL - 133 ns Output Data Hold After Clock Rising Edge 2TCLCL-117 ns TXHDX Input Data Hold After Clock Rising Edge TXHDV Clock Rising Edge to Input Data Valid ns 0 10TCLCL-133 ns SHIFT REGISTER TIMING WAVEFORMS I ----...,i-11ILXL-j 1-="'-I1--11IHO' \ ~ WfIlTE TO SBUF X X X'-_---JX'-_---JX, 11IHD'~ j I--"HO' X'-_---JX'-_---J1 In t ~ SETRI CLEAR Fli 9-33 80C51 BH/80C51 BH·2 80C31 BH/80C31 BH·2 inter &[[j)W&[t8~~ ~[t8[?@Iffi[KIJ&un@1J:il Table 2. MCS®·51 Instruction Set Description LOGICAL OPERATIONS (CONTINUED) ARITHMETIC OPERATIONS Mnemonic A,Rn ADD ADD A,direct ADD A,@Ri ADD A,#data AD DC A,Rn ADDC A,direct AD DC A,@RI ADDC A,#data SUBB A,Rn SUBB A,direct SUBB A,@Ri SUBB A,#data INC INC' INC INC INC DEC DEC DEC DEC A Rn direct @RI DPTR A Rn direct @RI MUL DIV DA AB AB A Mnemonic A,@RI ORL Description Byte Cyc Add register to Accumulator Add direct byte to Accumulator 2 Add indirect RAM to Accumulator 1 Add immediate data to 2 Accumulator Add register to Accu mu lator with Carry Add direct byte to A with Carry flag 2 Add indirect RAM to A with Carry flag Add Immediate data to A with Carry flag 2 Subtract register from A with Borrow Subtract direct byte from A With Borrow 2 Subtract Indirect RAM from A with Borrow Subtract immed data from A With Borrow 2 1 Increment Accum ulator 1 1 Increment register 1 1 Increment direct byte 2 1 Increment indirect RAM 1 1 I ncrement Data POinter 1 2 Decrement Accumulator 1 1 Decrement register 1 1 2 1 Decrement direct byte Decrement indirect RAM 1 Multiply A & B 4 Divide A by B 4 Decimal Adjust Accumulator ANL A,dlrect ANL A,@RI ANL A,#data ANL direct,A ANL direct,#data ORL A,Rn ORL A,direct A,#data ORL direct,A ORL direct,#data XRL A,Rn XRL A,direct XRL A,@RI XRL A,#data XRL direct,A XRL direct, #data CLR CPL A A RL RLC A A RR A RRC A SWAP A DATA TRANSFER Mnemonic A,Rn MOV LOGICAL OPERATIONS Mnemonic ANL A,Rn ORL Byte Cyc Destination OR indirect RAM to Accumulator OR immediate data to Accumulator 2 OR Accumulator to direct byte 2 OR immediate data to direct byte 2 3 Exclusive-OR register to Accumulator Exclusive-OR direct byte to Accumulator 2 Exclusive-OR Indirect RAMtoA Exclusive-OR immediate data to A 2 Exclusive-OR Accumulator to direct byte 2 Exclusive-OR immediate data to direct 2 3 1 Clear Accumulator Complemeht Accumulator Rotate Accumulator Left Rotate A Left through the Carry flag Rotate Accumulator Right Rotate A Right through Carry flag Swap nibbles within the Accumulator Destination Byte Cyc AND register to Accumulator AND direct byte to Accumulator 2 AND indirect RAM to Accumulator AND Immediate data to Accumulator 2 AND Accumulator to direct byte 2 AND immediate data to direct byte 3 2 OR register to Accumulator OR direct byte to Accumulator 2 9·34 MOV A,dlrect MOV A,@Ri MOV A,#data MOV Rn,A MOV Rn,direct MOV Rn,#data MOV direct,A MOV direct,Rn MOV direct, direct MOV direct,@Ri Description Byte Cyc Move register to Accumulator Move direct byte to Accumulator 2 Move indirect RAM to Accumulator Mov immediate data to Accumulator 2 Move Accumulator to register Move direct byte to 2 2 register Move immediate data to register 2 Move Accumulator to direct byte 2 Move register to direct byte 2 2 Move direct byte to direct 2 3 Move indirect RAM to direct byte 2 2 8OC51 BH/80C51 BH·2 80C31 BH/80C31 BH·2 Table 2. MCS<8>·51 Instruction Set Description (Continued) DATA TRANSFER (CONTINUED) PROGRAM AND MACHINE CONTROL Mnemonic direct,#data MOV Mnemonic ACALL addrll MOV MOV MOV MOV MOVC MOVC MOVX MOVX MOVX MOVX PUSH POP XCH XCH XCH XCHD Description Byte Cyc Move immediate data tb direct byte 2 3 @Ri,A Move Accumulator to indirect RAM @Ri,direct Move direct byte to indirect RAM 2 2 @RI,#data Move immediate data to indirect RAM 2 DPTR,#data16 Load Data Pointer with a 16-bit constant 3 2 A,@A+DPTR Move Code byte relative to DPTRtoA 2 A,@A+PC Move Code byte relative to PCtoA 2 A,@Ri Move External RAM (6bit addr) to A 2 A,@DPTR Move External RAM (16bit addr) to A 2 @Ri.A Move A to External RAM (6-bit addr) 2 @DPTR,A Move A to External RAM (l6-bit addr) 2 direct Push direct byte onto stack 2 2 direct Pop direct byte from stack 2 2 A,Rn Exchange register with Accumulator A,direct Exchange direct byte with Accumulator 2 A,@Ri Exchange Indirect RAM with A A,@Ri Exchange low-order Digit ind RAM w A BOOLEAN VARIABLE MANIPULATION Mnemonic CLR C bit CLR SETB C SETB bit CPL C CPL bit ANL C,bit ANL C,/bit ORL C/bit OAL C.lblt MOV C,/blt MOV blt,C Description Byte eyc Clear Carry fl1l9 1 1 Clear direct bit 2 1 Set Carry flag 1 1 Set direct Bit 2 1 Complement Carry flag 1 1 Complement direct bit 2 1 AND direct bit to Carry flag 2 2 AND complement of direct bit to Carry 2 2 OR direct bit to Carry flag 2 2 OR complement of direct bit to Carry 2 2 Move direct bit to Carry flag 2 Move Carry flag to direct bit 2 2 Description Byte Cyc Absolute Subroutine Call 2 2 LCALL addr16 Long Subroutine Call 3 2 RET Return from subroutine 1 2 RETI Return from ihterrupt 1 2 AJMP addrll Absolute Jump 2 2 LJMP addr16 Long Jump 2 3 SJMP rei Short Jump (relative addr) 2 2 @A+DPTR JMP Jump indirect relative to the DPTR 2 rei JZ Jump if Accumulator is Zero 2 2 rei JNZ Jump if Accumulator IS Not Zero 2 2 rei JC Jump if Carry flag is set 2 2 JNC rei Jump if No Carry flag 2 2 bit, rei JB Jump if direct Bit set 3 2 JNB blt,rel Jump If direct Bit Not set 2 3 bit, rei Jump if direct Bit is set JBC & Clear bit 2 3 CJNE A,dlrect,rel Compare direct to A & Jump if Not Equal 3 2 CJNE A,#data,rel Comp, immed, to A & Jump If Not Equal 3 2 CJNE Rn,#data,rel Comp, immed, to reg & Jump If Not Equal 3 2 CJNE @Ri,#data,rel Comp, Immed, to ind, & ;1 Jump if Not Equal 3 DJNZ Rn,rel Decrement register & Jump If Not Zero 2 2 Decrement direct & DJNZ direct, rei Jump If Not Zero 3 2 NOP No operation 1 1 Notes on data addressing modes: Rn -Working register RO-R7 -128 Internal RAM locations, any I/O port, direct control or status register -Indirect internal RAM location addressed by @RI register RO or Rl -8-blt constant included ,in instruction #data #datal6 -16-bit constant Included as bytes 2 & 3 of instruction bit -128 software flags, any 1/0 pin, control or status bit Notes on program addressing modes: addr16 -Destination address for LCALL & LJMP may be anywhere within the 64-K program memory address space Addrl1 -Destination address for ACALL & AJMP will be within the same 2-K page of program memory as the first byte of the following instruction rei -SJMP and all conditional jumps include an 8bit offset byte, Range is +127-128 bytes relative to first byte of the following instruction All mnemonics copyrighted © Intel Corporation 1979 8OC51 BHJ80C51 BH~2 80C31 BH/80C31 BH~2 inter Table 3. Instruction Op~odes !n Hexldeclmal Order Hex Code 00 01 02 03 04 05 06 07 08 09 OA 08 OC 00 OE OF 10 11 12 13 14 15 16 17 18 19 1A 18 1C 10 1E IF 20 21 22 23 24 25 26 27 28 29 2A 28 2C 20 2E 2F 30 31 32 Nun:tber Mnemonic of Bytes 1 2 3 1 1 2 1 1 1 1 1 1 1 1 1 1 3 2 3 1 1 2 1 1 1 1 1 1 1 1 1 1 3 2 1 1 2 2 1 1 1 1 1 1 1 1 1 1 3 2 1 NOP AJMP LJMP RR INC INC INC INC INC INC INC INC INC INC INC INC J8C ACALL LCALL RRC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC J8 AJMP RET RL ADD ADD ADD ADD ADD ADD ADD ADD' ADD ADD ADD ADD JN8 ACALL RETI Hex Code Operands" 33 34 35 36 37 38 39 3A 38 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 40 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 58 5C 50 5E 5F 60 61 62 63 64 65 code addr code addr A A data addr @RO @R1 RO R1 R2 R3 R4 R5 R6 R7 bit addr, code addr code addr code addr A A data aridr @RO @R1 RO R1 R2 R3 R4 R5 R6 R7 bit addr, code addr code addr A A,#data A,data addr A,@RO A,@R1 A,RO A,R1 A,R2 A,R3 A,R4 A,R5 A,R6 A,R7 bit addr, code addr code addr 9-36 Number Mnemonic of Byles 1 2 2 1 1 1 1 1 1 1 1 1 1 2 2 2 3 2 2 1 1 1 1 1 1 1 1 1 1 2 2 2 3 2 2 1 1 1 1 1 1 1 1 1 1 2 2 2 3 2 2 RLC ADDC ADDC ADDC AD DC ADDC ADDC AD DC ADDC ADDC ADDC ADDC AD DC JC AJMP ORL ORL ORL ORL ORL ORL ORL ORL ORL GRL GRL GRL ORL ORL JNC ACALL ANL ANL ANL ANL ANL ANL ANL ANL ANL ANL ANL ANL ANL ANL JZ AJMP XRL XRL XRL XRL Operands" A A,#data A,data addr A,@RO A,@R1 A,RO A,R1 A,R2 A,R3 A,R4 A,R5 A,R6 A,R7 code"addr code addr dataaddr,A data addr,#data A,#data A,data addr A,@RO A,@R1 A,RO A,R1 A,R2 A,R3 A,R4 A,R5 A,R6 A,R7 code addr codeaddr dataaddr,A data addr,#data A,#data A,data addr A,@RO A@R1 A,RO A,R1 A,R2 A,R3 A,R4 A,R5 A,R6 A,R7 codeaddr code addr dataaddr,A data addr,#data A,#data A,data addr 80C51 BH/80C51 BH~2. 80C31 iBH/80C31 BH-2 'Table 3. Instruction Opcodes In Hexldeclmal Order (Continued) Hex Code 66 67 68 69 SA 6B 6C 60 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 SA 8B 8C 80 8E 8F 90 91 92 93 94 95 96 97 98 Number Mnemonic 01 Bytes 1 1 1 1 1 1 1 1 1 1 2 2 2 1 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 3 2 2 2 2 2 2 2 2 2 2 3 2 2 1 2 2 1 1 1 XAL XAL XAL XAL XAL XAL XAL XAL XAL XAL JNZ ACALL OAL JMP MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SJMP AJMP ANL MOVC OIV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV ACALL MOV MOVC SUBB SUBB SUBB SUBB SUBB Operands Hex Code A,@AO A,@A1 A,AO A,A1 A,A2 A,A3 A,A4 99 9A 9B 9C 90 9E 9F AD A1 A2 A3 A4 AS A6 A7 A8 A9 AA AB AC AO AE AF BO B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BO BE BF CO C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB A,A~ A,A6 A,A7 code addr code addr C,bI! addr @A+OPTA A,#data data addr,#data @AO,#data @A1,#data AO,#data A1,#data A2,#dah:l A3,#data A4,#data A5,#data A6,#data A7,#data code addr code addr C,blt addr A,@A+PC AB data addr, data addr data addr,@AO data addr,@A1 data addr,AO data addr,A 1 data addr,A2 data addr,A3 data addr,A4 data addr,A5 data addr,A6 data addr,A7 OPTA,#data code addr bit addr,C A,@A+OPTA A,#data A,data addr A,@AO A,@A1 A,AO 9-37 Number Mnemonic 01 Bytes 1 1 1 1 '1 1 1 2 2 2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 1 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 1 1 2 1 1 1 1 1 1 SUBB SUBB SUBB SUBB SUBB SUBB SUBB OAL AJMP MOV INC MUL reserved MOV Moll MOV MOV MOV MOV MOV MOV MOV MOV ANL ACALL CPL CPL CJNE . CJNE CJNE CJNE CJNE CJNE CJNE CJNE CJNE CJNE CJNE CJNE PUSH AJMP CLA CLA SWAP XCH XCH XCH XCH XCH XCH XCH Operands A,A1 A,A2 A,A3 A,A4 A,A5 A,A6 A,A7 CJblt addr codeaddr C,blt addr OPTR AB @AO,data adr @R1,data addr AO,data addr A1,data addr A2,data addr A3,data addr A4,data addr A5,data addr A6,data addr A7,data addr C.lbI! addr code addr bl't addr C A,#data,code addr A,data addr,code addr @AO,#data,code addr @A1,#data,code addr AO,#data,code addr A1,#data,code addr A2,#data,code addr A3,#data,code addr A4,#data,code addr A5,#data,code addr A6,#data,code addr A7,#data,code addr data addr code addr bit addr C A A,data addr A,@AO A,@Al A,AD A,A1 A,A2 A,A3 8q0518ti/80C518H-2 80C31a!"l/8,OC3~BH-2 Table 3. Instruction Opc~es III Hexldeclmal O,der(Cqntlllued) Hex Code CC CD CE CF DO 01 02 ,03 04 05 06 07 08 09 DA OS DC DO DE OF EO E1 E2 E3 E4 E5 Number Mnemonic of Bytes 1 1 1 1 2 2 2 1 1 3 1 1 2 2 2 2 2 2 2 2 1 2 1 1 1 2 XCH XCH XCH XCH POP ACALL SETS SETS DA DJNZ XCHD XCHD DJNZ DJNZ DJNZ DJNZ DJNZ DJNZ DJNZ DJNZ MOVX AJMP MOVX MOVX CLR MOV Hex Code Operal1ds A,R4 A,R5 A,R6 A,R7 data addr code addr bit addr C A data addr,code addr A,@RO A,@R1 RO,code addr R1,codeaddr R2,code addr R3,code addr R4,code addr R5,code addr R6,code addr R7,code addr A,@DPTR code addr A,@RO A,@R1 A A,data addr E6 E7 E8 E9 EA ES EC ED EE EF FO F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FS FC FD FE FF 9-38 Number Mnemonic of Bytes 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 2 1 1 1 1 1 1 1 1 1 1 MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOVX ACALL MOVX MOVX CPL MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV Operands A,@RO A,@R1 A,RO A,R1 A,R2 A,R3 A,R4 A,R5 A,R6 A,R7 @DPTR,A code addr @RO,A @R1,A A data addr,A @RO,A @R1,A RO,A R1,A R2,A R3,A R4,A R5,A R6,A R7,A S031 AH/S051 AH S032AH/S052AH S751 H/S751 H EXPRESS • Extended Temperature Range • Burn-In The Intel EXPRESS system offers enhancements to the operational specifications of the MCS®-51 family of microcontrollers. These EXPRESS products are designed to meet the needs of those applications whose operating requirements exceed commercial standards. The EXPRESS program includes the commercial standard temperature range with burn-in, and an extended temperature range with or without burn-in. With the commercial standard temperature range operational characteristics are guaranteed over the temperature range of O°C to 70°C. With the extended temperature range option, operational characteristics are guaranteed over the range of -40°C to + 85°C. The optional burn-in is dynamic, for a minimum time of 160 hours at 125°C with VCC = 5.5V ±0.5V, following guidelines in MIL-STD-883, Method 1015. Package types and EXPRESS versions are identified by a one- or two-letter prefix to the part number. The prefixes are listed in Table 1. For the extended temperature range option, this data sheet specifies the parameters which deviate from their commercial temperature range limits. The commercial temperature range data sheets are applicable for all parameters not listed here. Electrical Deviations from Commercial Specifications for Extended Temperature Rahge D.C. and A.C. parameters not included here are the same as in the commercial temperature range data sheets. D.C. CHARACTERISTICS: (TA = -40°C to +85°C; VCC = 5V ±10%; VSS = OV) Symbol Parameter V,L Input Low Voltage V,H Input High Voltage (Except XTAL2, RST) ICC Power Supply Current: 8051 AH,8031 AH 8052AH,8032AH 8751 H,8751 H Min Max Unit -0.5 0.75 V 2.1 VCC+0.5 V 135 175 265 ma ma ma 9-39 Test Conditions All Outputs Disconnected; EA =VCC [?>1Rl~ulMil~IM~IRlW MCS(!)·51 EXPRESS 'c Table 1 - Prefix Identification Prefix Package .Type Temper~ture Range Burn-In P plastic . commercial D cerdip commercial no C ceramic commercial no no TP plastic extended no TO cerdip extended no TC ceramic extended no QP plastic commercial yes QD cerdip commercial yes QC ceramic commercial yes LP plastic extended yes LD cerdip extended yes LC ceramic extended yes Please note: • Corpmercial temperature range is 0° to. 70°C. Extended temperature range is - 40° to + 85°C. • Burn-in is dynamic, for a minimum time of 160 hours at 125°C, VCC = 5.5V ±0.5V, following guidelines in MIL-STO-883 Method 1015 (Test Condition OJ. • The following devices are not available in plastic packages: 8751 H,8751 H • The following devices are not available in ceramic packages: 8051AH,8031AH . 8052AH,8032AH Examples: P8031AH indicates 8031AH in a plastic package and specified for commercial temperature range, without burn-in. LD8751 H indicates 8751 H in a cerdip package and specified for extended temperature range with burn-in. 9-40 MCS®~51 Application Notes 10 An Introduction to the Intel MCS®-S1 Single-Chip Microcomputer Family Contents 1. INTRODUCTION. . . . . . . . . . . . . . . . . . . . . . 10-2 Family Overview . . . . . . . . . . . . . . . . . . . . . . 10-2 Microcomputer Background Concepts. . . . . . . . . . 10-3 2. ARCHITECTURE AND ORGANIZATION ........ 10-5 Central Processing Unit ... .' . . . . . . . . . . . . . . 10-6 Memory Spaces . . . . . . . . . . . . . . . . . . . . . . 10-9 Input/Output Ports . . . . . . . . . . . . . . . . . . . . 10-1 0 Special Peripheral Functions . . . . . . . . . '.' ... 10-11 3. INSTRUCTION SET AND ADDRESSING MODES . . . . . . . . . . . . . . . . 10-15 Data Addressing Modes. . . . . . . . . . . . . . . . . 10-15 Addressing Mode Combinations . . . . . . . . . . . . 10-18 Advantages of Symbolic Addressing. . . . . . . . . . 10-18 Arithmetic Instruction Usage . . . . . . . . . . . . . . 10-19 Multiplication and Division . . . . . . . . . . . . . . . . 10-20 Logical Byte Operations. . . . . . . . . . . . . . . . . 10-20 Program Control .. '..................... 10-21 Operate-and-Branch Instructions. . . . ~ . . . . . . . 10-22 Stack Operations. . . . . . . . . . . . . . . . . . . . . 10-22 Table Look-Up Instructions . . . . . . . . . . . . . . . 10-23 4•. BOOLEAN PROCESSING INSTRUCTIONS ..... 10-25 Direct Bit Addressing. . . . . . . . . \ . .. . . . . . . 10-~5 Bit Manipulation Instructions . . . . . . . . . . . . . . 10-25 Solving Combinatorial Logic Equations ........ '10-26 5. ON-CHIP PERIPHERAL FUNCTIONS ........ 10-28 VO Ports. . . . . . . . . . . . . . : . . . . . . . . . . . 10-28 Serial' Port and Timer . . . . . . . . . . . . . . . . • .. 10-29 6. SUMMARY . • . . . . . . . . . . . . . . . , ...... 10-30 10-1 vSs P1.0 P1.1 P1.2 P1.3 P1.4 P1.S P1.6 P1.7 VPD/RST P3.0/RXD P3.1/TXD P3.2/iMi'O P3.4/TO P3.S/T1 P3.6/WR P3.71Ro XTAL2 XTAL1 VSS vee RST /vPD vee po.o PO.1 PO.2 PO.3 PM PO.S PO.6 PO.7 VDD/EA PiiOG/ALE PSEN P2.7 P2.6 P2.S TXD INTO P2.4 PORT 3 P2.3 P2.2 P2.1 P2.0 IN~; RXD t T1 \Vii AD Figure 1a. 8051 Microcomputer Pinout Diagram Figure 1b. 8051 Microcomputer Logic Symbol 1. INTRODUCTION some microprocessor (preferably Intel's. of course) or have a background in computer programming and digital logic. In 1976 Intel introduced the MCS-48'· family, consisting of the 8048, 8748, and 8035 microcomputers. These parts marked the first time a complete microcomputer system. including an eight-bit CPU, 1024 8-bit words of ROM or EPROM program memory, 64 words .of data memory, I/O ports and an eight-bit timer/counter could be integrated onto a single silicon chip. Depending only on the program memory contents, one chip could control a limitless variety of products, ranging from appliances or automobile engines to text or data processing equipment. Follow-on products stretched the MCS-48'· architecture in several directions: the 8049 and 8039 doubled the amount of on-chip memory and ran 83% faster; the 8021 reduced costs by executing a subset of the 8048 instructions with a somewhat slower clock; and the 8022 put a unique two-channel 8-bit analog-to-digital converter on the same NMOS chip as the computer. letting the chip interface directly with analog transducers. Family Overview Pinout diagrams for the 8051. 8751. and 8031 are shown in Figure I. The devices include the following features: • Single-supply 5 volt operation using HMOS technology. • 4096 bytes program memory on-chip (not on 8031). • 128 bytes data memory on-chip. • Four register banks. • 128 User-defined software flags. • 64 Kilobytes each program and external RAM addressabifity. • One microsecond instruction cycle with 12 MHz crystal. • 32 bidirectional I/O lines organized as four 8-bit ports (16 lines on 8031). • Multiple mode. high-speed programmable Serial Port. • Two mUltiple mode. 16-bit Timer/Counters. • Two-level prioritized interrupt structure. • Full depth stack for subroutine return linkage and data storage. • Augmented MCS-48'· instruction set. • Direct Byte and Bit addressability. • Binary or Decimal arithmetic. • Signed-overflow detection and parity computation. • Hardware Multiple and Divide in 4 usec. • Integrated Boolean Processor for control applications. • Upwardly compatible with existing 8048 software. Now three new high-performance single-chip microcomputers--the Intel® 8051, 8751, and 8031-extend the advantages of Integrated Electronics to whole new product areas. Thanks to Intel's new HMOS technology. the MCS-51'· family provides four tlnes the program memory and twice the data memory as the 8048 on a single chip. New I/O and peripheral capabilities both increase the range of applicability and reduce total system cost. Depending on the use. processing throughput increases by two and one-half to ten times. This Application Note is intended to introduce the reader to the MCS-51'· architecture and features. While it does not assume intimacy with the MCS-48'· product line on the part of the reader, he/she should be familiar with AFN-01502A-04 10-2 ware application examples illustrate many of the concepts. Several isolated tasks (rather than one complete system design example) are presented in the hope that some of them will apply to the reader's experiences or needs. All three devices come in a standard 40-pin Dual InLine Package, with the same pin-out, the same timing, and the same electrical characteristics. The primary difference between the three is the on-chip program memory-different types are offered to satisfy differing user reqUirements. A document this short cannot detail all of a computer system's capabilities. By no means will all the 80S I instructions be demonstrated; the' intent is to stress new or unique MCS-Sl '" operations and instructions generally used in conjunction with each other. For additional hardware information refer to the Intel MCS-51'· Family User's Manual, publication number 121517. The assembly language and use of ASM51, the MCS-51'" assembler, are further described iii the MCS-51'· Macro Assembler User's Guide, publication number 9800937. The 87S1 provides 4K bytes of ultraviolet-Erasable, Programmable Read Only Memory (EPROM) for program development, prototyping, and limited production runs. (By convention, I K means 2'0 = 1024. Ik-with a lower case "k"-equals 10.1 = 1000.) This part may be individually programmed for a specific application using Intel's Universal PROM Programmer (UPP). If software bugs are detected or design specifications change the same part may be "erased" in a matter of minutes by exposure to ultraviolet light and reprogrammed with the modified code. This cycle may be repeated indefinitely during the design and development phase. The next section reviews some of the basic concepts of microcomputer design and use. Readers familiar with the 8048 may wish to skim through this section or skip directly to the next, "ARCHITECTURE AND ORGANIZATION." The final version of the software must be programmed into a large number of production parts. The 80S1 has 4K bytes of ROM which are mask-programmed with the customer's order when the chip is built. This part is considerably less expensive, but cannot be erased or altered after fabrication. Microcomputer Background Concepts Most digital computers use the binary (base 2) number system internally. All variables, constants, alphanumeric characters, program statements, etc., are represented by groups of binary digits ("bits"), each of which has. the value 0 or I. Computers are classified by how many bits they can move or process at a time. The 8031 does not have any program memory on-chip, but may be used with up to 64K bytes of external standard or multiplexed ROMs, PROMs, or EPROMs. The 8031 fits well in applications requiring significantly larger or smaller amounts of memory than the 4K bytes provided by its two siblings. The MCS-51'" microcomputers contain an eight-bit central processing unit (CPU). Most operations process variables eight bits wide. All internal RAM and ROM, and virtually all other registers are also eight bits wide. An eight-bit ("byte") variable (shown in Figure 2) may assume one of 28 = 256 distinct values, which usually represent integers between 0 and '2SS. Other types of numbers, instructions, and so forth are represented by one or more bytes using certain conventions. (The 80S I and 87S1 automatically access external program memory for all addresses greater than the 4096 bytes on-chip. The External Access input is an override for all internal program memory-the 80S1 and 87S1 will each emulate an 8031 when pin 31 is low.) Throughout this Note, "80SI" is used as a generic term. Unless specifically stated otherwise, the point applies equally to all three components. Table I summarizes the quantitative differences between the members of the MCS-48'· and MCS-Sl'" famifies. For example, to represent positive and negative values, the most significant bit (D7) indicates the sign of the other seven bits-O if positive, I if negative-allowing integer variables. between -128 and +127. For integers with extremely large magnitudes, several bytes are manipulated together as "multiple precision" signed or unsigned integers-16, 24, or more bits wide. The remainder of this Note discusses the various MCS-Sl'" features and how they can be used. Software and/or hard- Table 1. Features of Intel's Single-Chip Microcomputers EPROM Program Memory - 8748 8751 ROM Program Memory 8021 8022 8048 8049 8051 External Program Memory - 8035 8039 8031 Program Memory (Int/Max) Data Memory (Bytes) Instr. Cycle Time Inputl Output Pins Interrupt Sources Reg. Banks IKjlK 2K/2K IK/4K 2K/4K 4K/64K 64 64 64 128 128 8.4I'Sec 8.41'Sec 2.51'Sec 1.361'Sec 1.0 "Sec 21 28 27 27 32 0 2 2 2 5 I I 2 2 4 AFN-01S02A-05 10-3 a single character, and a word or sequence of letters may be represented by a series (or "string") of bytes, Since the ASCII code only uses 128 characters, the most significant bit of the byte is not needed to distinguish between characters. Often 07 is set to 0 for all characters. In some coding schemes, 07 is used to indicate the "parity" of the other seven bits-set or cleared as necessary to ensure that the total number of "I" bits in the eight-bit code is even ("even parity") or odd ("odd parity"). The 8051 includes hardware to compute parity when it is needed, The letters "MCS" have traditionally indicated a system or family of compatible Intel® microcomputer components, including CPUs, memories, clock generators, I/O expanders, and so forth. The numerical suffix indicates the microprocessor or microcomputer which serves as the cornerstone of the family.. Microcomputers in the MCS-48'· family currently include the 8048-series (8035,8048, & 8748), the 8049-series (8039 & 8049), and the 8021 and 8022; the family also includes the 8243, an I/O expander compatible with each of the microcomputers. Each computer's CPU is derived from the 8048, with essentially the same architecture, addressing modes, and instruction set, and a single assembler (ASM48) serves each. A computer program consists of an ordered sequence of specific, simple steps to be executed by the CPU one-ata-time, The method or sequence of steps used collectively to solve the user's application is called an "algorithm," The program is stored inside the computer as a sequence of binary numbers, where each number corresponds to one of the basic operations ("opcodes") which the CPU is capable of executing, In the 8051, each program memory location is one byte. A complete instruction consists of a sequence of one or more bytes, where the first defines the operation to be executed and additional bytes (if needed) hold additional information, such as data values or variable addresses. No instruction is longer than three bytes. The first members of the MCS-51'· family are the 8051, 8751, and 8031. The architecture of the 8051-series, while derived from the 8048, is not strictly compatible; there are more addressing modes, more instructions, larger address spaces, and a few other hardware differences. In this Application Note the letters "MCS-51" are used when referring to architectural features of the 8051-series-features which would be included on possible future microcomputers based on the 8051 CPU. Such products could have different ,amounts of memory (as in the 8048/8049) or different peripheral functions (as in the 8021 and 8022) while leaving the CPU and instruction set intact. ASM51 is the assembler used' by all micr,ocomputers in the 8051 family, The way in which binary opcodes and modifier bytes are assigned to the CPU's operations is called the computer's "machine language," Writing a program directly in machine language is time-consuming and tedious, Human beings think in words and concepts rather than encoded numbers, so each CPU operation and resource is given a name and standard abbreviation ("mnemonic"), Programs are more easily discussed using these standard mnemonics, or "assembly language," and may be typed into an Intel® Intellec® 800 or Series II® microcomputer development system in this form. The development system can mechanically translate the program from assembly language "source" form to machine language "object" code using a program called an "assembler." The MCS-5I'· assembler is called ASM51. Two digit decimal numbers may be "packed" in an eightbit value, using four bits for the binary code of each digit. This is called Binary-Coded Decimal (BCD) representation, and is often used internally in programs which interact heavily with human beings, There are several important differences between a com- puter's machine language and the assembly language used as a tool to represent it. The machine language or instruction set is the set of operations which the CPU can perform while a program is executing ("at run-time"), and is strictly determined by the microcomputer hardware design. Alphanumeric characters (letters, numbers, punctuation marks, etc.) are often represented using the American Standard Code for Information Interchange (ASCII) convention, Each character is associated with a unique seven-bit binary number. Thus one byte may represent 07 06 ,05 04 03 02 01 The assembly language is a standard (though more-orless arbitrary) set of symbols including the instruction set mnemonics. but with additional features which further simplify the program design process, For example. ASM51 has controls for creating and formatting a program listing, and a number of directives for allocating variable storage and inserting arbitrary bytes of data into the object code for creating tables of constants. DO Figure 2. Representation of Bits Within an Eight-Bit "Byte" (Value shown = 01010001 Binary = 81 decimal). AFN-01502A-06 10-4 assembly language by a series of ones and zeros (naturally), followed by the letter "B" (for Biflary); octal numbers as a series of octal digits (0-7) followed by th'e letter "0" (for Octal) or "Q" (which doesn't stand for anything, but looks sort of like an "0" and is less likely to be confused with'a zero). In addition, ASM51 can perform sophisticated mathematical operations, computing addresses or evaluating arithmetic expressions to relieve the programmer from this drudgery. However, these calculations can only use information known at "assembly time." For example, the 8051 performs arithmetic calculations at run-time, eight bits at a time. ASM51 can do similar operations 16 bits at a time. The 8051 can only do one simple step per instruction, while ASM51 can perform complex calculations in each line of source code. How~ ever, the operations performed by the assembler may only use parameter values fixed at assembly-time, not variables whose values are unknown until program execution begins. Hexadecimal numbers are represented by a series of hexadecimal digits (O-9,A-F), followed by (you guessed it) the letter "H." A "hex" number must begin with a decimal digit; otherwise it would look like a user-defined symbol (to be discussed later). A "dummy" leading zero may be inserted before the first digit to meet this constraint. The character string "BACH" could be a legal label for a Baroque music synthesis routine; the string "OBACH" is the hexadecimal constant BAC'6' This is a case where adding 0 makes a big difference. For example, when the assembly language source line, ADD A,#(LOOP_COUNT + I) * 3 Decimal numbers are represented by a sequence of decimal digits, optionally followed by a "D." If a number has no suffix, it is assumed to be decimal-so it had better not contain any non-decimal digits. "OBAC" is not a legal representation for anything. is assembled, AS M51 will find the value of the previously-defined constant "LOOP_COUNT" in an internal symbol table, increment the value, mUltiply the sum by three, and (assuming it is between -256 and 255 inclusive) truncate the product to eight bits. When this instruction is executed, the 8051 ALU will just add that resulting constant to the accumulator. When an ASCII code is needed in a program, enclose the desired character between two apostrophes (as in 'W) and the assembler will convert it to the appropriate code (in this case 23H). A string of characters between apostrophes is translated into a series of constants; 'BACH' becomes 42H, 41H, 43H, 48H. Some similar differences exist to distinguish number system ("radix") specifications. The 8051 does all computations in binary (though there are provisions for then converting the result to decimal form). In the course of writing a program, though, it may be more convenient to specify constants using some other radix, such as base Hr. On other occasions, it is desirable to specify the ASCII code for some character or string of c'haracters without refering to tables. ASM51 allows several representations for constants, which are converted to binary as each instruction is assembled. These same conventions are used throughout the associated Intel documentation. Table 2 illustrates some of the different number formats. 2. ARCHITECTURE AND ORGANIZATION Figure 3 blocks out the MCS-51'· internal organization. Each microcomputer combines a Central Processing Unit, two kinds of memory (data RAM plus program ROM or EPROM), Input/Output ports"and the mode, For example, binary numbers are represented in the Table 2. Notations Used to Represent Numbers Bit Pattern Binary Octal HexaDecimal OQ ·IQ OOH OIH Decimal ,0 +1 00000000 00000001 OB IB ... .. 00000111 00001000 00001001 00001010 IIIB 10008 100IB 10 lOB 7Q IOQ IIQ 12Q 07H 08H 09H OAH 7 8 9 10 00 0 0 1 1 1 1 00010000 II liB 10000B 17Q 20Q OFH IOH 15 16 127 128 129 +127 -128 -127 -2 -I ............... ............... ............... o1 .. .. .. . .. . .. ... ... ... 0 I 'Signed Decimal .. .. 1 1 1 1 1 1 10000000 10000001 IIIIIIIB 100000008 1000000lB I77Q 200Q 20lQ 7FH 80H 81H ... . .. 1 1 1 1 I 1 I 0 1 1 1 II 1 1 1 111111 lOB IIIIIIIIB 376Q 377Q OFEH OFFH 254 255 ............... ........ ... .... +7 +8 +9 +10 . ... +15 +16 . ... .... AFN-01S02A-07 10-5 TMOD TlO THO Tll SERIAL PORT ~ IP PORT 3 INTERRUPT CONTROL THI TIMER CONTROL Figure 3. BI.ock Diagram of 8051 Internal Structure status, and data registers and random logic needed for a variety of peripheral functions. These elements communicate through an eight-bit data bus which runs throughout the chip, somewhat akin to indoor plumbing. This bus is buffered to the outside world through an I/O port when memory or I/O expansion is desired. Let's summarize what each block does; later chapters dig into the <;:PU's instruction set and the peripheral registers in much greater detail. Central Processing Unit The CPU is the "brains" of the microcomputer, reading the user's program and executing the instructions stored therein. Its primary elements are an eight-bit Arithmetic/ Logic Unit with associated registers A, B, PSW, and SP, and the sixteen-bit Program Counter and "Data Pointer registers. M AFN-01502A~08 10-.6 Arithmetic Logic Unit • • • • • The ALU can perform (as the name implies) arithmetic and logic functions on eight-bit variables. The former include basic addition, subtraction, mUltiplication, and division; the latter include the logical operations AND, OR, and Exclusive-OR, as well as rotate, clear, complement, and so forth. The ALU also makes conditional branching decisions, and provides data paths and temporary registers used for data transfers within the system. Other instructions are built up from these primitive fUnctions: the addition capability can increment registers or automatically compute program. destination addresses; subtraction is also used in decrementing or comparing the magnitude of two variables. Arithmetic Operations Logical Operations for Byte Variables Data Transfer Instructions Boolean Variable ManipUlation Program Branching and Machine Control MCS_48™ programmers perusing Table 4 will notice the absence of special categories for Input/Output, Timer/ Counter, or Control instructions, These functions are all still provided (and indeed many new functions are added), but as special cases of more generalized operations in other categories. To explicitly list all the useful instructions involving I/O and peripheral registers would require a table approximately four times as long, Thes'e primitive operations are automatically cascaded and combined with dedicated logic to build complex instructions such as incrementing a sixteen-bit register pair. To execute one form of the compare instruction, for example, the 8051 increments the program counter three times, reads three bytes of program memory, computes a register address with logical operations, reads internal data memory twice, makes an arithmetic comparison of two variables, computes a sixteen-bit destination address, and decides whether or not to make a branch-all in two microseconds! An important and unique feature of the MCS-51 architecture is that the ALU can also manipulate one-bit as well as eight-bit data types. Individual bits may be set, cleared, or complemented, moved, tested, and used in logic computations. While support for a more primitive data type may initially seem a 'step backwards in an era of increasing word length, it makes the 8051 especially well suited for controller-type applications. Such algorithms inherent~1" involve Boolean (true/false) input and output variables, which were heretofore difficult to implement with standard microprocessors. These features are collectively referred to as the MCS_5ITM "Boolean Processor," and are described in the so-named chapter ,to come. Observant readers will also notice that all of the 8048's page-oriented instructions (conditional jumps, JMPP, MOVP, MOVP3) have been replaced with corresponding but non-paged instructions. The 8051 instruction set is entirely non-page-oriented. The MCS_48™ "MOVP" instruction replacement and all conditional jump instructions operate relative to the program counter, with the actual jump address computed by the CPU during instruction execution, The "MOVP3" and "JMPP" replacements are now made relative to another sixteen-bit register, which allows the effective destination to be anywhere in the program memory space, regardless of where, the instruction itself is located, There are even three-byte jump and call instructions allowing the destination to be anywhere in the 64K program address space. The instruction set is designed to make programs efficient both in terms of code size and execution speed. No instruction requires more than three bytes of program memory, with the majority requiring only one or two bytes. Virtually all instructions execute in either one or two instruction cycles-one or two microseconds with a 12-MHz crystal-with the sole exceptions (multiply and divide) completing in four cycles. Thanks to this ,powerful ALU, the 8051 instruction set fares well at both real-time control and data intensive algorithms. A total of 51 separate operations move and manipulate three data types: Boolean (I-bit), byte (8-bit), and address (l6-bit). All told, there are eleven addressing modes-seven for data, four for program sequence control (though only eight are used by more than just a few specialized instructions), Most operations allow several addressing modes, bringing the total number of instructions (operation/addressing mode combinations) to Ill, encompassing 255 of the 256 possible eight-bit instruction opcodes. Instruction Set Overview Table 4 lists these III instructions classified into five groups: Many instructions such as arithmetic and logical functions or program control, provide both a short and a long form for the same operation, allowing the programmer to optimize the code produced for a sp~cific application. The 8051 usually fetches two instruction bytes per instruction cycle, so using a shorter form can lead to faster execution as welL For example, any byte of RAM may be loaded with a with a three-byte, two-cycle instruction, but the commonly used "working regi~ters" in RAM may be initialized in One cycle with a two-byte form. Any bit anywhere on the chip may be set, cleared, or complemented by a single three-byte logical instruction using two cycles. But critical control bits, I/O pins, and software flags may be controlled by two-byte, single cycle Instructions. While three-byte jumps and calls can "go anywhere" in program memory, nearby sections of code may be reached by.shorter relative or absolute versions. const~nt AFN-01S02A-09 1,0-7 (MSB) (LSB) Symbol Position CY PSW.7 Symbol Position Name and Significance OV PSW.2' Overflow flag. Set/cleared by hardware dunng arithmetic instructions to indicate overflow conditions. Name and Significance Carry flag. Set/cleared by hardware or software during certain arithmetic and logical " instructions. P AC PSW.6 Auxiliary Carry flag. Set/cleared by hardware during addition or subtraction instructions to indicate carry or borrow ~ut of bit 3. FO PSw.s Flag 0 Set/cleared/tested by software as a user-defined status flag. ' PSW.I (reserved) psw,o Parity flag. Set/cleared by hardware each instruction cycle to indicate an odd / even number of "one" bits in the accumulator. i.e .• even parity. Note- the contents of (RSI. RSO) enable the working register banks as follows: (O.O)~ Bank RSI PSW.4 RS PSW.3 Register bank Select control bits I & O. Set/cleared by software to determine working register bank (see Note). (O.I)~Bank 0 I (1.0)~Bank 2 3 (I.I)~Bank (OOH-07H) (OSH-OFH) (lOH-I7H) (lSH-IFH) Figure 4. PSW-Program Status Word Organization A significant side benefit of an instruction set more powerful than those of previous single-chip microcomputers is that it is easier to generate applications-oriented software. Generalized addressing modes for byte and bit instruction8 reduce the number of source code lines written and debugged for a given application. This leads in turn to proportionately lower software costs, greater reliability, and faster design cycles. and rotates. The carry also serves as a "Boolean accumulator" for one-bit logical operations and bit manipulation. instructions. The overflow flag (OV) detects when arithmetic overflow occurs on signed integer operands. making two's complement arithmetic possible. The parity flag (P) is updated after every instruction cycle with the evenparity of the accumulator contents. The, CPU does not control the two register-bank select bits, RSI and RSO. Rather, they are manipulated by software to enable one of the four register banks. The usage of-the PSW flags is demonstrated in the Instruction Set chapter of.this Note. Accumulator and PSW The 8051, like its 8048 predecessor, is primarily an accumulator-based architecture: an eight-bit register called the accumulator ("A") holds a source operand and receives 'the result of the arithmetic instructions (addition, subtraction, multiplication, and division). The accumulator can be the source or destinationJor logical operations and a number of special data movement, instructions, including table look-ups and external RAM expansion. Several functions apply exclusively to the accumulator: rotates, parity computation, testing for zero, and so on. Even though the architecture is accumulator-based, provisions have been made to bypass the accumulator in common instruction situations. Data may be moved from any location 6n-chip to any register, address, or indirect address (and vice versa), any register may be loaded with a constant, etc., all without affecting the accumulator. Logical operations may be performed against registers or variables to aIler fields of bits-without using or affecting the accumulator. Variables may be incremented, decremented, or tested without using the accumulator. Flags and control bits may be manipulated and tested without affecting anything else. Many instructions implicitly or explicitly affect (or are affected by) several status flags, which are grouped together to form the Program Status Word shown in Figure 4. (The period within entries under the Position column is called the "dot operator," and indicates a particular bit position within an eight-bit byte. "PSW.5" specifies bit 5 of the PSW. Both the, documentation and ASM51 use this notation.) Other CPU Registers Aspecial eight-bit register ("B") serves in the execution of the multiply and divide instructions. This register is used in conjunction with the accumulator as the second input operand and to return eight-bits of the result. The most "active" status bit is called the carry flag (abbreviated "C"). This bit makes possible mUltiple precision arithmetic operations including addition, subtraction, The MCS-51 family processors include a hardware stack within internal RAM, useful for subroutine linkage. AFN-01502A-10 10-8 passing parameters between routines, temporary variable storage, or saving status during interrupt service routines. The Stack Pointer (SP) is an eight-bit pointer register which indicates the address of the last byte pushed onto the stack. The stack pointer is automatically i~crelJlented or decremented on all push or pop instructions and all subroutine calls and returns. In theory, the stack in the 8051 may be up to a full 128 bytes deep. (In practice, even simple programs would use a handful of RAM locations for pointers, variables, and so forth-reducing the stack depth by that number.) The stack pointer defaults to 7 on reset, so that the stack will start growing up from location 8, just like in the 8048. By altering the pointer contents the stack may be relocated anywhere within internal RAM. Finally, a l6-bit register called the data pointer (OPTR) serves as a base register in indirect jumps, table look-up instructions, and external data transfers. The high- and low-order halves of the data pointer may be manipulated as separate registers (OPH and OPL, respectively) or together using special instructions to load or increment all sixteen bits. Unlike the 8048,look.up tables can there· fore start anywhere in program memory and be of arbitrary length. Memory Spaces Program memory is separate and distinct from data memory. Each memory type has a different addressing mechanism, different control signals, 'and a different function. ' The program memory array (ROM or EPROM), like an elephant, is extremely large and never forgets information, even when power is removed. Program memory is used for information needed each time power is applied: initialization values, calibration constants, keyboard layout tables; etc., as well as the program itself. The program memory has a sixteen-bit address bus; its elements are addressed using the Program Counter or instructions which generate a sixteen-bit address. To stretch our analogy just a bit, data memory is like a mouse: it is smaller and therefore quicker than program memory, and it goes into a random state when electrical power is applied. On-chip data RAM is used for variables which are determined or may change while the program is ruiming. A 'computer spends most of its time manipulating variables, not constants, and a relatively small number of variables at that. Since eight-bits is more than sufficient to uniquely address 128 RAM locations, the on-chip RAM address register is only one byte wide. In contrast to the program memory, data memory accesses need a single eight-bit value-a constant or another variableto specify a unique location. Since this is the basic width of the ALU and the different memory' types, those resources can be used by the addressing mechanisms, contributing greatly to the computer's operating efficiency. The partitioning of program and data memory is extended to off-chip memory expansion. Each, may be added independently, and each uses the same address and data busses, but with different control signals.' External program memory is gated onto the external data bus by the PSm (Program Store Enable) control output, pin 29. External data memory is read onto the bus by the RO output, pin 17, and written with data supplied from. the microcomputer by the WR output" pin 16. (There is no control pin to write external program ROM, whichJs by definition Read Only.) While both types may be expanded to up to 64K bytes, the external data memory may optionally be expanded in 256 byte "pages" to preserve the use of P2 as an I/O port. This is useful with a relatively small expansion RAM (such as the Intel@ 8155) or for addressing external peripherals. Single-chip controller programs are finalized during the project design cycle, and ar~ not modified after production. Intel's single-chip microcomputers are not ''von Neumann" architectures common among main-frame and mini:.computer systems: the MCS-51Tt1 processor data memory-on-chip and external-may not be used for program code. Just as there is no write-control signal for program memory, there is no way for the CPU to execute instructions out of RAM. In return, this concession allows an architecture optimized for efficient controller applications: a large, fixed program located in ROM; a hundred or so variables in RAM, and different methods for efficiently addressing each. (Von Neumann machines are helpful for software development and debug. An 8051 system .could be modified to have a single off-chip memory space by gating together the two memory-read controls (PSEN and RO) with a two-input ANO gate (Figure 5). The CPU could then write data into the common memory array using WIt and AFN-OI502A-ll fO-9 I '1051 ~'ImAII} ~~MORY till lID 1IRRt--_ _ IIIIII"IID ARRAY ~----' Figure 5. Combining External Program and Data Memory Arrays external data transfer instructions, and read instructions or data with the AND gate output and data transfer or program memory look-up instructions.) In addition to the memory arrays, t~re is (yet) another (albeit sparsely populated) physical address space. Connected to the internal data bus are a score of special~ purpose eight-bit registers scattered throughout the chip. Some of these-B, sp, PSW, DPH, and DPL-have been discussed above. Others-I/O ports lind peripheral functiori registers-will be introduced in the following sections. Collectively, these registers are designated as the ~special-functjon register" addres~ space. Even the accumulator is assigned a spot in the special-function register address space for additional flexibility and uniformity. ' Thus, the MCS-Slno'architecture supports ~everal distinct "physical", address spaces, functionally separated at the hardware level ,by different addressing mechanisms, read and write control signals, or both: • '. • • • On-chip program memory; On-chip data memory; Off-chip program memory; Off-chip data memory; On-chip specfal-function registers., What the programmer sees, though, are "logical" address spaces. For example, as ,far ,as the programmer is concerned, there is only one type of program memory, 64K bytes in length. :The fact that it is formed by combining on- and off-chip arrays (split 4K/60K on the,80Sl and 8751) is "invisible" to the programmer; the, CPU automatically fetches each byte from the appropriate array, based on its address. (Presumably, future microcomputers based on' the MCS-SI'· architecture may have a different physical split, , with more or less of the 64K total implemented on-chip. Using the MCS48'· family as a precedent, the 8048's 4K potential program address space was split I K/3K betweep on- and off-chip arrays; the 8049's was split 2K/2K.) , Why go into such tedious details a\>out address spaces? The logical addressing modes are described iri the Instruction Set chapter, in terms of. physical. address spaces. Understanding their differences now will payoff in understanding and using the chips later. ' Input/Output Ports The MCS-SI'· I/O port structure is extremely versatile. The 8051 and 8751 each have 32 I/O pins configured as four eight-bit parallel ports (PO, PI, P2, and P3). Each pin will input or output data (or both) under software control, and each may be referenced by a wide repertoire of byte and bit operations. In various operating,or expansion modes, some of these I/O pins are also used for special input or output functions. Instructions which access external memory use Port 0 as a multiplexed address/data bus: at the beginning of an external memory cycle eight bits of the address are output on PO; later data is transferred on the same eight pins. External data transfer instructions which supply a sixteen-bit address, and any instruction accessing external program memory, output the high-order eight bits on P2 during the access cycle. (The 8031 always uses the pins of PO and P2 for external addressing, but PI and P3 are available for standard I/O.) The eight pins of Port 3 (P3) each have a special function. Two external interrupts. two counter inputs, two serial data lines, and two timing control strobes use pins of P3 as de~cribed in Figure 6. Port 3 pins corresponding' to functions not used are available for conventional I/O. Even within a si~gle port, I/O functions may be. combined in many ways: input and output may be performed using different pins at the same time', or the ~ame pins at different times; in parallel in some cases, and in serial in others;'as test pins, or (in the case of Port 3) as additional special functions. AFN-01S02A-12 (LSB) TO 'INT1 ,'NTO , TXO , RXO I Symbol Position Name and Significance RD P3.7 Read data control output. Active low pulse generated by hardware when external data memory is read. WR P3.6 Symbol Position Name and Significance INTI P3.3 Interrupt I input pin. Low-level or falling-edge triggered. Write data control output. Active low pulse generated by hardware when external data memory is written. TI P3.5 Timer/counter I external input or test pin. TO P3.4 Timer/counter 0 external input or test pin. INTO P3.2 Interrupt 0 input pin. Low-level or falling-edge triggered. TXD P3.1 Transmit Data pin for serial port in UART mode. Clock output in shift register mode. RXD P3.0 Receive Data pin for serial port in UART mode. Data I/O pin in shift register mode. Figure 6. P3-Alternate Special Functions of Port 3 software-accessible). These registers are called, naturally . enough, THO, TLO, THI, and TLI. Each pair may be independently software programmed to any of a dozen modes with a mode register designated TMOD (Figure 7), and controlled with register TCON (Figure 8). The timer modes can be used to measure time intervals, determine pulse widths, or initiate events, witl) one-microsecond resolution, UP. to a maximum interval of 65,536 instruction cycles (over 65 milliseconds). Longer delays may easily be accumulated through software. Configured as a counter, the same hardware will accumulate external events at frequencies from D.C. to 500 KHz, with up to sixteen bits of precision. Serial Port Interface Until now, microprocessor systems needed peripheral chips such as timer/counters, USARTs, or interrupt controllers to meet these needs. The 8051 integrates all of these capabilities on-chip! Each microcomputer contains a high-speed, full-duplex, serial port which is software programmable to function in four basic modes: shift-register I/O expander, 8-bit UART, 9-bit UART, or interprocessor communications link. The UART modes will interface with standard I/O devices (e.g. CRTs, teletypewriters, or modems) at data rates from 122 baud to 31 kilobaud. Replacing the standard 12 MHz crystal with a 10.7 MHz crystal allows 110 baud. Even or odd ,parity (if desired) can be included with simple bit-handling software routines. Inter-processor communications in distributed systems takes place at 187 kilobaud with hardware for automatic address/data message recognition. Simple TTL or CMOS shift registers provide low-cost I/O expansion at a super-fast I Megabaud. The serial port operating modes are controlled by the contents of register SCON (Figure 9). Timer/Counters lriterrupt Capability and Control There are two sixteen-bit multiple-mode Timer/Counters on the 8051, each consisting of a "High" byte (corresponding to the 8048 "T" register) and a low byte (similar to the 8048 prescaler, with the additional flexibility of being (Interrupt capability is generally considered a CPU function. It is being introduced here since, from an applications point of view, interrupts relate more closely to peripheral and system interfacing.) Special Peripheral Functions There are a few special needs common among controloriented computer systems: • keeping track of elapsed real-time; • maintaining a count of signal transitions; • measuring the precise width of input pulses; • communicating with other systems or people; • closely monitoring asynchronous external events. AFN-01502A-13 10-11 (MSB) I I I GATE CIT Ml MO I I I GATE CIT J\ (LSB) Ml MO I M1 MO o o ....,.. TIMER 1 TIMER 0 o 16-bit timer/counter. "THx" and "TLx" are cascaded; there is no prescaler. o GATE Gating control. When set, Timer/counter "x" is enabled only while "INTx" pin is high and "TRx" control bit is set. When ' cleared, timer/counter is enabled whenever "TRx" control bit is set. CjT Operating Mode M CS-48 Timer. "TLx" serves as fivebit prescaler. 8-bit auto-reload timer/counter. "THx" holds a value which is to be reloaded into "TLx" each time it overflows. (Timer 0) Timer or Counter Selector. Cleared for Timer operation (input from internal system clock). Set for Counter operation (input from "Tx" input pin). TLO is an eight-bit timer/ counter controlled by the standard Timer 0 control bits. THO is an eight-bit timer only controlled by Timer I control bits. (Timer 1) Timer/counter I stopped. Figure 7. TMOD-Timer/Counter Mode Register (MSB) (LSB) I I I I I Tl'1 TRI TFO TRO lEI 1T1 lEO, I ITO I Symbol Position Name and Significance lEI TCON.3 Interrupt I Edge flag. Set by hardware when external interrupt edge detected. Cleared when interrupt processed. Symbol Position Name and Significance TFI TCON.7 Timer I overflow Flag. Set by hardware on timer/counter overflow. Cleared when interrupt processed. TRI TCON.6 Timer I Run control bit. Set/cleared by software to turn timer/counter on/off. TFO TCON.5 Timer 0 overflow Flag. Set by hardware on timer/counter overflow. Cleared when interrupt processed. TRO TCON.4 Timer 0 Run control bit. Set/cleared by software to turn timer/counter on/off. ITI TCON.2 Interrupt I Type control bit. Set/cleared by software to specify falling edge/low level triggered external interrupts. lEO TCON.I Interrupt 0 Edge flag. Set by hardware when external interrupt edge detected. Cleared when interrupt processed. ITO TCON.O Interrupt 0 Type control bit. Set/cleared by software to specify falling edge/low level triggered external interrupts. Figure 8. TCON-Tlmer/Counter Control/Status Register AFN-01502A-14 10·12 (MSB) Symbol Position Name and Significance SMO SCON.7 Serial port Mode control bit O. Set/cieared by software (see note). SMI SM2 REN TB8 SCON.6 SCON.5 SCON.4 SCON.3 Symbol Position Name and Significance RB8 SCON.2 Receive Bit 8. Set/cieared by hardware to indicate state of ninth data bit received. Serial port Mode control bit I. Set/cieared by software (see note). TI SCON.I Serial port Mode control bit 2. Set by software to disable reception of frames for which bit 8 is zero. Transmit Interrupt flag. Set by hardware when byte transmitted. Cleared by soft ware after servici ng. . RI SCON.O Received Interrupt flag. Set by hardware when byte received. Cleared by software after servicing. Note- the state of (SMO,SM I) selects: (O,O)-Shlft regIster 1/0 expansion. (0,1)-8 bIt UART, variable data rate. (1,0)-9 bIt UART. fixed data rate. (1,1)·-9 bIt UART, vanable data rate. Receiver Enable control bit. Set/cieared by software to enable/disable serial data reception. Transmit Bit 8. Set/cieared by hardware to determine state of ninth data bit transmitted in 9-bit UART mode. Figure 9. SCON-Serial Port Control/Status Register These peripheral functions allow special hardware to monitor real-time signal interfacing without bothering the CPU. For example, imagine serial data is arriving from one CRT while being transmitted to another, and one timer/counter is tallying high-speed input transitions while the other measures input pulse widths. During all of this the CPU is thinking about something else. But how does the CPU know when a reception, transmission, count, or pulse is finished? The 8051 programmer can choose from three approaches. TCON and SCON contain status bits set by the hardware when a timer overtlows or a serial port operation is completed. The first technique reads the control register into the accumulator, tests the appropriate bit, and does a conditional branch based on the result. This "polling" scheme (typically a three-instruction sequence though additional instructions to save and restore the accumulator may sometimes be needed) will surely be familiar to programmers used to multi-chip microcomputer systems and peripheral controller chips. This process is rather cumbersome, especially when monitoring multiple peripherals. As a second approach, the 8051 can perform a conditional branch. based on the state of any control or status bit or input pin in a single instruction; a four instruction sequence could poll the four simultaneous happenings mentioned above in just eight microseconds. Unfortunately, the CPU must still drop what it's doing to test these bits. A manager cannot do his own work well if he is continuously monitoring his subordinates; they should interrupt him (or her) only when they need attention or guidance. So it is with machines: ideally, the CPU would not have to worry about the peripherals until they require servicing. At that time, it would postpone the background task long enough to handle the appropriate device, then return to the point where it left off. This is the basis of the third and generally optimal solution, hardware interrupts. The 8051 has five interrupt sources: one from the serial port when a transmission or reception is complete; two from the timers when overflows occur, and two from input pins INTO and INTI. Each source may be independently enabled or disabled to allow polling on some sources or at some times, and each may be classified as high or low priority. A high priority source can Interrupt a low priority service routine; the manager's boss can interrupt conferences with subordinates. These options are selected by the interrupt enable and priority control registers, IE and IP (Figures 10 and II). Each source has a particular program memory address associated with it (Table 3), starting at 0003H (as in the 8048) and continuing at -eight-byte intervals. When an event enabled for interrupts occurs the CPU automatically executes an internal subroutine call to the corresponding address . .A user subroutine starting at this location (or jumped to from this location) then performs the instructions to service that particular source. After completing the interrupt service routine, execution returns to the background program. Table 3. 8051 Interrupt Sources and Service Vectors Interrupt Source Service Routine Starting Address (Reset) External 0 Timer/ Counter 0 External I Timer/ Counter I Serial Port OOOOH 0003H OOOBH OOI3H OOIBH 0023H AFN-01502A-15 10-13 (LSB) ES ET1 EX1 I I I ETO EXO Symbol Position Name and Significance EA IE.7 Enable All control bit. Cleared by software to disable all interrupts, independent of the state of IE.4-IE.O. ES ETl Symbol Position Name and Significance EX I IE.2 Enable External interrupt I control bit. Set/cleared by software to enable/ disable interrupts from INTl. IE.6 IE.5 (reserved) (reserved) ETO lE.I Enable Timer 0 control bit. Set/cleared by software to enable/disable interrupts from timer/counter 0 IE.4 Enable Serial port control bit. Set/cleared by software to enable/ disable interrupts from TI or RI flags. EXO IE.O Enable External interrupt 0 control bit. Set/cleared by software to enable/ disable interrupts from INTO. IE.3 Enable TImer I control bit. Set/cleared by software to enable/disable interrupts 'from timer/counter l. Figure 10. IE-Interrupt Enable Register (MSB) I- I PS PT1 PX1 I (LSB) PTO I PXO I Symbol Position IP.7 IP.6 IP.5 Name and Significance (reserved) (reserved) (reserved) Symbol Position Name and Significance PX I IP.2 Externl\1 interrupt I Priority control bit. Set/cleared by software to specify high/low priority interrupts for INTl. PS IP.4 Serial- port Priority control bit. Set/cleared by software to specify high/low priority interrupts for Serial port. PTO IP.I Timer 0 Priority control bit. Set/cleared by software to specify high/low priority interrupts for timer/counter O. PTI IP.3 Timer I Priority control bit. Set/cleared by software to specify high/low priority interrupts for timer/counter l. PXO IP.O External interrupt 0 Priority control bit. Set/cleared by software to specify high/low priority interrupts for INTO. Figure 11. IP-Interrupt Priority Control Register AFN-01502A-16 10-14 Table 4. MCS-S1 T. Instruction Set Description DATA TRANSFER «ont.) ARITHMETIC OPERATIONS Mnemonic ADD A.Rn ADD A.dlrect A.@R, ADD ADD A.#data ADDC A.Rn ADDC A,dlrect ADDC A.@R, ADDC A,#data A.Rn SUSS SUSS A.dlrect A.@R, SUBS A.#data SUSS INC A INC Rn I~C direct @R, INC A DEC DEC Rn direct DEC @R, DEC I'IIC DPTR MUL AB DlV AS DA A Byt. Cy< I I 2 I Add indirect RAM to Accumulator I I Add Immediate data to Accumulator 2 I Add register to Accumulator with Carry I I I Add direct byte to A with Carry nag 2 Add mdlrect RAM to A with Carry flag I I Add Immediate data to A with Carry nag 2 I Subtract register from A with Borrow I I Subtract direct byte from A with Borrow 2 I Subtract IOdlrect RAM from A w, Borrow I I Subtract Immed data from A W Borrow 2 I Increment Accumulator I I Increment register I I Increment direct byte I 2 Increment mdlrect RAM. I I Decrement Accumulator I I Decrement register I I Decrement direct byte 2 I Decrement mdlrect RAM I I Increment Data POlOter I 2 Multiply A & S I 4 DIvide A by B I 4 Decimal Adjust Accumulator I I Description Add register to Accumll'l.ator Add direct byte to Accumulator LOGICAL OPERATIONS Mnemonic A~L A.Rn A~L A.dlrect A.@R, ANL A.#data A~L A~L dlrect.A MIL dlrect.#data ORL A.Rn A.dlrect ORL A.@R, ORL ORL A.#data dlrect.A ORL dlrect.#data ORI. XRI. A.Rn XRL A.direct A.@R, XRI. A.#data XRI. dlrect,A XRL XRL direct. #da ta CLR A CPI. A RL A RLC A RR A RRC A SWAP A Destination Byte Cy< AND register to Accumulator I I AND direct byte to Accumulator I 2 AND mdlrect RAM to Accumulator I I AND Immediate data tn Accumulator 2 I AND Accumula,tor to direct byte 2 I AND Immediate data to direct byte 3 2 OR register to Accumuiato-r I I OR dIrect byte to Accumulator 2 I OR indirect RAM to-Accumulator I I OR Immediate data to Accumulator 2 I OR Accumulator to direct byte 2 I OR Immediate data to direct byte 3 2 Excluslve~OR register to Accumulator I I ExclUSive-OR direct byte to Accumulator 2 I Exciuslve¥OR mdlrect RAM to A I I Excluslve~OR Immedl3te data to A 2 I Excluslve~OR Accumulator to direct bvte I 2 ExclUSive-OR unmedtate data to direct 3 2 Clear Accumulator I I Complement Accumulator I I Rotate Accumulator Left I I Rotate A Left through the Carry flag I I Rotate Accumulator Right I I Rotate A Right through Carry flag I I Swap mbbles withm the Accumulator I I DATA TRANSFER Mnemonic Description MOV A.Rn Move register to Accumulator MOY A.dlrect Move direct byte to Accumulator A.@R, MOV Move mdlrect RAM to Accumulator MOV A.#data Move Immediate data to Accumulator MOV Rn.A Move Accumulator to register MOV Rn.dlrect Move direct byte to register MOV Rn.#data Move Immediate data to register MOV dlrect.A Move Accumulator to direct byte dlrect,Rn MOV Move register to direct byte MOV dlre~t.dlrect Move direct byte to direct MOV dlrect.@RI Move tndlrect RAM to direct byte MOV dlrect.#data Move Immediate data to direct byte MOV @R,.A Move Accumulator to indirect RAM MOV @RI.dlrect Move direct byte to indirect RAM @RI,#data MOV Move Immediate data to Induect RAM MOV DPTR.#dataI6 Load Data Pomter with a 16~blt constant Mnemonic MOVC A.@A+DPTR MOVC A.@A+PC MOVX A.@R, MOVX A.@DPTR MOVX @Ri.A MOVX @DPTR.A PUSH direct POP direct XCH A.Rn ~CH A.direct A.@R, XCH XCHD A.@R, Description Byt. Cy< Move Code byte relative to DPTR to A I 2 Move Code byte relative to PC to A I 2 Move External RAM (8-bat addr) to A I 2 Move External RAM (I6-bit addr) to A I 2 Move A to External RA M (8-hlt addrl I 2 Move A to External RAM (16-blt addr) I 2 Push direct byte onto stack 2 2 Pop direct byte from stack 2 2 Exchange register with Accumulator I I Exchange direct byte with Accumulator 2 I Exchange mdlrect RAM with A I I Exchange low-order Digit IOd RAM w/A I I BOOLEAN VARIABLE MANIPlILATION Mnemonic CLR C CLR " bit SETS C b,t SETB CPL C CPL bit A~L Cblt ANL C. bit ORL C.hlt ORL C bit MOV Cblt MOV blt.C Description Clear Carry flag Clear direct bit Set Carry flag Set direct Bit Complement Carry flag Complement direct bit AND direct bit to Carry nag AND complement of direct bit to Carry OR direct bit to Carry flag OR complement of direct bit to Carry Move direct bit to Carry flag Move Carry flag to direct bit Byte eyc I I I 2 I I 2 I I I I 2 2 2 2 2 2 2 2 2 2 2 I 2 PROGRAM AND MACHINE CONTROL Mnemonic ACALL addrll LCALL addrl6 RET RET! AJMP addrll LJMP addrl6 SJMP rei @A+DPTR JMP JZ rei JNZ rei rei JC J~C rei JQ blt.rel J~S blt.rel JSC blt.rel CJNE A.dlrect.rel CJNE A'./fdata.rel CJNE Rn.#data.rel CJNE @RI.#data.rel DJNZ Rn.rel DJ'IIZ dlrect.rel ~OP Description Byte Cyc Absolute Subroutine Call 2 2 Long Subroutme Call 3 2 Return from subroutme I 2 Return from mterrupt I 2 2 Absolute Jump 2 Long Jump 3 2 Short Jump (relative addr) 2 2 Jump indirect relative to the DPTR I 2 Jump If Accumulator IS Zero 2 2 Jump If Accumulator IS Not Zero 2 2 Jump If Carry flag IS set 2 2 Jump If No Carry flag 2 2 Jump If direct Bit set 3 2 Jump If direct Bit Not set 3 2 Jump If direct Bit IS set & Clear bit 3 2 Compare direct to A & Jump If Not Equal 3 2 Comp Immed to A & Jump If Not Equal 3 2 ,Comp Immed to reg & Jump If Not Equal 3 2 2 Comp lmmed to md. & Jump If Not Equal 3 Decrement register & Jump If Not Zero 2 2 Decrement direct & Jump If Not Zero 3 2 No operation I I Note~ Byte Cyc I I 2 I I I I 2 I I 2 2 2 2 3 2 3 2 I I 2 2 2 2 I I 2 2 3 2 3. INSTRUCTION SET AND ADDRESSING MODES The 8051 instruction set is extremely regular. in the sensl' that most instructions can operate with variables from several different physical or logical address spaces. Before getting deeply enmeshed in the instruction set proper, it is important to understand the details of the most common data addressing modes. Whereas Table 4 summarizes the instructions set broken down by functional on data addressing modes: Working regl.,ter RO-R 7 Rn direct 128 Internal RAM locatIOns. any I '0 port. control or status register @R, Indirect mternal RAM locatIOn addressed by register RO or RI #data -8-bJt constant mcluded In In!'>tructlOn #data 16 16~blt constant mcluded as byte!'> 2 & 3 of lOst ruction bit 128 <;,oftware flag!'>. any I 0 pm. control or !'>tatus bit Note~ on program addressing modes: addrl6 De!'>tmatton addreo;,s for LCAlL & LJMP may be anywhere wlthm the M-Kllobyte program memory address space. addrll De!oJtmatlOn addres~ for ACALL & AJMP will be wtthtn the same 2-Kllobyte page of program memory a<;, the first byte of the follOWing In!'>tructlOn rei SJMP and all conditional Jumps tnclude an 8-blt offset byte Range IS + 127 -128 by teo;, relative to ftrst byte of the follOWing lOst ructIOn I 2 All mnemOniC., copynghted © Intel Corporation 1979 group, this chapter starts with the addressing mode classes and builds to include the related instructions. Data Addressing Modes MCS-51 assembly language instructions consist of an operation mnemonic and zero to three operands separated by commas. In two operand instructions the destination is specified first. then the source. Many byte-wide data AFN-01502A-17 10-15 operations (such as ADD or MOY) inherently use the as a source operand and/or to receive the result. For the sake of clarity the letter "A" is specified in the source or destination field in all such instructions. For example, the instruction, accum~lator ADD hardware reset enables register bank 0; to select a different bank the programmer modifies PSW bits 4 and 3 accordingly. ' Example 2-Selecting Alternate Memory Banks psw, .000100008 I'IOV A, will add the variable to the accumulator, leaving the sum in the accumulator. The operand designated '' '' above may use any of four common logical addressing modes: ,. Register-one of the working registers in the currently enabled bank. • Direct-an internal RAM location, I/O port, or special-function register. • Register-indirect-an internal RAM location, pointed to by a working register. • Immediate data-an eight.. bit constant incorporated into the instruction. The first three modes provide access to the internal RA M and Hardware Register address spaces, and may therefore be used as source or destination operands; the last mode accesses program memory and may be a source operand only. _ (It is hard to show a "typical application" of any instruction without involving instructions not yet described. The following description:; use only the self-explanatory ADD and MOY instructions to demonstrate how the four addressing modes are specified and used. Subsequent examples will become increasingly complex.) Register Addressing The 8051 programmer has access to eight "working registers," numbered RO-R7. The least-significant three-bits of the instruction opcode indicate one register within this logical address space. Thus, a function code and operand address can be combined to form a short (one byte) instruction (Figure 12.a). The 805 I assembly language indicates register addressing with the symbol Rn (where n is from 0 to 7) or with a symbolic name previously defined as a register by the EQUate or SET directives. (For more information on assembler directives see the Macro Assembler Reference Manual.) SELECT BAM'. 2 Register addressing in the 8051 is the same as in the 8048 family, with two enhancements: there are four banks rather than one or two, and 16 instructions (rather than 12) can access them. Direct Byte Addressing Direct addressing can access anyon-chip variable or hardware register. An additional byte appended to the opcode specifies the location to be used (Figure 12.b). Depending on the highest order bit of the direct address byte, one of two physical memory spaces is selected. When the direct address is between 0 and 127 (OOH-7FH) one of the 128 low-order on-chip RAM locations is used. (Future microcomputers based on the MCS-5I'· architecture may incorporate more than 128 bytes of on-chip RAM. Even if this is the case, only the low-order 128 bytes will be directly addressable. The remainder wouldbe accessed indirectly or via the stack pointer.) Example 3-Adding RAM Location Contents ,DrRADR ADD CONTENTS OF RA" LOCATIQN 4'lH TO CONTENTS OF RAM I-OCATION 40H DIRADR 1"I0V ADD !'tov At 40H A,4tH 40H. fit, All I/O ports and special function, control, or status registers are assigned addresses between 128 and 255 (80H-OFFH). When the direct address byte is between these limits the corresponding hardware register is accessed. For example, Ports 0 and I are assigned direct addresses 80H and 90H, respectively. A complete list is presented in Table 5. Don't waste your time trying to memorize the addresses in Table 5. Since programs using absolute addresses for function registers would be difficult to write or understand, ASM51 allows and understands the abbreviations listed instead. Example 4 - Adding Input Port Data to Output Port Data • PRTADR ADD DATA INPUT ON PORT 1 TO DATA PREVIOUSLY OUTPUT ON PORT 0 Example I-Adding Two Registers Together PRTADR TO CONTENTS OF REGISTER 0 REGADR MOV A. AO ADD MOV A.Rt RO. fit, f10V A. PO ADD IA. Pi PO. A ..ov ,REGAOR ADD CONTENTS OF REGISTER 1 There are four such banks of working registers, only one of which is active at a time. Physically, they occupy the first 32 bytes of on-chip data RAM (addresses 0-1 FH). PSW bits 4 and 3, determine which bank is active. A Direct ,addressing allows all special-function registers in the 805 I to be read, written, or used as instruction operands. In general, this is the only method used for accessing I/O ports and special-function registers. If direct addressing is used with special-function register addresses other than those listed, the result of the instruction is undefined. AFN-015D2A-18 , 10-16 The 8048 does not have or need any generalized direct addressing mode, since there are only five special registers (BUS, PI, P2, PSW, & T) rather than twenty. Instead, 16 special 8048 opcodes control output bits or read or write each register to the accumulator. These functions are all subsumed by four of the 27 direct addressing instructions of the 8051. Table 5. 8051 Hardware Register Direct Addresses Register Address 80H" 81H 82H 83H 88H' 89H 8AH 8BH 8CH 8DH 90H* 98H* 99H OAOH' OA8H' OBOH' OB8H" ODOH* OEOH* OFOH* PO SP DPL DPH TCON TMOD TLO TLI THO THI PI SCON SBUF P2 IE P3 IP PSW ACC B Function Port 0 Stack Pointer Data Pointer (Low) Data Pointer (High) Timer register Timer Mode register Timer 0 Low byte Timer I Low byte Timer 0 High byte Timer I High byte Port I Serial Port Control register Serial Port data Buffer Port 2 Interrupt Enable register Port 3 Interrupt Priority register Program Status Word Accumulator (direct address) B register Indirect addressing on the 8051 is the same as in the 8048 family, except that all eight bits of the pointer register contents are significant; if the contents point to a nonexistent memory location (i.e., an address greater than 7FH on the 8051) the result of the instruction is undefined. (Future microcomputers based on the MCS-51'" architecture could implement additional memory in the on-chip RAM logical address space at locations above 7FH.) The 8051 uses register-indirect addressing for five new instructions plus the 13 on the 8048. Immediate Addressing When a source operand is a constant rather than a variable (i.e.-the instruction uses a value known at assembly time), then the constant can be incorporated into the instruction. An additional instruction byte specifies the value used (Figure 12.d). The value used is fixed at the time of ROM manufacture or EPROM programming and may not be altered during program execution. In the assembly language immediate operands are preceded by a number sign ("#"). The operand may be either a numeric string, a symbolic variable, or an arithmetic expression using constants. Example 6-Adding Constants Using Immediate Addressing ,IMMAOR ADO THE CONSTANT 12 (DECIMAL) TO THE CONSTANT 34 (DECIMAL) LEAVE SUM IN ACCUMULATOR . =bit addressable register. IMMAOR Register-Indirect Addressing MOV ADD A. tU2 A, .34 The preceding example was included for consistency; it has little practical value. Instead, ASM51 could compute the sum of two constants at assembly time. How can you handle variables whose locations in RAM are determined, computed, or modified while the program is running? This situation arises when manipulating sequential memory locations, indexed entries within tables in RAM, and multiple precision or string operations. Register or Direct addressing cannot be used, since their operand addresses are fixed at assembly time. Example 7 - Adding Constants Using AS M 51 Capabilities • ASMSUM LOAD Ace WITH THE SUM OF THE CONSTANT 12 (DEC IMAL) AND THE CONSTANT 34 ASMSUM The 8051 solution is "register-indirect RAM addressing." RO and R I of each register bank may operate as index or pointer registers, their contents indicating an address into RAM. The internal RAM location so addressed is the actual operand used. The least significant bit of the instruction opcode determines which register is used as the "pointer" (Figure 12.c). MDV (DEC IMAL) A •• ( 12+34) a.) Register Addressing: ADD A,R b.) Direct Addressing: ADD A, In the 8051 assembly language, register-indirect addressing is represented by a commercial "at" sign ("@") preceding RO, R I, or a symbol defined by the user to be equal to ROorR!. I : : +e+ : : I, I Example 5 - Indirect Addressing d.) Immediate Addressing: direct c.) Register-Indirect AddreSSing: ADD A,@R , JNOADR ADD CONTENTS OF MEMORY LOCATION ADDRESSED BY REGISTER 1 TO CONTENTS OF RAM LOCATION ADDRESSED BY REG I srER 0 I NOAOR MOY A,@RO ADD MOV A.@R1 @RO.A ADD A,# data Figure 12. Data Addressing Machine Code Formats 10-17 AFN-01502A-19 Addressing Mode Combinations The above examples all demonstrated the use of the four data-addressing modes in two-operand instructions (MOY, ADD) which use the accumulator as one operand. The operations ADDC, SUBB, ANL, ORL, and XRL (all to be discussed later) could be substituted for ADD in each example. The first three modes may be also be used for the XCH operation or, in combination with the Immediate Addressing mode (and an additional byte), loaded with a constant. The one-operand instructions INC and DEC, DJNZ, and CJNE may all operate on the accumulator, or may specify the Register, Direct, and Register-indirect addressing modes. . Exception: as in the 8048, DJNZ cannot use the accumulator or indirect addressing. (The PUSH and POP operations cannot inherently address the accumulator as a special register either. However, all three can directly address the accumulator as one of the twenty special-function registers by putting the symbol "ACC" in the operand field.) Advantages of Symbolic Addressing Like most assembly or higher-hivel programming languages, AS MSI allows instructions or variables to be given appropriate, user~defined symbolic names. This is done for instruction lines by putting a label followed by a colon (":") before the instruction proper, as in the above examples. Such symbols must start with an alphabetic character (remember what distinguished BACH from OBACH?), and may include any combination of letters. numbers. question marks ("?") and underscores ("":'). For very long names only the first 31 characters are relevant. Assembly language programs may intermix upper- and lower-case letters arbitrarily, but ASMSI converts both to upper-case. For example. ASM51 will internally process an "I" for an "i" and. of course. "A_TOOTH" for "a_tooth." The underscore character makes symbols easier to read and can eliminate potential ambiguity (as in the label for a subroutine to switch two entires on a stack, "S_EXCHANGE"). The underscore is significant. and would distinguish between otherwise-identical character strings. ASM51 allows all var,iables (registers. ports. internal! or external RAM addresses, constants. etc.) to be assigned labels according to these rules with the EQUate or SET directives. Example 8 -Symbolic Addressing of Yariables Defined as RAM Locations VAR 0 SET 20H VA() SET 21H : SYMB t ADD CONTENTS OF VAR 1 TO CONTENTS OF VAR _ 0 SYMB_l MOV ADD MOV A, VAR_O A. VAR_l VAR_O. A Notice from Table 4 that the MCS-Sl ,. instruction set has relatively few instruction mnemonics (abbreviations) for the programmer to memorize. Different data types or addressing modes are determined by the operands specified, rather than variations on the mnemonic. For example, the mnemonic "MOY" is used by 18 different instructions to operate on three data types (bit. byte, and address). The fifteen versions which move byte variables between the logical address spaces are diagrammed in Figure 13. Each arrow shows the' direction of transfer from source to destination. Notice also that for most instructions allowing register addressing there is a corresponding direct addressing instruction and vice versa. This lets the programmer begin writing 80S I programs as if (s)he has access to 128 different registers. When the program has evolved to the point where the programmer has a fairly accurate idea how often each variable is used. he/she may allocate the working registers in each bank to the most "popular" variables. (The assembly cross-reference option will show exactly how often and where each symbol IS referenced.) If symbolic addressing is used in writing the source program only the lines containing the symbol definition will need to be changed; the assembler will produce the appropriate instructions even though the rest of the program is left untouched. Editing only the first two lines . of Example 8 will shrink the six-byte' code segment produced in half. How are instruction sets "counted"? There is no standard practice; different people assessing the same CPU using different conventions may arrive at different totals, Each operation is then broken down according to the different addressing modes (or combinations of addressing modes) it can accommodate. The "CLR" mnemonic is used by two instructions with respect to bit variables ("CLR C" and "CLR bit") and once ("CLR A") with regards to bytes. This expansion yields the 111 separate instructions of Table 4. The method used for the MCS-51 ® instruction set first breaks it down into "operations": a basic function applied to a single data type. For example, the four versions of the ADD instruction are grouped to form one operation - . addition of eight-bit variables. The six forms of the ANL instruction for byte variables make up a different operation; the two forms of ANL which operate on bits are considered still another, The MOV mnemonic is used by three different operation classes, depending on whether bit, byte, or 16-bit values are affected. Using this terminology the 8051 can perform 51 different operations. AFN-01502A-20 10-18 The MCS-SI'· processors detect whether these situations occur and indicate such errors with the OV flag. (OV may be tested with the conditional jump instructions JB and JNB, described under the Boolean Processor chapter.) At a hardware level, OV is set if there is a carry out of bit 6 but not out of bit 7, or a carry out of bit 7 but not out of bit 6. When adding signed integers this indicates a negative number produced as the sum of two positive operands, or a positive sum from two negative operands; on S U BB this indicates a negative result after subtracting a negative number from a positive number, or' a positive result when a positive number is subtracted from a negative number. Figure 13. Road map for moving data bytes Example 9 - Redeclaring Example 8 Symbols as Registers VAR_O SET RO VAR_l SET Ri The ADDC and SUBB instructions incorporate the previous state of the carry (borrow) flag to allow mUltiple precision calculations by repeating the operation with successively higher-order operand bytes. In either case, the carry must be cleared before the first iteration. .SVP'1B_2 ADD CONTENTS OF VAR_l TO CONTENTS OF VAR _ 0 A. VAR_O A. VAR_l VAR_O. A Arithmetic Instruction Usage and DA ADD, ADDe, SUBB The' ADD instruction adds a byte variable with the accumulator, leaving the result i~ the accumulator. The carry flag is set if there is an overflow from bit 7 and cleared otherwise. The AC flag is set to the carry-out from bit 3 for use by the DA instruction described later. ADDC adds the previous contents of the carry flag with the two byte variables, but otherwise is the same as ADD. The SUBB (subtract with borrow) instruction subtracts the byte variable indicated and the contents of the carry flag together from the accumulator, and puts the result back in the accumulator. The carry flag serves as a "Borrow Required" flag during subtraction operations; when a greater value is subtracted from a lesser value (as in subtracting S from I) requiring a borrow into the highest order bit, the carry flag is set; otherwise it is cleared. When performing signed binary arithmetic, certain combinations of input variables can produce results which seem to violate the Laws of Mathematics. For example, adding 7FH (127) to itself produces a sum of OFEH, which is the two's complement representation of -2 (refer back to Table 2j! In "normal" arithmetic, two positive values can't have a negative sum. Similarly, it js normally impossible to subtract a positive value from a negative value and leave a positive result - but in two's complement there are instances where this. too may happen. Fundamentally, such anomolies occur when the magnitude of the resulting value is too great to "fit" into the.seven bits allowed for it; there is no one-byte two's complement representation for 254, the true sum of 127 and 127. 10-19 If the input data for a multiple pre-cision operation is an unsigned string of integers, upon completion the carry flag will be set if an overflow (for ADDC) ,or underflow (for SUBB) occurs. With two's complement s.igned data (i.e., if the most significant bit of the original input data indicates the sign of the string), the overflow flag will be set if overflow or underflow occurred. Example IO-String Subtraction with Signed Overflow Detection ,sueSTR SUBTRACT STRING INDICATED BV Ri FROM STRING INDICATED BY RO TO PRECISION INDICATED BY R2 CHECK FOR SIONED UNDERFL.OW WHEN DONE SUB5TR SUBSI CLR MOV susa MOV INC INC DJNZ IN. Oil_OK RET • BORRDWu 0 C A. (tRO ,SUBTRACT NEXT PLACE A.I!Rl IRO. fit ,BUMP POINTERS RO Rl ,LOOP AS NEEDED Ri2. SUBS1 WHEN DONE. TEST IF OVERFLOW OCCURED ON LAST ITERATION OF LOOP aV.OV_OK (OVERFLOW RECOVERY ROUTINE) . RETURN Decimal addition is possible by using'the DA instruction in conjunction with ADD and/or ADDC. The eight-bit binary value in the accumulator resulting from an earlier addition of two variables (each a packed BCD digit-pair) is adjusted to form two BCD digits of four bits each. If the contents of accumulator bits 3-0 are greater than nine (xxxx 101 O-xxxx I III), or if the AC flag had been set, six is added to the accumulator producing the proper BCD digit in the low-order nibble. (This addition might itself set - but would not clear - the carry flag.) If the carry flag is set, or if the four high-order bits now exceed nine (10 10xxxx-1111 xxxx), these bits are incremented by six. The carry flag is left set if originally set or if either addition of six produces a carry out of the highest-order bit, indicating the sum of the original two BCD variables, is greater than or equal to decimal 100. AFN~O'502A-21 Example II - Two Byte Decimal Add with Registers and Constants ,DCDADO ADD THE CONSTANT 1,234 (DECIMAL) TO THE digits in the accumulator and returns the product of the two individual digits in packed BCD format in the accumulator. CONTENTS OF REGISTER PAIR <:R3> ,.. 0 - b3H) ,DIVIDE PRODUCT BY 10 ,A HOLDS" OF TENS, B HOLDS REMAJNpER MOV DIV RET logical Byte Operations - ANl, ORl, XRl The instructions ANl, ORL, and XRl perform the logical functions AND, OR, and 1or Exclusive-OR on the two byte variables indicated, leaving the results in the first. No flags are affected. (A word to the wise - do not vocalize the first two mnemonics in mixed company.) These operations may use all the same addressing modes as the arithmetics (ADD, etc.) but unlike the arithmetics, they are not restricted to operating on the accumulator. Directly addressed byt~s may be used as the destination with either the accumulator or a constant as the source. These instructions are useful f,or clearing (ANl), setting (ORl), or complementing (XRl) one or more bits in a RAM, output ports, or control registers. The pattern of bits to be affected is indicated by a suitable mask byte. Use immediate addressing when the pattern to be affected is known at assembly time (Figure 14); use the accumulator versions when the pattern is computed at run-time. 1/0 ports are often used for parallel data in formats other than simple eight-bit bytes. For example, (he low-order five bits of port I may output an alphabetic character code (hopefully) without disturbing bits 7-5. This can be a simple two-step proces~. First, clear the low-order five pins with an ANl instruction; then set those pins corresponding to ones in the accumulator. (This example assumes the three high-order bits of the accumulator are originally zero.) Example 14 - Reconfiguring Port Size with Logical Byte Instructions • DIGIT SWAP ADD MOV A A, B ,PACK BCD DIGITS IN ACC TENONE, A DUT]X ANL ORL Pl,ll1iOOOOOB PI. A ,CLEAR BITS,Pl 4 - PI 0 ,SET P,l PINS CQRRESONDING TO SET Ace , BITS RET RET The divide instruction can also separate eight bits of data in the accumulator into sub-fields. For example, pack.ed BCD data may be separated into two nibbles by dividing the data by 16, leaving the high-nibble in the accumulator and the low-order nibble (remainder) in B. The two digits may then be operated on individually or in conjunction with each other. This example receives two packed, BCD ,-__op_co_d_e_--,II ANL dIrect address P1 11L.__m_a_Sk_ _...J ndata Figure 14. Instruction Pattern for logical, Operation Special Addressing Modes 10-20 In this example, low-order bits remammg high may "glitch" low for one machine cycle, If this is undesirable, use a slightly different approach, First, set all pins corres'ponding to accumulator one bits, then clear the pins corresponding to zeroes in low-o.rder accumulator bits. Not all bits will change from original to final state at the same instant, but no bit makes an intermediate transition. Example 15 - Reconfiguring I I 0 Port Size without Glitching AL T _px ORL ORL ANL Pl. A A••U 1100000a PI, A RET Program Control - Jumps, Calls, Returns Whereas the 8048 only has a singi.e form of the simple jump instruction, the 8051 has three. Each causes the program to unconditionally jump to some other address. They differ in how the machine code represents the d-estination address. LJMP (Long Jump) encodes a sixteen-bit address in the second and third instruction bytes (Figure IS.a); the destination may be anywhere in the 64 Kilobyte program memory address space. The two-byte AJMP (Absolute Jump) instruction encodes its destination using the same format as the 8048: addless bits 10 through 8'form a three bit field in the opcode and address bits 7 through 0 form the second byte (Figure 15.b). Address bits 15-12 are unchanged from the (incremented) contents of the P.C, so AJMPcan only be used when the destination is known to be within the same 2K memory block. (Otherwise ASMSI will point out the erroL) A different two-byte jump instruction is legal with any nearby destination, regardless of memory block boundaries or "pages." SJMP (Short Jump) encodes the destination with a program counter-relative address in the second byte (Figure 15.c). The CPU calculates the I 11'--"-.-"-5---.-.-d'-8--'11 addr? - addrO b) Absolule Jump (AJMP addr11): Like SJ M P. all conditional jump instructions use relative addressing. JZ (Jump if Zero) and JNZ (Jump if Not Zero) monitor the state of the accumulator as implied by their names. while JC (Jump on Carry) and JNC (Jump on No Carry) test whether or not the carry flag is set. All four are two-byte instructions. with the same format as Figure 15.c. JB (Jump on Bit), JNB (Jump on No Bit)and JBC (Jump on Bit then Clear Bit) can test any status bit or input pin with a three byte instruction; the second byte specifies which bit to test and the third gives the relative offset value. There are two subroutine-call instructidns. LC ALL (Long Call) and ACALL (Absolute Call). Each increments the P.C to the first byte of the following instruction. then pushes it onto the stack (low byte first). Saving both bytes increments the stack pointer by two. The subroutine's starting address is encoded in the same ways as LJ M P and AJ M P. The generic form of the call operation is the mnemonic CALL, which ASM51 will translate into LCALL or ACALL as appropriate. The return instruction RET pops the high- and low-order bytes of the program counter successively from the stack. decrementing the stack pointer by two. Program execution continues at the address previously pushed: the first byte of the instruction immediately following the call. Secondly. the interrupt logic is disabled from accepting any other interrupts from the same or lower priority. After completing the interrupt service routine. executing an RETI (Return from Interrupt) instruction will return execution to the point where the background program was interrupted - just like RET - while restoring the interrupt logic to its previous state. c) Short Jump (SJMP rei) I : : >+0: : : In keeping with the 8051 assembly language goal of minimizing the number of instruction mnemonics, there is a "generic" form of the three jump instructions. AS M 51 recognizes the mnemonic J M P as a '~pseudo instruction." translating it into the machine instructions LJMP. AJMP, or SJMP, depending on the destination address. When an interrupt request is recognized by the 8051 hardware. two things happen. Program control is automatically "vectored" toone of the interrupt service routine starting addresses by. in effect. forcing the CPU to process an LCALL instead of the next instruction. This automatically stores the return address on the stack. (Unlike the 8048. no status information is automatically saved.) a) long Jump (lJMP addr16) opcode destination at run-time by adding the signed eight-bit displacement value to the incremented P.C Negative offset values will cause jumps up to 128 bytes backwards; positive values up to 127 bytes forwards. (SJMP with OOH in the machine code offset byte will proceed with th ' following instruction). _,'_0'."'0_011'0.-------1 ilL--' Figure 15. Jump Instruction Machine Code Formats 10-21 Operate-and-branchinstructions - CJNE, DJNZ Two groups of instructions combine a byte operation with a conditional jump based on the results. CJNE (Compare and Jump if Not Equal) compares two byte operands and executes a jump if they disagree. The carry flag is set following the rules for subtraction: if the unsigned integer value of the first operand is less than that of the second it is set; otherwise, it is cleared. However, neither operand is modified. The dollar sign in this example is a special character meaning "the address of this instruction." It is useful'in eliminating instruction labels on the same 'or adjacent source lines. CJNE and DJNZ (like all conditional jumps) use program-counter relative addressing for the destination address. Stack Operations - PUSH, POP The PUSH instruction increments the stack pointer by one, then transfers the contents of the single byte variable indicated (direct'addressing only) into the internal RAM location addressed by the stack pointer. Conversely, POP copies the contents of the internal RAM location addressed by the stack pointer to the byte variable indicated, then decrements the stack pointer by one. The CJNE instruction provides, in effect, a oneinstruction "case" statement. This instruction may be executed repeatedly, comparing the code variable to a list of "special case" value: the code segment following the instruction (up to the destination label) will be executed only if the operands match. Comparing the accumulator or a register to a series of constants is a convenient way to check for special handling or error conditions; if none of the cases match the program will continue with "normal" processing. (Stack Addressing follows the, same rules, and addresses the same locations as Register-indirect. Future microcomputers based on the MCS-51'· CPU could have up to 256 bytes of RAM for the stack.) A typical example might be a word processing device which receives ASCII characters through the serial port and drives a thermal hard-copy printer. A standard routine translates "printing" characters to bit patterns, but control characters «DEL>' . . . . or value, OOH, and processed with the printing characters. Interrupt service routines must not change any variable or hardware registers modified by the main program, or else the program may not resume correctly. (Such a change might look like a spontaneous random error.) Resources used or altered by the service routine (Accumulator, PSW, etc.) must be saved and restored to their previous value before returning from the service routine. PUSH and POP provide an efficient and convenient way to save register states on the stack. Example 16-Case Statements Using CJNE Example 18-Use of the Stack for Status Saving on Interrupts , CHAR EOU R1 INTERP CJNE CHAR, 17FH. I HlP 1 (SPECIAL ROUTINE FOR RUDOUT CODE) INTP _1 RET CJNE INTP _2 RET CJNE • CHARACTER CODE VARIABLE LOC_TMP EGU ORG L.JMP CHAR •• 07H. INTP .•2 (SPECIAL ROUTINE FOR BELL CODE) CHAR ••OAH. INTP~.3 (SPECIAL ROUTINE FOR LFCED CODE) SERVER RET CHAR ••ODH. INTP_4 (SPECIAL INTP _3 C.JNE INTP _4 RET CJNE CHAR •• 1BH. INTP_5 INTP _5 RET CJNE CHAR •• 20H. INTP_6 RO~TINE FOR RETURN CODE) (SPECIAL ROUTINE FOR ESCAPE CODE) (SPECIAL ROUTINE FOR SPACE CODE) INTP _b RET JC MOV NULL CODE ,PROCESS STANDARD PRINTING CHARACTER PRINTC RET Example l7'-lnserting a Software Delay with DJNZ WR CLR MOV R2 •• 4~ DVNZ R2." SETB WR psw PUSH PUSH PUSH B DPL DPH MOV psw, .000010008 RETI DJNZ (Decrement and Jump if Not Zero) decrements the register or direct address indicated and jumps if the result is not zero, without affecting any flags. This provides a simple means for executing a program loop a given numper of times, or for adding a moderate time' delay (from 2 to 512 machine cycles) with a single instruction. For example, a 99-usec. software delay loop can be added to code forcing an 110 pin low with only two instructions. LOC_TI'IP • RESTORE LOCATION COUNTER ORO PUSM PUSH POP POP POP POP POP PRINTC , JUMP IF CODE> 20H CHAR •• O ,REPLACE CONTROL CHA'RACTERS WITH ,REMEMBER LOCATION COUNTER 0003M, STARTING ADDRESS FOR INTERRUPT ROUTINE SERVER, -JUMP TO ACTUAL SERVICE RoqTINE LOCATED , ELSEWHERE ACC OPH OPL B ACC psw ,SAVE ACCUMULATOR (NOTE' DIRECT ADDRESSING , NOTATION) ,SAVE B REGISTER ,SAVE DATA POINTER i . SELE:CT REGISTER BANK 1 I RESTORE REGISTERS IN REVERSE ORnER · RESTORE PSW AND RE-SELECT ORIGINAL , REGISTER BANK • RETURN TO MAIN PROGRAM,'AND RESTORE • INTERRUPT LOGIC If the SP register held I FH when the interrupt was detected, then while the service routine was in progress the stack would hold the registers shown in Figure 16; SP would contain 26H. The example shows the most general situation; if the service routine doesn't alter the B-register and data pointer, 'for example, the instructions saving and restoring those registers would not be necessary. The stack may also pass parameters to and from subroutines: The subroutine can indirectly address the parameters derived frilm the contents' of the, stack pointer. AFN-01502A~24 10-22 If the position of the motor is determined by the contents of variable POSM I (a byte in internal RAM) and the position of a second motor on Port 2 is determined by the data input to the low-order nibble of Port 2, a sixinstruction sequence could update them both. RAM AOOR 7FH 26H OPH 25H OPL Example 21- Loading and Unloading Stack Direct from 1;0 Ports _(SP) 24H B EGU 51 23H ACC PUSH CALL PDSMI NXTPQS 22H PSW POP POSMt 2'H PC (HIGH) 20H PC (LOW) 'FH Figure 16. Stack contents during interrupt One advantage here is simplicity. Variables need not be allocated for specific parameters, a potentially large number of parameters may be passed, and different calling programs may use different techniques for determining or handling the variables. For example, the following subroutine reads out a parameter stored on the stack by the calling program, uses the low order bits to access a local look-up table holding bit patterns for driving the coils of a four phase stepper motor, and stores the appropriate bit pattern back in the same position on the stack before returning. The accumulator contents are left unchanged. Example I'f- Passing Variable Parameters to Subroutines Using the Stack MOV DEC DEC XCH RO, SP RO ,ACCESS LOCATION PARAMETER PUSHED INTO RO A, @FW ,READ INPUT PARAMETER AND SAVE ANL A, .03H ,MASK ALL BUT LOW-ORDER TWO B I T5 ADO A, *2 ,ALLOW FOR OFFSET FROM Move TO TABLE Move A, @A+PC ,READ LOOK-UP TABLE ENTRY A, @RO ,PASS BACII. TRANSLATED VALUE AND RESTORE • XCH RET STPTBL DB DB DB DB NXTPOS POP P2 Data Pointer and Table Look-up instructions MOV, INC, MOVC, JMP OOH NXTPOS PI P2 PUSH CALL The data pointer can be loaded with a 16-bit value using the instruction MOV DPTR, #dataI6. The data used is stored in the second and third instruction bytes, highorder byte first. The data pointer is incremented by INC DPTR. A 16-bit increment is performed; an overflow from the low byte will carry into the high-order byte. Neither instruction affects any flags. The MOVC (Move Constant) instructions (MOVC A,@A+DPTR and MOVC A.@A+PC) read into the accumulator bytes of data from the program memory logical address space. Both use a form of indexed addressing: the former adds the unsigned eight-bit accumulator contents with the sixteen-bit data pointer register, and uses the resulting sum as the address from which the byte is fetched. A sixteen-bit addition IS performed; a carry-out from the low-order eight bits may propagate through higher-order bits, but the contents of the DPTR are not altered. The latter form uses the incremented program counter as the "base" value instead of the DPTR (figure 17). Again, neither version affects the flags. ACCUI'1ULATO~ a) , Ace Move A @ A + PC (LOCAL TABLE LOOK-UP) ,RETURN TO BACKGROUND PROGRAM 011011118 010111118 10011111B 101011118 ,POSITION ,POSITION ,POSITION ,POSITION 0 1 2 3 b) CLR Ace POP PI 16- BIT I JMP @ A+ OPTR (GLOBAL INDIRECT JUMP) ~~~;~'~~RESS DPTR ~ACC 16-BIT I ~~~i~'~~RESS DPTR ~ACC L.._ _ _'_6-_BI_T.l1 LOADED INTO PC A NXTPQS Move A @ A+ OPTR (GLOBAL TABLE LOOK-UP) PC ~ACC L.._ _ _'_6-_BI_T..J1 c) Example 20-Sending and Receiving Data Parameters Via the Stack CALL I L.._ _ _'_S-_BI_T..JI The background program may reach this subroutine with several different calling sequences, all of which PUSH a value before calling the routine and POP the result after. A motor on Port' I may be initialized by placing the desired position (zero) on the stack before calling the subroutine and outputing the results directly to a port afterwards. PUSH 1-6-BIT Figure 17. Operation of MOVC instructions AFN-01S02A-25 10-23 Each can be part of a three step sequence to access lookup tables in ROM. To use the DPTR-relative version. load the Data Pointer with the starting address of a lookup table; load the accumull!tor with (or compute) the index of the entry desired; and execute MOVC A,@A+DPTR. Unlike the similar MOVP3 instructions in the 8048. the table may be located anywhere in program memory. The data pointer may be loaded with a constant for short tables. Or to allow more complicated data structures. or tables with more than 256 entries. the values for DPH and DPL may be computed or modified with the standard arithmetic instruction set. The PC-relative version has the advantage of not affecting the data pointer. Again. a look-up sequence takes three steps: load the accumulator with the index; compensate for the offset from the look-up instruction to the start of the table by adding the number of bytes separating them to the accumulator; then execute the MOVC A.@A+PC instruction. Let's look at a non-trivial situation where this instruction would be used. Some applications store large multidimensional look-up tables of dot matrix patterns. nonlinear calibration parameters. and so on in linear (onedimensionali) vector in program memory. To retrieve data from the tables. variables representing matrix indices must be converted to the desired entry's memory address. For a matrix of dimensions (MDIMEN x NDIMEN) starting at address BASE and respective indices INDEXI and INDEXJ. the address of element (lNDEXI. INDEXJ) is determined by the formula. Entry Address = BASE + (NDIMEN x INDEX!),+ INDEXJ The code shown below can access any array with less than 255 entrIes (i.e .. an I I x21 array with 23 I elements). The table entries are defined using the Data Byte ("DB") dire~tive. and will be contained in the assembly object code as part of the accessing subroutine itself. a There are several different means for ,branching to sections of code determined or selected at run time. (The 'single destination addresses incorporated into conditional and unconditional jumps are. of course. determined at assembly time). Each has advantages for different applications. The most common is an N-way conditional jump based on some variable. with all of the potential destinations known at assembly time. One of a number of small routines is selected according to the value of an index variable determined while the program is running. The most efficient way to solve this problem is with the MOVC and an indirect jump instruction. using a short table of one byte offset values in ROM to indicate the relative starting addresses of the several routines. JMP @A+DPTR is an instruction which performs an indirect jump to an address determined during program execution. The instruction adds the eight-bit unsigned accumulator contents with the contents of the sixteen-bit data pointer. just like MOVC A.@A+DPTR. The resulting sum is loaded into the program counter and IS used as the address for subsequent instruction fetches. Again. a sixteen-bit addition is performed; a carry out from the low-order eight bits may propagate through the higher-order bits. In this case. neither the accumulator contents nor the data pointer is altered. The example subroutine below reads a byte of RA Minto the accumulator from one of four alternate address spaces. as selected by the contents of the variable MEMSEL. The address of the byte to be read is determined by the contents of RO (and optionally R 1). It might find use in a printing terminal application. where four different model printers all use the same ROM code but use different types and sizes of buffer memory for different speeds and options. Example 23 - N-Way Branch and Computed Jump Instructions via JMP @ ADPTR Example 22 - Use of MPY and Data Pointer Instructions to Access Entries from a Multidimensional Look-Up Table in ROM MEMSEL EQU R3 ,JUMP _4 MEM5PO MOV Mav Move ,JMP DB DB DB DB MoV A. MEMSEL OPTR ••.JMPTBL A. ftA+DPTR @A+DPTR MEMSPO-JHPTBL MEMSP l-.JMPTBL HEMSP2-JHPTBL HEMSP3-JMPTBL A. @RO ,READ FROM INTERNAL RAM MEMSP 1 MOVX I'1EMSP2 MOV DPL. RO MOV DPH, RI MQVX A, ItOPTR • READ FROM 64K BYTES OF EXTERNAL RAM HEH,SP3 MoV ANL ANL ORL MOVX ,MATRX1 LOAD CONSTANT READ FROM TWO DIMENSIONAL LOOK-UP TABLE IN PROGRAM MEMORY INTO ACCUMULATOR ' USING LOCAL TABLE LOO!('-UP I,NSTRUCl ION, 'Move A, i!A+PC ,JMPTBL THE TOTAL NUMBER OF TABLE ENTRIES IS ASSUMEO TO BE SMALL, I E LESS THAN ABOUT 2:')0 ENTRIES) TABLE USED IN THIS EXAMPLE IS ( 11 )( 21 ) DESIRED ENTRY ADDRESS 15 GIVEN BY THE FORMULA, r (BASE ADDRESS) + (21 X INDEXI) ... 1 (INDEXJJ 1 INDEXI ECiU INDEXJ E(lU Rb OJH MOV A,INDEXJ MAlRXl RET • FIRST COORDINATE OF ENTRY (a-to) • SECOND COORDINATE OF ENTRY (P-;!O) Move, *21 I'M. A, I NDEX,J ALLOW FOR I NSTRUCT ION BYTE BETWEEN "Move" AND ENTRY INe~ (0.0) A A. C!A+PC DB DB • (entrll 0.0) • tl!ntrll 0.1) 21 22 • (entry 0,20) • tentrll 1. 0) DB 42 • (entry 1,20) DB 231 • (entrll DB DB A, R 1 1>" .07H Pl •• 11111000B Pl. A A. @RO • READ FROM 4K BYTES OF EXTERNAL RAM RET RET BASEl • READ FROM 256 BYTES OF EXTERNAL RAM RET AB ADD Move' A. eRo RET 10.20) NoJe that this approach is suitable whenever the size of jump table plus the length of the alternate routines is less than 256 bytes. The jump table and routines may be located anywhere in program memory. 'independent of 256-byte program memory pages. AFN-01502A-26 10-24 For applications where up to 128 destinations must be selected. all of which reside in the same 2K page of program memory which may be reached by the two-byte absolute jump instructions. the following technique may be usel In the above mentioned printing terminal example. this sequence could "parse" 128 different codes for ASCII characters arriving via the 8051 serial port. Example 24-N-Way Branch with 128 Optional Destinations ' OPTION EQU R3 Jf'IP129 NOV ",.. A. OPTION A DPTP. _INSTIL IA"'DPTR AJKP A.JI'IP AJt'tP PRDCOO. 128 CONSECUTIVE PRDCOl. AJttF INST~ucl10NS pAOC02 /It'" PRDC]E PRDC7F RL """ INSTIL ~ • PWL TlPL v 8'1' 2 FOR 2 BYTE JUfIIP TAIILE • FIRST ENTRY IN JUf'tP TAHI E • .IlR'IP INTO .lU'1P TABLE The destinations in the jump table (PROCOOPROC7F) are not all necessarily unique routines. A large number of special control codes could each be processed with their own unique routine. with the remaining printing characters all causing a branch to a common routine for entering the character into the output queue. In those rare situations where even 128 options are insufficient. or where the destination routines may cross a 2K page boundary, the above approach may be modified slightly as shown below. Example 25-256-Way Branch Using Address LookUp Tables RTEHP EOU ......P256 PlDY 1'10\1 A.OPTION CLR C RLe .INC Pi INC OPH MQY MOVe lICH.. INC I'IOVC PUSH I'tOv RTE", A A.I,,+OPT" A. RTEMP • A.I""OPTR Ace A. RTEMP A.I"+DPTR Ace LOW12B nQ\IC PUSH R7 DPTR. _AORTBl • FIRST ENTRY IN TABLE OF ADDRESSES DW ow ow • SAVE ACe FOR HIGH BYTE READ • READ LOW 8VTE FROI'! ..JUMP TABLE • gET LOW-ORDER BYTE FRDI'! TABL£ • OET HIC~H-DRDER BYTE FRctI TABLE PRocao • UP TO 256 CONSECUTIVE DATA PROCOI • WORDS INDICATINQ STARTINQ ADDRESSES PROCFF 0Vf'II'I'f' CDDE ADDRESS DEFINITIONS N!EDEO BV ABOVE TWO EXAl'lPLES PROCOO NOP NOP PRotOl PROC02 PRobE PRQC1F NOP HOP PR'PCFF NaP Direct Bit AddressIng A number of instructions operate on Boolean (one-bit) variables. using a direct bit addressing mode comparable to direct byte addressing. An additional byte appended to the opcode specifies the Boolean variable. I/O pin. or control bit used. The state of any of these, bits may be tested for "true" or "false" with the conditional branch instructions JB (Jump on Bit) and JNB (Jump on Not Bit). The JBC (Jump on Bit/ and Clear) instruction corpbines a test-for-true with an unconditional clear. As in direct byte addressing, bit 7 of the address byte switches between two physical address spaces. Values between 0 and 127 (00H-7FH) define bits in internal RAM locations 20H to 2FH (Figure 18a); address bytes between 128 and 255 (80H-OFFH) define bits in the 2 x "speciaH"unction" register address space (Figure 18b). If no 2 x "&pecial-function" register corresponds to the direct bit address used the result of the instruction is undefined. Bits so addressed have many wondrous properties. They may be set, cleared, or complemented with the two byte instructions SETB. CLR. or CPL. Bits may be moved to and from the carry flag with MOV. The logical ANL and ORL functions may be performed between the carry and ei~her the addressed bit or its complement. .MULTIPLY BY 2 FOR 2 BVTE .JVI"IP fAYLE LOWl2B THE TWO ACe PUSHES HAVE PRODUCED /It "RETURN ADDRESS" ON THE STACK WHICH CORRESPONDS TO THE DESIRED STARTiNQ ADDRESS IT PlAV 8E REACHED BV POPpi ING fHE STACK INTO THE PC RET AnRt8L Prior to the introduction of the MCS-5I'M family. nice number-crunchers made bad bit-bangers and vice versa. The 8051 is the industry's first single-chip microcomputer designed to crunch and bang. (In some circles. the latter technique is also referred to as "bit-twiddling". Either is correct.) NOP 4. BOOLEAN PROCESSING INSTRUCTIONS The commonly accepted terms for tasks at either end of the computational vs. control application spectrum are. respe~tively. "number-crunching" and "bit-banging". Bit Manipulation Instructions - MOV The "MOV" mnemonic can be used to load an addressable bit into the carry flag ("MOV C, bit") or to copy the state of the carry to such a bit ("MOV bit. C"). These instructions are often used for implementing serial I/O algorithms via software or to adapt the standard I/O port structure .. It is sometime~ desirable to "re-arrimge" the orderofI/O pins because of considerations in laying out printed circuit boards. When interfacing the 8051 to an immediately adjacent device with "weighted" input pins, such as .keyboard column decoder, the corresponding pins are likely to be not aligned (Figure 19). There is a trade-off in "scrambling" the interconnections with either interwoven circuit board traces or through software. This' is extremely cumbersome (if not impossible) to do with byte-oriented computer architectures. The 8051's unique ~et of ,Boolean instructions makes it simple to move individual bits between arbitrary locations. AFN-01502A-27 10·25 a.) RAM Bit AddresteS. b.) Hardware Regl,ter Bit Addre,..,. RAM BYTE 01_ 7l'H (MSB) ~.:... (LSB) 1 1 2FH 7F 7E 70 1C 7B 7A 79 78 2EH 77 16 15 14 73 72 71 70 2DH 6F 6E 60 6C 6B 6A 69 88 2CH 67 66 65 64 63 62 61 60 2BH SF 5E 50 5C 5B SA 59 58 2AH 57 68 55 54 53 52 51 50 29H 4F 4E 41! 4C 4B 4A 49 48 28H 47 46 45 44 43 42 41 40 27H 3F 3E 3D 3C 3B 3A 39 38 26H 37 36 35 34 33 32 31 30 25H 2F 2E 20 2C 2B 2A 29 28 24H 27 26 25 24 23 22 21 20 23H IF IE 1'0 lC lB lA I. 18 22H 17 16 15 14 13 12 11 10 21H OF DE OD DC os OA 09 08 20H 07 06 05 04 03 02 01 00 lFH (LSB) (MbB) Hardware Register Symbol OFfH B OFOH F7 1 OEOH E1J E61 ODOH 071061051041031021011 OB8H -1-1-1 Bcl BBJBA.I B91 'B8 IP OSOH B7 I B61 B41 B31 Bll BO P3 OABH AF 1 -1-1 AC I AB1AA1 A91 A8 IE OAOH A7 I A6 I A4 I AD P2 98H 9F 9E .. '1 98 SCON 90H 97196195194193192J 91 90 Pl 88H 8F I 89 1 88 TCON 80H 87 166 I F6 1 F51 F41 F3 1 E5 I B51 AS I E41 I F21 Fl 1 FO E31 E21 E l l EO A3 laolsclaa I B21 A2 I 19AI Al J ACC PSW DO Bank 3 18H 17H 8E I 80 I 8C I 8B I 8A 1 I 184183182181180 Bank 2 10H OFH 85 PO Bank 1 08H 07H Bank 0 OOH Figure 18. Bit Address Maps Example 26 - Re-ordering I/O Port Configuration ALE OUT]Z PSEN RRC A MOV P2 b,·C RRC A MOV P2, "C RRC MOV P2.7 RRC MOV P26 (LSB) RRC AD MOV • • • P2 4. C P2 3. C P2 2. C • MOVE ORIGINAL. ACC 0 INTO I STORE CARRY TO PIN P2b .110VE ORIGINAL. ACC 1 INTO • STORE CARRY TO PIN P25 ,MOVE ORIGINAL. ·ACC 2 INTO ,STORE CARRY TO PIN P24 ,MOVE ORIGINAL. AC,C 3 INn:: ,STORE CARRY TO PIN P23 ,MOVE ORIGINAL. Ace 4 INTO ,STORE CARRY TO PIN P22 CV CY CY cv CY RET 8351 8751 P2.5 Al P2.4 A2 P2.3 A3 DECODER P2.2 (MSB) Solving Combinatorial Logic Equations - ANL, ORL A4 P2.1 P2.0 Figure 19. "Mismatch" Between 1/0 Decoder port and Virtually all hardware designers are familiar with the problem of solving complex' functions using combinatorial logic. The technologies involved may vary greatly. from multiple contact relay logic. vacuum tubes. TTL. or CMOS to more esoteric approaches like fluidics. but in each case the goal is the same: a Boolean (true/false) function is computed on a number of Boolean variables. 10-26 b.) Relay logic . •. ) TTL CR. CR2 Q:o (U .(V+W)+(XeY)+Z z Figure 20. Implementations of Boolean functions Figure 20 shows the logic diagram for an arbitrary function of six variables named U through Z using standard logic and relay logic symbols. Each is a solution of the equation. INPUT. OUTPUT. LOAD. STORE. etc" instead of the universal MOV. Q :: (U • (V + W)) + (X • Y) + Z (While this equation could be reduced using Karnaugh Maps or algebraic techniques. that is not the purpose of this example. Even a minor change to the function equation would require re-reducing from scratch.) Most digital computers can solve equations of this type with standard word-wide logical instructions and conditional jumps. Still. such software solutions seem somewhat sloppy because of the many paths through the program the computation can take. . Assume U and V are input pins being read by different input ports. Wand X are status bits for two peripheral controllers (read as I/O ports). and Y and Z are software flags set or cleared earlier in the program. The end result must be written to an output pin on some third port. For the sake of comparison we will implement this function with software drawn from three proper subsets of the MCS-51'· instruction set. The first two implementations follow the flow chart shown in Figure 21. Program flow would embark on a route down a testand-branch tree and leaves either the "True" or "Not True" exh ASAP. These exits then write the output port with the data previously written to the same port with the result bit respectively one or zero. In the first case. we assume there are no instructions for addressing individual bits other than special flags like the carry. This is typical of many older microprocessors and mainframe computers designed for number-crunching. MCS-51'· mnemonics are used here. though for most other maGhines the issue would be even further clouded by their· lise of operation-specific mnemonics like (CONTINUE) Figure 21. Flow chart for tree-branching logic' implementation AFN-01502A-29 10-27 These instructions may be "strung together~' to simulate a multiple input logic gate. When finished, the carry flag contains the result, which may be moved directly to the destination or output pin. No flow chart is needed - it is simple to code directly from the logic diagrams in Figure 20. Example 27 -Software Solution to Logic Function of Figure 20, Using only Byte-Wide Logical Instructions ,BFUNC 1 SOLVE A RANDOM LOGIC FUNCTION OF 6 VARIABLES BY LOADING AND MASKING THE APPROPRIATE BITS IN THE ACCUMULATOR, THEN EXECUTING CONDITIONAL JUMPS BASED 'ON ZERO CONDITION R r TI) Sf REAO 1 N Ace IN8243 OP Ml1'.' CLR f\, .. 110100000 1';"', A ,OUTPUT iNSTRl)CTION CODE p,~ 4 ,FAL LING EDGE OF PROG 0111 1-';!,t.oOOOllllB MO'. ,', P2 ,R~AJ) SEn SE re f';' 4 P;-> 5 ,RETURN PROG HI~.H . CE'-SEl EeT CHIP ,SI;T FOIo/ INPur INPUT OATA Serial Port and Timer applications Configuring the 8051's Serial Port for a given data rate and protocol requires essentially three short sections of software. On power-up or hardware reset the serial port and timer control words must be initialized to the appropriate values. Additional software is also needed in the transmit routine to load the serial port data register and in the receive routine to unload the data as it arrives. This is best illustrated through an arbitrary example. Assume the 8051 will communicate with a CRT operating at 2400 baud (bits per second). Each character is transmitted as seven data bits, odd parity, and one stop bit., This results in a character rate of 2400/10=240 characters per second. For the sake of clarity, the transmit and receive subroutines are driven by simple-minded software status polling code rather than interrupts. (It might help to refer back to Figures 7-9 showing the control word formats.) The serial port must be initialized to 8-bit UART mode (MO, MI=OI), enabled to receive all messages (M2=O, REN= I). The flag indicating that the transmit register is free for more data will be artificially set in order to let the output software know the output register is available. This can all be set up with one instruction. In one operand instructions (INC, DEC, DJNZ and the Boolean CPL) the output latch rather than the input pin level is used as the source data. Similarly, two operand instructions using the port as both one source and the destination (ANL, ORL, XRL) use the output latches. This ensures that latch bits corresponding to pins used as inputs will not be cleared in the process of executing these instructions. Example 31 - Serial Port Mode and Control Bits • SPINIT INITIALIZE SERIAL PORT FOR 8-BIT UART MODF , SET TRANS" I T READV FLAG SPINlT MOV SCON ••010100108 ..51 8751 The Boolean operation J BC tests the output latch bit, rather than the input pin, in deciding whether or not to jump. Like the byte-wise logical operations, Boolean operations which modify individual pins of a port leave the other bits of the output latch unchanged. 8243 P4 P2.7 PU P2.• P2.4 P2.3 P2.2 P2.1 P2.0 A good example of how these modes may play together may be taken from the host-processor interface expected by an 8243 I/O expander. Even though the 8051 does' not include 8048-type instructions for interfacing with an 8243, the parts can be interconnected (Figure 23) and the protocol may be emulated with simple software. } INPUTS cs P. PROG P23 P22 P21 P20 P6 Figure 23. Connecting an 8051 with an 8243 I/O Expander AFN-01502A-31 10-Z9 Timer I will be used in auto-reload mode as a data rate generator. To achieve a data rate of 2400 baud, the timer must divide the I MHz internal clock by 32 x (desired data rate): I x 1()6 (32) (2400) which equals 13.02 rounded down to 13 instruction cycles. The timer must reload the value -13, or OF3H. (ASMSI will accept both the signed decimal or hexadecimal representations.) Example 32 -'Initializing Timer Mode and Control Bits ,TltNIT INITIALIZE TIMER 1 FOR AUTO-RELOAD AT 32*2400 HZ (TO USED AS OATED U.-B IT COUNTER T1 INIT MOV MOV SETB ) TCON. *110100109 THI.I-13 TRI . A simple subroutine to transmit the character passed to it in the accumulator must first compute the parity bit, insert it into the data byte, wait untilthe transmitter is available, output the character, and return. This is nearly as easy said as done. Example 33 -Code for UART Output, Adding Parity, Transmitter Loading • sp OUT ADD ODD PAR lTV TO Ace AND TRANSMIT WHEN SERIAL PORT READY SP _OUT e. e 1"101,1 ePL P MOV JNB Ace 7. C eLR TI MOV SOUF. A TI. $ RET A simple minded routine to wait until a character is received, set the carry flag if there is an odd-parity error, and return the masked seven-bit code in the accumulator is equally short. Example 34-Code for UART Reception and Parity Verification ,SP _IN INPUT NEXT CHARACTER FROM SERIAL PORT SET CARRY IFF ODD-PARITY ERROR SP _IN ')NB RI. eLA HOV MOV RI A. SOUF C. P CPL C ANL RET A.17FH $ 6. SUMMARY This Application Note has described the architecture, instruction set, and on-chip peripheral features of the first three members of the MCS-51'· microcomputer family. The examples used throughout were admittedly (and necessarily) very simple. Additional examples and techniques may be found in the MCS-SI'· User's Manual and other application notes written for the MCS-48'· and MCS-SI'· families. Since its introduction in 1977, the MCS-48'· family has become the industry standard single-chip microcomputer. The MCS-SI ,. architecture expands the addressing capabilities and instr,uction set of its predecessor while ensuring flexibility for the future, and maintaining basic software compatability with the past. Designers already f<;lmiliar with the 8048 or 8049 will be able to take with them the education and experience gained from past designs as ever-increasing system performance demands force them to move on to state-ofthe-art products, Newcomers will find the power and regularity of the. 80S I instruction set an advantage ·in streamlining both the learning and design processes. Microcomputer system designers will appreciate the 80S I as basically a single-chip solution to many problems which previously required board-level computers. Designers of real-time control systems will find the high execution speed, on-chip periphj!rals, and interrupt capabilities vital in meeting the timing constraints of products previously requiring discrete logic pesigns. And designers of industrial controllers. will be able to convert ladder diagrams directly from testeq-and-true TTL or relay-logic designs to microcomputer software. thanks to the unique Boolean processing capabilities. It has not been the intent of this note to gloss over the difficulty of designing microcomputer-based systems. To be sure. the hardware and software design aspects of any new computer system are nontrivial tasks. However. the system speed,and level of integration of the MCS-SI'· microcomputers; the power and flexibility of the instruction set. and the sophisticated assembler and other support products combine to give both the hardware and software designer as much of a head start on the problem as possible. AFN-01502A-32 10-30 Using the Intel MCS®-51 Boolean Processing Capabilities Contents 1. INTRODUCTION. . . . . . . . . . . . . . . . . . ... 10-32 2. BOOLEAN PROCESSOR OPERATION . . . . . .. Processing Elements. . . . . . . . . . . . . . . . . . . Direct Bit Addressing . . . . . . . . . . . . . . . . . . . Instruction Set. . . . . . . . . . . . . . . . . . . . . . . Simple Instruction Combinations. . . . . . . . . . . . 10-32 10-33 10-34 10-39 10-40 3. BOOLEAN PROCESSOR APPLICATIONS . . ... Design Example #1 - Bit Permutation. . . . . . . . Design Example '/12 - Software Serial 110. . . . . . Design Example #3 Combinatorial Logic Equations. . . . . . . .. . . . Design Example #4 Automotive Dashboard Functions. . . . . . . . . . Design Example #5 Complex Control Functions . . . . . . . . . . . . . . Additional Functions and Uses. . . . . . . . . . . . . 10-41 10-42 10-45 10-46 10-49 10-54 10-59 4. SUMMARY . . . . . . . . . . . . . . . . . . . . . ... 10-60 APPENDIX A . . . . . . . . . . . . . . . . . . . . . . . 10-61 10-31 1. INTRODUCTION The Intel microcontroller family now has th~ee new. memhcr, the Intel® XOJ I. X051. and X751 ,ingle-chip microcomputer,. These devices. shown in Figure I.. will allow whole new classes of pr~ducts to benefit from rec~nt . advances in Integrated Electronics. Thanks to Intel'sne\\!' HMOS'" technology. they prO\ ide larger pi'(lgram' and data memory spaces. more flexible I 0 and peripheral capahilitie,. greater 'peed. and lower system cost than any previou~-generatlon single-chip microcomputer. ,\J C 1 P11 - C 2 39::1-POO P12- t 3 38::::J -POl P13- [ 4 37 J PH-CS 36 :J - P03 -P02 35 J Pl.6 - C 7 34 J -P05 P17 - C 8 33 J .....,P06 9 32 J -P07 ,.15-[ • VPOIRST - [ C 10 P311TXD - [ 11 P321iN'TO - [ 12 P3.~iNTi P34/TO - [ 13 [ The 805,1 inco'rporates a number of special features which support the direct manipulation and testing of individual bits and allow the use of single-bit variables in performing logical operations. Taken together. these features are referred to as the MCS_5I™ Boolean Processor. While the bit-processing capabilities alone would be adequate. to solve many control applications. their true power comes when they are used in conjunction with the microcomputer's byte-processing and numerical capabilities, 4Q:J'-vcc P1 0 - P3 O/RXD - The CPU in each microcomputer is one of the industry's fas.test and most efficient fo~ 'numerical. calculations on . byte operands. But controllers often deal with bits. n()t bytes: in the reaI'worid. sWitch contacts can only be open or closed. indicators should be ei.ther lit or dark. motors are either turned on or off. and so forth. For such control situations the most significant aspect of the MCS_5ITM architecture is its complete hardware support for one-bit. or Boolean variables (named in honor of Mathematician George Boole) a,. a separate data type. -P04 31 ::J - VDOIEA 6031 6051 8751 30 J - PROG/ALE 29 J - PSeN 28 J -P27 14 27:::J -P26 26::1-·25 P35/TI - C 15 P36/WR - [ 16 25::]-P24 P37/iiD - [ 11 24::J -P23 XTAL2 - t 18 23:::J -P22 XTAll - C 19 22::::J- P21 VSS-[20 21 J Man~ concep" embodied by the Boolean Procc"or will . certainly be new even to experienced microcomputer system designers. The purpose of this Applicatio'n Note is to explain these concepts and show how theyare used. It is assumed the reader has read Application Note AP-69. An Introduction to the Intel® MCS-5J™ Single-Chip Microcomputer Family, publication number 121518. or has been exposed to Intel's single-chip microcomputer product line" -P20 For detailed information on these parts refer to the Intel MCS-5pM Family User's Manual. publication number 121517, The instruction set. assembly language. and use of the 8051 assembler (ASM51) are further described in the MCS·5pM Macro Assembler User's Guide. publication number 9800937. Figure 1. 8051 Family Pinout Diagram. Table I summari7es the quantitative differences between the members of the MCS_48™ and 8051 families. The 8751 contains 4K bytes of EPROM program memory fabricated on-chip. while the 8051 replaces the EPROM with 4K bytes of lower-cost mask-programmed ROM. The 8031 has no program memory on-chip; instead. it accesses up to 64K bytes of program memory from external memory. Otherwise. the three new family members are identical. Throughout this Note. the term "8051" will represent all members of the'805! Family. unless specifically stated otherwise. 2. BOOLEAN PROCESSOR OPERATION The Boolean Processing capabilities of the 8051 are based on concepts which have been around for some time. Digital computer systems of widely varying designs all have four functional elements in common (Figure 2): Table 1. Features of Intel's Single·chipMicrocomputers. EPROM Program Memory _. 8748 - 8751 ROM Program Memory 8021 8022 8048 8049 8051 External Program Memory - .. 8035 8039 8031 . Program Memory (Int/Max) IK 2K IK 2K 4K IK 2K 4K 4K 64K Data Memory (Bytes) Instr. Cycle Time Input/' Output Pins Interrupt Sources Reg. Banks 64 64 64 128 128 10 ~Sec 10 ~Sec 2.5 ~Sec 21 28 27 27 32 0 2 2 2 5 I I 1.36~Sec 1.0 ~Sec 2 2 4 01489A-03 10·32 • a central processor (CPU) with the control, timing. and logic circuits needed to execute stored instructions; • a memory to store the sequence of instructions making up a program or algorithm; • data memory to store variables used by the program; and • some means of communicating with the outside world. PROGRAM MEMORY INPUTI OUTPUT PORTS LAL fORLO DATA MEMORY proce,\or, might fir,t IT-create Shake'peure\ c1a,,,c, and this Application Note)! Thi, fact offer, little consolation to product designers who want program, to run a, quickly as possible. By definition, a real-time control algorithm must proceed quickly enough to meet the preordained speed constraints of other equipment. One of the factors determining how long it will take a microcomputer to complete a given chore is the number of instructions It must execute. What makes a given computer architecture particularly well-or poorly-,uitcd for a class of problems is how well its instruction set matches the tasks to be performed. The better the "primative" operations correspond to the steps taken by the control algorithm. the lower the number of instructions needed. and the quicker the program will run. All else being equal, a CPU supporting M-bit arithmetic directly could clearly perform floating-point math faster than a machine bogged-down by mUltiple-precision subroutines. In the same way: direct support for bit manipulation n'aturally leads to more efficient programs handling the binary input and output conditions inherent in digital control problems. Processing Elements Figure 2. Block Diagram for Abstract Digital Computer. . The CPU usually includes one or more accumulators or special registers for computing or storing values during program execution. The instruction set of such a processor generally includes. at a minimum. operation classes to perform arithmetic or logical functions on program variables. move variable, from one place to another. cau~e program execution to jump or conditionally branch based on register or variable states. and instructions to call and return from subroutines. The program and data memory functions sometimes share a single memory space. but this is not always the case. When the address spaces are separated. program and data memory'need not even have the same basic word width. A digital computer's flexibility comes in part from combining simple fast operations \0 produce more complex (albeit slower) ones, which in turn link together eventually solving the problem at hand. A four-bit CPU executing mUltiple precision subroutines can. for example. perform M-bit addition and subtraction. The subroutines could in turn be building blocks for floating-point multiplication and division routines. Eventually. the four-bit CPU can simulate a far more complex "virtual" machine. ' In fact. any digital computer with the above four functional elements can (given time) complete any algorithm (though the proverbial room full of chimpanzees at word The introductIOn stated that the 8051's bit-handling capabilities alone would be sufficient to !>olve some control applications. Let's see how the four basic elements of a digital computer - a CPU with associated registers. program memory. addressable data RAM. and 110 capab,ility - relate to Boolean variables. cpu. The 8051 ('PU incorporates special logic devoted to executing several bit-wide operations. All told. there are 17 such instructions. all listed in Table 2. Not shown are 94 other (mostly byte-oriented) 8051 instructions. Pro~ram Memory. Bit-processing instructions are fetched from the same program memory as other arithmetic and logical operations. In addition to the instructions of Table 2. several sophisticated program control features like multiple addressing modes. subroutine nesting. and a twolevel interrupt structure are useful in structuring Boolean Processor-based programs. Boolean instructions are one. two. or three bytes long. depending on what function they perform. Those involving only the carry flag have either a single-byte opcode or an opcode followed by conditional-branch destination byte (Figure 3.a). The more general instructions add a "direct address" byte after the opcode to specify the bit affected. yielding two or three byte encodings (Figure 3. b). Though this format allows potentially 256 directly addressable bit locations. not all of them are implemented in the 8051 family. a 01489A-Q4 10-33 Table 2. MCS-S1TM Boolean Processing Instruction Subset. Mnemonic Description SETB SETS ClR CLR CPI CPL Set Carry flag Set direct Bit Clear Carry flag Clear direct bIt Complement Carry flag Complement direct hit C bit C bit C hit MOY Chit MOY bit.C A"IL A"II ORL ORL J"IC JB J"IB JBC Byte Cyc Jump Jump Jump Jump Jump 2 - I I I I 2 2 2 I If Carry I' flag i, ,et if \io Carry flag If direct Bit ,et 3 If direct Bit "lot 'et 3 If direct Bit IS ,et & Clear bit 3 opcode II JC JNC 2 displacement I rei rei a.) Carry Control and Test Instructions. I 2 2 2 Carry flag. bit 128 software flags. any I 0 pin. control or stalus bit rei All conditional jumps include an 8-bit offset byte. Range is + 127 -128 bytes relative to first byte of the following instruction. ' opcode II I opcode JB JNB JBC bit address I bit bit bit bit bit bit bit bit bit,C SETB CLR CPL ANLC, ANL C,I ORLC, ORL C,I MOVC, MaV 2 2 Address mode abbreviations: C opcode SETB C CLR C CPL C I Chit A "I D direct bit to Carry nag Chit A"ID complement of direct hit to Carry 'flag Cbit OR direct hit to Carry flag C bit OR complement of direct bit to Carry nag rei rei blue! hiLrd hiLrel JC Mme direct hIt to Carry flag Move Carry flag to direct bit I II bit address bit, bit, bit. II displacement I rei rei rei b.) Bit Manipulation and Test Instructions. All mnemonics copyrighted© Inlel Corporation 1980 Figure 3; Bit Addressing Instruction Formats. Direct Bit Addressing DolO Memorr. The instructions in Figure 3.b can operate directly upon 144 general purpose bits forming the Boolean processor "RAM." Thew bih can be used as sofware flag' or to store program variables. Two operand instructiom use the CPU's carry flag (HC") as a special one-bit register: in a sem,c. the carry is a "Boolean accumulator" for logical operations and data transfers. The most significant bit of the direct address byte selects one of two groups of bits. Values between 0 and 127 (OOH and 7FH) define bits in a block of 32 bytes of on-chip RAM. between RAM addresses 20H and 2FH (Figure 4.a). They are numbered consecutively from the lowestorder byte's lowest-order bit through the highest-order byte's highest-order bit. InflW/OUlflUI. All 32 I' 0 pins can be addressed as individual inputs. outputs. or both. in any combihation. Any pin can be a control strobe output. status (Test) input. or serial I 0 link implemented via software. An additional 33 individually addressable bits reconfigure. control. and monitor the status of the CPU and all on-chip peripheral functions (timer counters. serial port modes. interrupt logic. and so forth). Bit addresses between 128 and 255(80H and OFFH) correspond to bits in a number of special registers. mostly used for I 0 or peripheral control. These positions are numbered with a different scheme than RAM: the five high-order address bits match those of the register's own address. while the three low-order bits identify the bit position within that register (Figure 4.b). 01489A-05 10-34 RAM Byte (MSB) Direct Byte Address (MSB) (lSB) 7FH~ Bit Addresses (lSB) HaTdw.re Register Symbol OFFH 1"-- 1'- 2FH 7F 7E 70 7C 711 7A 79 78 2EH 77 76 75 74 73 72 71 70 20H 6F 6E 60 6C 6B 6A 69 68 2CH 67 66 65 64 63 62 61 60 2BH SF 5E 50 5C 5B 5A 59 58 2AH 57 56 55 54 53 52 51 50 29H 4F 4E 40 4C 4B 4A 49 48 28H 47 46 45 44 43 42 41 40 27H 3F 3E 3D 3C 3B 3A 39 38 26H 37 36 35 34 33 32 31 30 25H' 2F 2E 20 2C 2B 2A 29 28 24H 27 26 25 24 23 22 21 20 23H 1F 1E 10 1C 1B 1A 19 18 22H 17 16 15 14 13 12 11 10 21H OF OE 00 OC OB llA 09 08 20H 07 06 05 04 03 02 01 00 OFOH F7 FO B OEOH E7 EO ACC OOOH 07 DO PSW B8 IP OB8H OBOH B7 BO P3 OA8H AF A8 IE OAOH A7 AO P~ 98H 9F 98 SCON 90H 97 90 P1 88H 8F 88 TCON 80H 87 80 PO 1FH 18H 17H Bank 3 10H OFH Bank 2 08H 07H ,Bank 1 00 BankO a.) RAM Bit Addresses. b.) Special Function Register Bit Addresses. Figure 4. Bit Address Maps. ,Notice the column labeled "Symbol"in Figure 5, Bit, with special meaning' in the PSW and other regiqers have corresponding ,ymbolic names, General-purpo~e (as opposed to carry-specific) instructiom may acce,s the carry like any other bit byusing the mnemonic CY in place of CPO. PI. P2. and P3 are the 8051's four 110 ports; secondary functions assigned to each of the eight pins of P3 are shown in Figure 6, Figure 7 ~hows the la,t four bit addre"able regiqers, TCON (Timer Control) and SCOI\: (Serial port Control) control and monitor the corresponding peripherab. while IE (Interrupt Enable) and IP (Interrupt Priority) enable and prioriti7e the five hardware interrupt ,ource~, Like the reserved hardware register addres,e,. the five bib not implemented in I E and \P ,hould not be acces,ed; they can not be used as software flag', 01489A-06 10-35 (LSB) (MSB) I Cy I AC I FO I RS1 I RSO I OV P OV PSW.2 Symbol Position Name and significance CY PSW.7 Carry flag. Set/cleared by hardware or softwaredwing certain arithmetic and logical instructions. AC PSW.6 Auxiliary Carry flag. Set/cleared by hardware during addition or subtraction instructions to indicate carry or borrow out of bit 3. FO PSW.S Flag O. Set/cleared/tested by software as a user-defined status flag. RS1 RSO PSW.4 PSW.3 Register bank Select control bits 1 & O. Set/cleared by software to determine working register bank (see Note) P Overflow flag. . Set/cleared by hardware during arithmetic instructi0ns to indicate overflow conditions. PSW.1 (reserved) PSW:O Parity flag. Set/cleared by hardware each instruction cycle to indicate an odd/even number of "one" bits in the accumulator, i.e., even parity. Note - the contents of (RS1, RSO) enable the working register banks as follows: (0,0) - Bank 0 (0;1)-Bank1 (1,0) c Bank 2 (1,1)~Bank3 (00H-07H) (08H-OFH) (10H-17H) (18H-1 FH) Figure 5. PSW - Program Status Word organization. (MSB) I RD (LSB) I WR I T1 TO IINT1 1lNTO ITXD I RXD I Symbol Position Name and significance RD WR P3.7 P3.6 Read data control output. INT1 P3.3 Interrupt 1 Input pin. Active low pulse generated by Low-level or falling-edge hardware when external data memory is read. triggered. Write data control output. Active low pulse generated by hardware when external data memory is written. T1 P3.S Timer/counter 1 external input or test pin. TO P3.4 Timer/counter 0 external input or test pin. INTO P32 Interrupt 0 input pi"1. Low-level or falling-edge triggered. TXD P3.1 Transmit Data pin for serial port in UART mode. Clock output in shift register mode RXD P3.0 R.eceive Data pin for serial port in UART mode. Data I/O pin in shift register mode. Figure 6. P3 - Alternate 110 Functions of Port 3. 01489A-07 10-36 (MSB) (LSB) ITF1 I TR1 I TFO I TRO IIE1 IT1 lEO ITO IE1 TCON.3 Interrupt 1 Edge flag. Set by hardware when external interrupt edge detected. Cleared when interrupt processed. IT1 TCON.6 Timer 1 Run control bit. Set/cleared by software to turn timer/counter on/off. TCON.2 Interrupt 1 Type control bit. Set/cleared by software to specify falling edge/low level triggered external interwpts. lEO TCON.5 Timer 0 overflow Flag. Set by hardware on timer/counter overflow. Cleared when interrupt processed. TCON.1 Interrupt 0 Edge flag. Set by hardware when external interrupt edge detected. Cleared when interrupt processed. ITO TCON.O Interrupt 0 Type control bit. Set/cleared by softrware to specify falling edge/low level triggered external interrupts. RB8 SCON.2 Receive Bit 8. Set/cleared by hardware to indicate state of ninth data bit received. TI SCON.1 Transmit Interrupt flag. Set by hardware when byte transmitted. Cleared by software after servicing. RI SCON.O Receive Interrupt flag. Set by hardware when byte received. Cleared by software after servicing. Symbol Position Name and significance TF1 TCON.? Timer 1 overflow Flag. Set by hardware on timer/counter overflow. Cleared when interrupt processed. TR1 TFO TRO TCONA Timer 0 Run control bit. Set/cleared by software to turn timer/counter on/off. a.) TCON - Timer/Counter Control/status register. (MSB) (LSB) ISMO ISM1 ISM21 REN ITBsl RBsl TI I RI ·1 Symbol Position Name and significance SMO SCON.? Serial port Mode control bit O. Set/cleared by software (see note). SM1 SM2 REN TB8 b.) SCON.6 Serial port Mode control bit 1. Set/cleared by software (see note). SCON.5 Serial port Mode control bit 2. Set by software to disable reception of frames for which bit 8 is zero. SCONA Receiver Enable control bit. Set/cleared by software to enable/disable serial data reception. Note - SCON.3 Transmit Bit 8. Set/cleared by hardware to determine state of ninth data bit transmitted in 9-bit UART mode. SCON - Serial Port Control/status register. the state of (SMO,SM1) selects: (0,0) - Shift register I/O expansion. (0,1) - 8 bit UART, variable data rate. (1,0) - 9 bit UART, fixed data rate. (1,1) - 9 bit UART, variable data rate. Figure 7. Peripheral Configuration Registers. 014S9A-08 10-37 (MSB) (LSB) I ES I ET1 I EX1 I ET1 I EXO I Symbol Position Name and significance EA ES Enable All control bit. Cleared by software to disable all interrupts, independent of the state of IE.4 - IE.O. EX1 IE.2 Enable External interrupt 1 control bit. Set/cleared by software to ~mable/disable interrupts from INT1. 1E.6 1E.5 (reserved) ETa IE.1 IE4 Enable Serial port control bit Set/cleared by software to enable/ disable Interrupts from TI or RI flags. Enable Tjmer 0 control bit. Set/cleared by software to enable/ disable interrupts from timer/counter O. EXO lEO Enable External Interrupt a control bit. Set/cleared by software to enable/disable Interrupts from INTO. PX1 IP.2 External interrupt 1 Priority control bit. Set/cleared by software to specify high/low priority interrupts for INT1. IE3 ET1 c.) IE 7 Enable Timer 1 control bit Set/cleared by software to enable/ disable interrupts from timer/counter 1 IE - Interrupt Enable Register. (MSB) (LSB) PS I PT1 I PX1 I PTO I PXO I Symbol Position Name and significance IP.7 IP.6 IP.5 (reserved) (reserved) (reserved) PS IP4 Serial port Priority control bit. Set/cleared ,by software to specify high/low priority interrupts for Serial port. PTO IP 1 Timer 0 Priority control bit. Set/cleared by software to specify highiIO"'! priority interrupts for timdr/counter O. PT1 IP.3 Timer 1 Priority control bit. , Set/cleared by software to specify high/low priority interrupts for timer/counter 1. PXO IP.O External interrupt a Priority control bit. Set/cleared by software to specify high/low priority interrupts for INTO. d.) IP - Interrupt Priority Control Register. Figure 7. (continued) Addressable Register Set. There are 20 special function registers in the 8051, but the advantages of bit addressing only relate to the II described below. Five potentially bit-addressable register addresses (OCOH, OCSH, 008H. OESH, & OF8H) are being reserved for possible future expansion in microcomputers based on the MCS-5I'M architecture. Reading or writing non-existent registers in the 8051 series is pointless, and may cause unpredictable results. Byteowide logical operations can be used to manipulate bits in all non-bit addressable registers and RAM. The accumulator and B registers (A and B) are normally involved in byte-wide arithmetic. but their individual bits can also be used as 16 general software flags. Added with the 128 flags in RAM, this gives 144 general purpose variables for· bit-intensive programs. The program status word (PSW) in Figure 5 is a collection of flags and, machine statuS bits including the carry flag itself. Byte operations acting on the PSW can therefore affect the carry. 10-3a Instruction Set Having looked at the bit variables available to the Boolean Processor. we will now look at the four classes of instructions that manipulate these bits. It may be helpful to refer back to Table 2 while reading this section. State Control. Addressable bits or flags may be set. cleared. or logically complemented in one instruction cycle with the two-byte instructions SETB. CLR. and CPL. (The "B" affixed to SETB distinguishes it from the assembler "SET" directive used for symbol definition.) SETB and CLR are analogous to loading a bit with a constant: I ot O. Single byte versions perform the same three operations on the carry. The MCS-5l'· assembly language specifies a bit address in any of three ways: • bya number or expression corresponding to the direct bit address (0-255); Figure 8. Bit Transfer Instruction Operation. • by the name or address of the register containing the bit, the dot operator symbol (a period: ". "). and the bit's position in the register (7.{); slash mark ("/ ") before the source operand indicates whether to use the positive-logic value or the logical complement of the addressed bit. (The source operand itself is never affected.) • in the case of control and status registers. by the predefined assembler symbols listed in the first columns of Figures 5-7. Bit-test Instructions. The conditionaljump instructions "JC reI" (Jump on Carry) and"JNC reI" (Jump on Not Carry) test the state of the carry flag. branching if it is a one or zero. respectively. (The letters "reI" denote relative code addressing.) The three-byte instructions "JB bit. reI" and "JNB bit.rel" (Jump on Bit and Jump on Not Bit) test the state of any addressable bit in a similar manner. A fifth instruction combines the Jump on Bit and Clear operations. "JBC bit.rel"conditionally branches to the indicated address. then clears the bit in the same two cycle instruction. This operation is the same as the MCS-48'· "JTF" instructions. Bits may also be given user-defined names with the assembler "BIT" directive and any of the above techniques. For example. bit 5 of the PSW may be cleared by any of the four instructions. USLFLG BIT PSW.5 User Symbol Definition CLR CLR CLR OD5H PSW.5 FO CLR USILFLG Absolute Addressing Use of Dot Operator Pre-Defined Assembler Symbol User-Defined Symbol Data Transfers. The two-byte'MOV instructions can transport any addressable bit to the carry in one cycle. or copy the carry to the bit in two cycles. A bit can be moved between two arbitrary locations vIa the carry by combining the two instructions. (If necessary. push and pop the PSW to preserve the previous contents of the carry.) These instructions can replace the multi-instruction sequence of Figure 8. a program structure appearing in controller applications whenever flags or outputs are conditionally switched on or off. Logical Operations. Four instructions perform the logicalAND and logical-OR operations between the carry and another bit. and leave the results in the carry. The instruction mnemonics are ANL and ORL; the absence or presence ofa All 8051 conditional jump instructions use program counter-relative addressing. and all execute in two cycles. The last instruction byte encodes a signed displacement ranging from - L28 to + 127. During execution. the CPU adds this value to the incremented program counter to produce the jump destination. Put another way. a conditional jump to the immediately following instruction would encode OOH in the offset byte. A section of program or subroutine written using only relative jumps to nearby addresses will have the same machine code independent of the code's location. An assembled routine may be repositioned anywhere in memory, even crossing memory page boundaries, without having to modify the program or recompute destination addresses. To facilitate this flexibility, there is an unconditional "Short Jump" (SJMP) which uses relative addressing as well. Since a pro01489A-l0 10-39 grammer would have quite a chore trying to compute relative offset values from one instruction to another, ASM51 automatically computes the displacement needed given only the destination address or label. An error message will alert the programmer if the destination is "out of range." (The so-called "Bit Test" instructions implemented on many other microprocessors simply perform the logical-AND operation between a byte varia ble and a constant mask. and set or clear a 7ero flag depending on the result. This is essentially equiyalent to the 8051 "MOY C.bit" instruction. A second instruction is then needed to conditionally branch based on the state of the zero flag. This does not constitute abstract bit-addressing in the MCS-51'· sense. A flag exists only as a field within a register; to reference a bit the programmer must know and specify both the encompassing register and the bit's position therein. This constraint severely limits the flexibility of symbolic bit addressing and reduces the machine's code-efficiency and speed.) Table 3. Other Instructions Affecting the Carry Flag. Mnemonic Description ADD A.Rn ADD A.dlfect ADD A.@Ri ADD A.#data Add regiqer to Accumulator Add direct byte to Accumulator Add indlfect RAM to Accumulator Add immediate data to Accumulator Add regi,ter to Accumulator with Carry nag Add direct byte to Accumulator with Carry flag Add indirect RAM to Accumulator with Carry nag Add Immedl3te data to Ace with Carn' nag Subtract regl\ler from Accumulator with borrow Subtract direct byte from Ace with borrow Subtract indirect RAM from Acc with borrow Subtract Immedl3te data from Acc with borrow Multlpl) A & R Dl\idc A by R Decimal Adiu,t Accumulator ADDC A.Rn ADDC A. dlfect ADDCA.@RI ADDC A.#data Interaction with Other Instructions. The carry flag is also affected by the instructions listed in Table 3. It can be rotated through the accumulator. and altered as a side effect of arithmetic instructions. Refer to the User's Manual for details on how these instructions operate. Simple Instruction Combinations SURR A.Rn SURR A.dlrect SURR A.@RI SURR A.#data By combining general purpose bit operations with certain addressable bits. one can "custom build" seveml hundred useful instructions. All eight bits of the PS W can be tested directly with conditional jump instructions to monitor (among other things) parity and overflow status. Programmers can take advantage of 128 software flags to keep track of operating modes. resource usage. and so forth. The Boolean instructions are also the most efficient way to control or reconfigure peripheral and I 0 registers. All 32 I' 0 lines become "test pins." for example. tested by conditional jump instructions. Any output pin can be toggled (complemented) ina single instruction cycle. Setting or c1earing the Timer Run flags (TRO and TR I) turn the timer/ counters on or off; polling the same flags elsewhere lets the program determine if a timer is running. The respective overflow flags (TFO and TFI) can be tested to determine when the desired period or count has elapsed. then cleared in preparation for the next repetition. (For the record. these bits are all part of the TCON register. Figure 7.a. ThGnks to symbolic bit addressing. the programmer only needs to remember the mnemonic associated with each function. In other words. don't bother memori7ingcontrol word layouts.) In the MCS-48® family. instructions corresponding to some of the above functions require specific opcodes. Ten different opcodes serve to clear! complement the software flags FO and FI. enable /disable each interrupt. and start' stop the timer. In the 8051 instruction set. just three opcodes (SETB. Ml'l. DIY DA AR AR A RLC A RRC A Byte eyc 2 I 4 4 Rotate Accumulator Left through the Carry flag: Rotate Accumulator Right through Carry flag C.I"E A.dlfect.rel Compare dlfect byte to Acc & Jump if :-;ot Equal C.I"E A.#data.rel Compare Immediate to Acc & Jump if "ot Equal C.I"E R n.#d~ta.rel Compare immed to regi,ter & .I ump if "at Equal CJ"E @RI.#data.rclCompare immed to Indirect & .lump If "ot Equal' All mnemonic, copYflghtcd © 3 2 3 2 Intel Corporation 19HO 01489A-11 10~40 using awkward sequences of other basic operations. As mentioned earlier, any CPU can solve any problem given enough time. . Quantitatively, the differences between a solution allowed by the 8051 and those required by previous architectures are numerous. What the 80S I Family buys you is a faster, cleaner, lower-cost solution to microcontroller applications. CLR, CPL) with a direct bit address appended perform the same functions. Two test instructions UB and JNB) can be combined with bit addresses to test the software flags, the 8048 I/O pins TO, TI, and INT, and the eight accumulator bits, replacing 15 more different instructions. Table 4.a shows how 8051 programs implement software flag and machine control functions associated with special The opcode space freed by condensing many specific 8048 Table 8048 Instruction 4.a. Contrasting 8048 and 8051 Bit Control and Testing Instructions. 8x51 Instruction Bytes Cycles & uSec C FO I 2 I I JNC JB JB rei FO.rel ACC.7.rel 2 3 3 2 5.0 5.0 5.0 JB JNB JBC TO.rel INTO.rel TFO.rel 3 3 3 2 2 2 2.5 2.5 2.5 SETB SETB CLR TRO EXO ETO 2 2 2 I I I Bytes Cycles uSec Flag Control CLR C CPL FO I I I I 2.5 2.5 CLR CPL Flag Testing JNC offset JFO offset JB7 offset 2 2 2 2 2 2 5.0 5.0 5.0 Peripheral JTO JNI JTF 2 2 2 2 2 2 Machine and Peripheral Control I STRT T I EN I I TCNTI DIS I I I Polling offset offset offset 2 2 Table 4.b. Replacing 8048 Instruction sequences with single 8x51 Instructions. 8048 Instructions Bytes Flag Control Set carry: CLR C CPL C = Set Software Flag: CLR FO CPL FO = - Cycles uSec 8051 Instructions 2 2 5.0 SETB C I I 2 2 5.0 SETB FO 2 I opcodes in the 8048. In every case the MCS-51'·solution requires the same number of machine cycles, and executes 2.5 times faster. 3. B.OOLEAN PROCESSOR APPLICATIONS So what? Then what does all this buy you? QualiJatively, nothing. All the same capabilities could be (and often 'have been) implemen~ed on other machines 10-41 Cycles & uSee Bytes instructions into a few general operations has been used to add new functionality to the M CS-S 1'· architecture - both for byte and bit operations. 144 software flags replace the 8048's two. These flags (and the carry) may be directly set, not just cleared and complemented, and all can be tested for either state, not just one. Operating mode bits previously inaccessible may be read, tested, or saved. Situations where the 8051 instruction set provides new capabilities are contrasted with 8048 instructiQn sequences in Table-4.b. Here the 8051 speed advantage ranges from 5x to 15x! 01489A-12 8048 Instructions Bytes Table 4b (Continued) 8x51 Cycles uSec Instructions Bytes Cycles Be uSt!c Turn Off Output Pin: ANL PI.#OFBH = 2 2 5.0 CLR PI.2 2 I Complement Output Pin: A.PI IN XRL A.#04H OUTL PI.A = 4 6 15.0 CPL PI.2 2 I in RAM: RO.#FLGADR A.@RO A.#FLGMASK @RO.A = 6 6 15.0 CLR USER_FLG 2 I = 4 4 10.0 JNB FO.rel 3 2 Jump if Accumulator bit is 0: A CPL JB7 offset CPL A = 4 4 10.0 JNB ACC.7.rel 3 2 Peripheral Polling Test if Input Pin is Grounded: IN A.PI CPL A offset 183 = 4 5 12.5 JNB PI.3.rel 3 2 Test if Interrupt Pin is High: $+4 JNI JMP offset = 4 4 10'.0 JB INTO.rel 3 2 Clear Flag MOY MOY ANL MOY Flag Testing Jump if Software Flag is 0: $+4 JFO JMP offset Combining Boolean and byte"wide instructions can produce great synergy. An MCS-5I'· based application will prove to be: • simpler to write since the architecture correlates more closely with the problems being solved; • easier to debug because more individual instru~tions have no unexpected or undesirable side-effects; • more byte efficient due to direct bit addressing and program counter relative branching; • faster running because fewer bytes of instruction need to be fetched and fewer conditional jumps are processed; • lower cost because of the high level of systemintergration within one component. These rather unabashed claims of excellence shall not go unsubstantiated. The ~est of this chapter examines less trivial tasks simplified by the Boolean processor: The first three compare the 8051 with other microprocessors; the last two go into 8051-based system designs in much greater depth. Design Example #1 - Bit Permutation First off. we'll use the bit-transfer instructions to permute a lengthy pattern of bits. A steadily increasing number of data communication products use encoding methods to protect the security of sensitive information. By law, interstate financial transactions involving the Federal banking system must be transmitted using the Federal Information Processing Data EncryptioI'J Standard (DES). Basically, the DES combines eight bytes of "plaintext" data (in binary, ASCII, or any other format) with a 56-bit "key", prod!lcing a .64-bit encrypted value for transmission. Atthe receiving end the same algorithm is applied to the incoming data using the .same key, reproducing the original eight byte message. The algorithm used for these permutations is fixed; different user-defined keys ensure data privacy. 01489A-13 It is not the purpose of this note to describe the DES in any detail. Suffice it to say that encryption/ decryption is a long. iterative process consisting of rotations. exclusive -OR operations. function table look-ups. and an extensive (and quite bizarre) sequence of bit permutation. packing. and unpacking steps. (For further details refer to the June 21. 1979 issue of Electronics magazine.) The bit manipulation steps are included. it is rumored. to impede a general purpose digital supercomputer trying to "break" the code. Any algorithm implementing the DES with previous generation microprocessors would spend virtually all of its time diddling bits. The bit manipulation performed is typified by the Key Schedule Calculation represented in Figure 9. This step is repeated 16 times for each key used in the course of a transmission. In essence. a seven-byte. 56-bit "Shifted Key Buffer" is transformed into ----:=1)-,---- L DASH l FRNT 81IAKE II TURN L ..... --itt ==r:>--l='}--1+--- . . . .H R REAR PARK Applying the brake pedal turns the taillight filaments on constantly ... unless a turn is in progress, in which case the blinking taillight is not affected. (Of course. the front turn signals and dashboard indicators are not affected by the brake pedal.) Table 6 summarins these operating modes. ---------j--..,.-1' LO FREQ OSCILLATOR HI FREO. OSCILLATOR Figure 15. TTL logic implementation of automotive turn signals. Table 6. Truth table for turn-signal operation. BRAKE SWITCH 0 0 0 0 0 0 I I I I I I INPUT SIGNALS RIGHT EMERG. LEFT TURN SWITCH TURN SWITCH SWITCH 0 0 0 0 0 I 0 I 0 I 0 0 I 0 I I I 0 0 0 0 () 0 I 0 0 I I 0 0 I 0 I I I 0 LEFT FRONT & DASH OUTPUT SIGNALS RIGHT LEFT RIGHT FRONT REAR .REAR & DASH OFF OFF OFF OFF OFF OFF BLI"'K RLI"K BII"K RII"K OFF RLI"K RLI"K RII"'K RI.J"K OFF OFF OFF OFF 0"1 0"1 0"1 RI.J"IK BI.J"K RLINK BliNK BLI'\iK OFF RI I"IK 0" RI.J"IK RII"K BII"JK 0'1,1 0"1 ON BLINK BLINK 0'" BII"K BLI"'K RII"K BLI"K RI I"K RII"K RII"K RI I"K RI.J"JK 01489A·20 10-49 I n most cars, the switching logic to generate these functions requires a number of multiple-throw contacts. As manyas 18 conductors thread the steering column of some automobIles solely for turn-sIgnal and emergency blinker functions. (The author discovered this recently to his ,I'tonishment and dismay when replacing the whole assembly because of one burned contact.) A multiple-conductor wiring harness runs to each corner of the car, behind the dash. up the steering column, and down to the blinker relay below. Connectors at each termination for each filament lead tp extra cost and labor during construction, lower reliability and safety, and more costly repairs. And considering the system's present complexity, increasing its reliability or detectingJailures would be quite difficult. There are two reasons for going into such painful detail describing this example. First, to show that the messi!!st part of many system designs is determining what the controller should do. Writing the software to solve these functions will be comparatively easy. Secondly, to show the many potential failure points in the system. Later we'll see how the peripheral functions and intelligence built into a microcomputer (with a little creativity) can greatly reduce external interconnections and mechanical part count. Design Example #3 demonstrated that symbolic addressing with user-defined bit names makes code and documentation easier to write and maintain .. Accordingly, we'll assign these I 0 pins names for use throughout the program. (The format of this example· will differ somewhat from the others. Segments of the overall program will be presented in sequence as each is described.) INPUT PIN DECLARATIONS: (ALL INPUTS ARE POSITIVE-TRUE LOGIC) BRAKE EMERG HIT PLO HIT PI. I PARK HIT PI.2 LTURN AIT PI.3 R....TURN AIT PI.4 OUTPUT PIN DECLARATIONS' LFRNT HIT P 1.5 R.... FRNT HIT PI.6 LDASH HIT PI.7 R.... DASH HIT P2.0 The Single-chip Solution L:"REAR HIT P2.1 The circuit shown in Figure 16 indicates five input pins to the five input variables~--Ieft-turn select, right-turn select, brake pedal down, emergency SWItch on. and parking lights on. Six output pins turn on the front, rear. and dashboard indicators for each side. The microcomputer implements all logical functions through software, which periodically updates the output signals as time elapses and input conditions change. R.... REAR HIT P2.2 Figure 16. Microcomputer Turn-signal Connections. .,'" 805. :~::B""+H+l>"""""P" UGHlS TURN l",E"!-_+-iH->o-"'-1 SWITCH R1G="''''-----<~....r>O---i .oDE SENSORS RIO.'10... '/1"-"""'...,. .... COH"'QlLER OUTPUT IUPFEQ : BRAKE PEDAL DEPRESSED : EMERGENCY BI.INKER ACTIVATED : PARKING I.IGHTS ON : TURN LEVER DOWN : TURN LEVER UP : FRONT I.EFT-TURN INDICATOR : FRONT RIGHT-TURN INDICATOR : DASHBOARD LEFT-TURN INDICATOR : DASHBOARD RIGHT-TURN INDICATOR : REAR LEFT-TURN INDICATOR : REAR RIGHT-TURN INDICATOR Another key advantage of symbolic addressing will appear further on in the design cycle. The locations of cable connectors, signal conditioning circuitry, voltage regulators, heat sinks, and the like all affect P.c. board layout. It's quite likely that the somewhat arbitrary pin assignment defined early in the software design cycle will prove to be less than optimum: rearranging the I/O pin assignment could well allow a more compact module, or eliminate costly jumpers on a single-sided board. (These considerations apply especially to automotive and other cost-sensitive applications needing single-chip controllers.) Since other architectures mask bytes or use "clever" algorithms to isolate bits by rotating them into the carry, re-routing an input signal (from bit I of port I, for example, to bit 4 of port 3) could require extensive modifications throughout the software. The Boolean Processor's direct bit addressing makes such changes absolutely trivial. The number ofthe port containing the pin is irrelevent, and masks and complex program structures are not needed. Only the il)itial Boolean varia- SIGNAl lULU 01489A-21 10-50 ; INTERRUPT RATE SUBDIVIDER SUB_PIV DATA 20H ; HIGH-FREQUENCY OSCILLATOR BIT HLFREQ BIT SUB_DIV.O ; LOW-FREQUENCY OSCILLATOR BIT LO_FREQ BIT SUB_DlV.7 JMP ORG INIT OOOOH ORG 100H ; PUT TIMER 0 IN MODE I INIT: MOV TMOD.#OOOOOOOIB ; INITIALIZE TIMER REGISTERS MOV TLO.#O MOV THO.#-16 ; SUBDIVIDE INTERRUPT RATE BY 244 MOV SUB_DIV.#244 ; ENABLE TIMER INTERRUPTS SETB ETO : GLOBALLY ENABLE ALL INTERRUPTS SETB EA ; START TIMER SETB TRO : (CONTINUE WITH BACKGROUND PROGRAM) : PUT TIMER 0 IN MODE I : INITIALIZE TIMER REGISTERS fast to modulate the parking lights; bit 7 will be "tuned "to approximately I H7 for the turn- and emergencyindicator blinking rate. Loading THO with -16 will cause an interrupt after 4.096 msec. The interrupt service routine reloads the high-order byte of timer 0 for the next interval. saves the CPU registers likely to be affected on the stack. and then decrements SUB_DIY. Loading SUB_DIV. with 244 initially and each. time it decrements to zero will produce a 0.999 second period for the highest-order bit. ORG . MOV PUSH PUSH PUSH DJNZ MOV The code to sample inputs. perform calculations. and update outputs-the real "meat" of the signal controller algorithm-may be performed either as part of the interrupt service routine or as part of a background program loop. The only concern is that it must be executed at least several dozen times per second to prevent parking light flickering. We will assume the former case. and insert the code into the timer 0 service routine. First. notice from the logic diagram (Figure 15) that the subterm (PARK' H_FREQ). asserted when the parking lights are to be on dimly. figures into four of the six output functions. Accordingly. we will first compute that term and save it in a temporary location named "DIM". The PSW contains two general purpose flags: FO. which corresponds to the 8048 flag of the same name. and PSW.I. Since The PSW has been saved and will be restored to its previous state after servicing the interrupt. we can use either bit for temporary storage. : SUBDIVIDE INTERRUPT RATE BY 244 : ENABLE TIMER INTERRUPTS : GLOBALLY ENABLE ALL INTERRUPTS :STARTTIMER ble declarations need to be changed: AS M51 automatically adjusts all addresses and symbolic references to the reassigned variables. The user is assured that no additional debugging or software verification will be required. Timer 0 (one of the two on-chip timer/ counters) replaces the thermo-mechanical blin~er relay in the dashboard controller. During system initialization it is configured as a timer in mode I by setting the least significant bit of the timer mode register (TMOD). In this configuration the low-order byte (TLO) is incremented every machine cycle. overflowing and incrementing the high-order byte (THO) every 256 ~Sec. Timer interrupt 0 is enabled so that a hardware interrupt will occur each time THO overflows. (For details of the numerous timer operating modes see the MCS-51'· User's Manual.) An eight-bit variable in the bit-addressable RAM array will be needed to further subdivide the interrupts via software. The lowest-order bit ofthis counter toggles very OOOBH : TIMER 0 SERVICE VECTOR THO.#-16 PSW ACC B SUB_DIV.TOSERV SUB_DIV.#244 DIM BIT MOV C.PARK AN!. HLFREQ MOV DlM.C PSW.I : DECLARE TEMP. STORAGE FLAG : GATE PARKING LIGHT SWITCH : WITH HIGH FREQUENCY SIGNA!. : AND SAVE IN TEMP. VARIABLE. This simple three-line section of code illustrates a remarkable point. The software indicates in very abstract terms exactly what function is being performed. independeni of 10-51 01489A-22 the hardware configuration. The fact that these three bits include an input pin, a bit within a program variable, and a software flag in the PSW is totally invisible to the programmer. MOV R_DASH.C MOV mc ORL CDIM Now generate and output the dashboard left turn signal. MOV R_FRNT.C MOV CLTURN ORI. CEMERG MOV LDASH.C : SET CARRY IF TURN : OR EMERGENCY SELECTED. :GATE IN I HZ SIGNAL : AND OUTPUT TO DASHBOARD. MOV CBRAKE ANI. C R_TURN ORL CFO ORL CDIM To generate the left front turn signal we only need to add the parking light function in FO. But notice that the function in the carry will also be needed for the rear signal. We can save effort later by saving its current state in FO. MOV FO.C ORL CDIM MOV LFRNT.C : SAVE FUNCTION SO FAR. : ADD IN PARKING LIGHT FU!\:CTION : A"D OUTPUT TO TURN SIG:\,AL. MOV R_REAR.C (The perceptive reader may notice that simply rearranging the steps could eliminate one instruction from each sequence.) Now that all six bulbs are in the proper states, we can return from the interrupt routine. and the program is finished. ThiS code essentially needs to reverse the status saving steps at the beginning of the inte'rrupt. Finally. the rear left turn signal should also be on when the brake pedal is depressed, provided a left turn is not In progress: MOV CBRAKE ANI. C LTURN ORL CFO ORI. CDIM MOV LREAR.C : GATE BRAKE PEDAL SWITCH : WITH TURN LEVER. : INCI.UDE TEMP. VARIABLE FROM DASH : AND PARKI!\:G LIGHT FU!' . : SET P2.2 =(12) (23) (34) ( 45) ( 5/i) MOV CI2 1NL ANI. ANI. A:,\I. : REI.OAD SCAN LINE MASK ACC7.SCAN : LOOP UNTIL ALI. EIGHT COLUMNS READ. RET 03 C34 C 45 C 5/i MOV P2.2,C Intermediate Variah/es. The examination of a typical relay-logic ladder diagram will show that many of the rungs control not outputs but rather relays whose contacts figu're into the computation of other functions. In effect, these relays indicate the state of intermediate variables of a computation. The MCS-S/'M solution can use any directly addressable bit for the storage of such intermediate variables. Even when all 128 bits of the RAM array are dedicated (to input bit maps in this example), the accumulator, 'PSW, and B register provide 18 additional flags for intermediate variables. For example, suppose switches 0 through 3 control a safety interlock system. Closing any ofthem should deactivate certain outputs. Figure 22 is a ladder diagram for this situation. The interlock function could be'recomputed for every output affected, or it may be computed once and saved (as implied by the diagram). As the program proceeds this bit can qualify each output. Exaniple 5. , outputs. Incorpdr~ting Override signal into actuator CALL INPUT~'iCAN MOV CO ORL CI ORL C2 ORL C3 MOV FO~C Figure 21. Flowchart for reading In sensor matrix. 01489A·28 1()'·57 COMPUTE FUNCTION 0 Example 6: Simulating a latchinltrelay. :L~SET ANI. C. FO MOY PI.O.C ·SET FI.AG.O IF C=I ORt C.FO . MOY -FO.C LSET: C01v1PlJTE FUNCTION I .ANI. C. FO MOY PI.I.C :LRSET RESET FLAG 0 IFC=I LRSET: CPS C, ANI. c.PO MOY FO.C COMPUTE FUNCTION. 2 . ANI. .c. FO MOY PI.2.C : to an input signal until it has been present (or absent) for some 'predefined time. For example. a ballast or load resisior may be switched in series with a D.C. motor when it is first turned on. and shunted from the circuit after one second. This sort, of time delay may be simulated by an 'interrupt routine driven by one of the two 8051 timer! counters .. The procedure followed by the routine depends heavily on the details of tHe'exa'ct function needed: timeouts or time delays .withresettable or non-resettable inputs are possible. If the interrupt routine is executed every 10 milliseconds the code in Example 7 will clear an intermediate variable set by the background program after it has been active for two seconds. "0" "2" "3" t Time Delay R;"ars. A time delay relay does not respond I I I Example 7. Code to clear USRFLG aftera fixed time delay . .INB USR~FLG.NXTTST D.lNZ DI.A Y_C'OUNT.NXTTST CLR USR-FLG MOY DI.A Y_COUNT.#200 NXTTST: ... Figure 22. Ladder diagram 'or output override circuitry. Latching Relays. A latching relay can be forced into either the ON or OFF state by two corresponding input signals. wl:1ere it will remain until forced ontp the opposite stateanalogous to a TTL Setl Reset flip-flop. The relay is used as an intermediate variable for other calculations. In the previous example, the emergency conditiom could be remembered and remain active until an "emergency cleared" button is pressed. Any flag or addressable bit may repre~ent a l!ltching relay with a few lines of code (see Example 6). Serial Interface to Remote Processor. When it detects emergency conditions repr'esented by certain input combinations (such as the earlier Ell]ergency Override). the controller could shutdqwn the machine immediately and/ or alert the host processor via the serial port. Code bytes indicating the nature of the problem could be transmitted to a central computer. In fact. at 17.000 bytes-persecond. the entire contents of both bit maps could be sent · to the host processor for further analysis in less than a millisecond! If the host decides that conditions warrant, it could alert other remote processors in the system that a problem exists and specify:which snut-down sequence each should initiate. For more information on using the serial port; consult the MCS-SI'· User's Manual. Response Timing. One difference between relay and programmed industrial · controllers (when each is considered as a "black box") i~ · their respective reaction times t~ input changes. As reflected" by a ladder. diagram, relay systems' contaIn a 01489A-29 . to-$8 large number of "rungs" operating in parallel. A change in input conditions will begin propagating through the system immediately. possibly affecting the output state within milliseconds. : EXCLUSIVE-OR FUNCTION IMPOSEDON CARRY : USING FO IS INPUT VARIABI.E. XOR_FO: JNB FO.XORCNT : (".IB" FOR X-NOR) CPI. C XORCNT: ... Software. on the other hand. operates sequentially. A change in input states will not be detected until the next time an input scan is performed, and will not affect the outputs until that section of the program is reached. For that reason the raw speed of computing the logical functions is of extreme importance. XCH. Thecontents ofth'ecarryand some other bit may be exchanged (switched) by using the accumulator a& temporary storage. Bits can be moved into and out of the accumulator simultaneously using the Rotate-through-carry instructions. though this would alter the accumulator data. H~re the Boolean processor pays off. Eve~1' instruction 'mentioned in this Note completes in one or two microseconds-the minimum instruction execution time for ma'ny other microcontrollers! A ladder diagram containing a hundred rungs. with an average of four contacts per rung can be replaced by approximately five hundred lines of software. A complete pass through the entire matrix scanning routine and all computations would require about a millisecond: less'than the time it takes for most relays to change state. : EXCHANGE CARRY WITH USRPLG XCHBIT: RLC A MOV C.USR_FLG RRC A MOV USR_FLG.C RLC A Extended Bit Addressing. The 8051 can directly address 144 general-purpose bits for all instructions in figure 3.b. Similar operations'may be extended to any bit anywhere on the chip with some loss of efficiency. A programmed controller which simulates each Boolean function with a subroutine would be less efficient by at least an order of magnitude. Extra software is needed for the simulation routines. and each step takes longer to execute for three reasons: several byte-wide logical instructions are executed per user program step (rather than one Boolean operation):_most of those instructions take longe'r to execute with microprocessors perfor,ming multiple off-chip accesses: and calling and returning from the various subroutines requires overhead for stack operations. The logical operations AND. OR. and Exclusive-OR are performed on byte variables using six different addressing modes. one of which lets the source be an immediate mask. and the destination any directly addressable byte. Any bit may thus be set. cleared. or complemented with a three-byte. two-cycle instruction if the mask has all bits but one set or cleared. Byte variables. registers. and indirectly addressed RA M may be moved to a bit addressable register (usually the accumulator) in one instruction. Once transferred. the bits may be tested with a conditional jump. allowing any bit to be polled in 3 microseconds-still much faster than most architectures-or used for logical calculations. (This technique can also simulate additional bit addressing modes with byte operations.) In fact: the speed of the Boolean Processor solution is likely to be much faster than the system requires. The CPU might use the time left over to compute feedback parameters. collect and analY7e execution statistics. perform system diagnostics. and so forth. Additional functions and uses. Parill' ofbl'tes or bits. The parity of the current accumu- With the building-block basics mentioned above many more operations may be synthesized by short instruction sequences. Exclusive-OR. There are no common mechanical devices or relays analogous to the Exclusive-OR operation. so this instruction was omitted from the Boolean Processor. However. the Exclusive-OR or Exclusive-NOR operation may be performed in two instructions by conditionally complementing the carry or a Boolean variable based on the state of any other testable bit. lato~ c~nients is always available'in the PSW. from whence it may be moved to the carry and further processed. Error-correcting Hamming codes and similar applications require computing parity on groups of isolated bits. This can be done by conditionally complementing the carry flag based on those bits or by gathering the bits into the accumulator (as shown in the DES example) and then testing the parallel parity flag. 10-59 Multiple byte shift and CRC codes. Though the 8051 serial port can accommodate eight- or nine-bit data transmissions, some protocols involve much longer bit streams. The algorithms presented in Design Example 2 can be extended quite readjly to 16 or more bits by using multi-byte input and output buffers. Many mass data storage peripherals and serial communications protocols include Cyclic Redundancy (eRC) codes to verify data integrity. The function is generally computed serially by hardware using shift registers and Exclusive-OR gates. but it can be done with software. As each bit is received into the carry. appropriate bits in the multi-byte data buffer are conditionally complemented based on the incoming data bit. When finished. the CRC register contents may be checked for 7ero by ~Ring the two bytes In the accumulator. 4. SUMMARY A truly unique facet of the Intel MCS-5I T• microcomputer family design is the collection offeature, optimi7ed for the one-bit operations so often de,ired in real-world. real-time control applications. Included are 17 special instructions. a Boolean accumulator. implicit and direct addre"ing modes. program and mass data storage. and many I 0 options. These are the world's fir,t single-chip microcomputers able to efficiently manipulate. operate on. and transfer either bytes or indi~idual bits as dat'!. This Application Note has detailed the informat.ion needed by a microcomputer system designer to make full use of these capabilities. Five design examples Were useq to contrast the solutions allowed by the 8051 and those required by previous architectures. Depending on the individual application. the 8051 solution will be eas·ier to design. more reliable to implement. debug .. and verify. use less program memory. and run up to a.n order of magnitude faster than the same function imp'lemented on previous digital computer architectures. Combining byte- and bit-handling capabilities in a single micro,omputer has a strong synergistic ,effect: the power of the result exceeds the power of byte- and bit-processors laboring individually. Virtually all user applications will benefit in some ways from this duality. Data intemive applications will use bit afJdressing for test pin monitori,ng or program control flags: control applications will u,e byte manipUlation for parallel I 0 expansion or arithmetic calculations. . It is hoped that these de,ign examples give the reader an appreciation of these unique features and suggest ways to exploit them in ni, or her own application. ' 01489A-31 10-60 r~ ISIS-II MCS-51 MACRO ASSEMBLER Vl.0 OB'JECT MODULE PLACED IN FO AP70 HEX ASSEMBLER INVOKED BY: : 1'1: asm51 ap70 src date(328) LOC OBJ LINE SOURCE ..... I? ~ 0090 0091 0092 0093 00'l'4 0095 0096 0097 OOAO OOAl 00A2 00A3 0020 0000 0007 00D1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 +1 ~i ID ~ ,..M $XREF TITLE(AP'-70 APPENDIX) t***************************************************** *** THE FOLLOWING PROGRAM USES THE BOOLEAN INSTRUCTION SET OF THE INTEL e051 MICROCOMPUTER TO PERFORM A NUMBER OF AUTOMOTIVE DASHBOARD CONTROL FUNCTIONS RELATING TO TURN SIGNAL CONTROL, EMERGENCY BLINKERS, BRAKE LIGHT CONTROL, AND PARKING LIGHT OPERATION. o THE ALGORITHMS AND HARDWARE ARE DESCRIBED IN DESIGN EXAMPLE #4 OF INTEL APPLICATION NOTE AP-70, "USING THE INTEL MCS-51 In this design N = 80, R = 20, D = 7, L = 270, and F = 60Hz. Plugging in the numbers results in a dot clock frequency of I 1. 34MHz. The retrace number may vary on each design because it is used to set the left and right hand margins on the CRT. The number of dots per character is chosen by the designer to meet the system needs. In this design, a 5 x 7 dot matrix and 2 blank dots between each character (see Figure 2.1.1) makes D equal to 5+2=7. where H is the number of horizontal lines per character, Z is the number of character lines per frame, V is the number of horizontal line times during the vertical retrace In this design H is equal to the 7 horizontal dots per character plus 3 blank dots between each row which adds up to 10. Also 25 lines of characters are displayed, so Z = 25. The vertical retrace time is variable to set the top and bottom margins on the CRT and in this design is equal to 20. Plugging in the numbers gives L=270 lines per frame. 2.2 Keyboard A keyboard is the common way a human enters commands and data to a computer. A keyboard consists of a matrix of switches that are scanned every couple of milliseconds by a keyboard controller to determine if one of the keys has been pressed. Since the keyboard is made up of mechanical switches that tend to bounce or "make and break" contact everytime they are pressed, debouncing of 'the switches must also be a function of the keyboard controller. There are dedicated keyboard controllers available that do everything from scanning the keyboard, debouncing the keys, decoding the ASCII code for that key closure to flagging the CPU that a valid key has been depressed. The keyboard controller may present the information to the CPU in parallel form or in a serial data stream. This Application Note integrates the function of the keyboard controller into the 8051 which is also the terminal controller. Provisions have been made to interface the 8051 to a keyboard that uses a dedicated keyboard controller. The 8051 can accept data from the keyboard controller in either parallel or serial format. 2.3 Serial Communications Communication between a host computer and the CRT terminal can be in either parallel or serial data format. Parallel data transmission is needed in high end graphic terminals where great amounts of information must be transferred. Figure 2.1.1 5 x 7 Dot Matrix One can rarely type faster than 120 words per minute, which corresponds to 12 characters per second or I character per 83 milliseconds. The utilization of a parallel port cannot justify the cost associated with the drivers and the amount of wire needed to perform this transmission. Full duplex serial data transmission requires 3 wires and two 10-67 AP-223 ,----------- ' DR., IK HORIZ?"TAL AP-223 Appendix 7.2 Dot Timing CHARACTI!R COUNTER STATE h----~~ll1n.------+l 8Uno DOT CLOCK 148113 COUNTER OUTPUTS QC CHAAACTI!R CLOCK CHARACTER CLOCK~TO 8211 8211 CHARACTI!R~~----~I,------~~------~----~~----~~--------~--~~----~----- FIRST CHAAACTI!R SECOND CHARACTER THIRD CHAAACTI!R OUTPUT (cco.cce) RE~~R~----------------~--------~.Ir------Fl-RST--C-H-'-D-'C-TE~R-V-'DE--O-OUT------il,--S-ECON---D-----·-D·-CTE--R~VI~D-O--OU--~~~ -;________________~--------~'I~----__-------RA--_r----------_f ~nAnA ~ ,: 1~"'0pF+-_ 1 E T lK vtOEOOUT 330 330 D A T A +V lK HORIZONTAL DRIVE B U S VERTICAL DRIVE 112 74123 112 74123 CRT MONITOR AP·223 Appendix 7.3 CRT System Timing r.=1 ' m. H~C 1 -=l-DiJiJi!f1i.K1i1 1 3. 1 4 1• . . • . . 1 80 1 I HR,TC I · HRTC (8278) ...... I HATC 20 . 1 I I ~~~r~+4 CHAR CODE (8276) C~~:a~ -+-t-+~t--t-t--+-t--+---+-t---1---t-+---t"if-t---t, :; T_. -, LINE SHIFT REGISTER J \.1-+-1-+-1--+-+-+-+--+-+-I-+-I--!--...... -+-.j....-+---+--f---.j....-+-+--+-ff+--+ LOAD LOAD LOAD CHAR VIDEO FOR BOTH CHAR 10-87 AP·223 Appendix 7.4 Escape/Control/Display Character Summary CONTROL CHARACTERS 000 BIT 001 NUL 0001 . SOH 010 011 100 101 SP • @ P I I A Q A Q 2 B R B R = 3 C S C S -..C $ 4 0 T 0 T "--0 % 5 E U E U & 6 F V F V 7 G W G W ( 8 H X H X ) 9 I Y I Y : J Z J Z' ; K [ K P @ IJOIJO ESCAPE SEQUENCE OISPLAYABLE CHARACTER OLE 110 111 010 100 011 + + Ii OCI B 0010 STX R OC2 C 0011 ETX S OC3 0 0100 EOT DC4 ENQ NAK 0111 1000 ... • ACK .'ll SYN ETB LF 1011 VT 1100 FF 1101 ,Q'I, CAN H Y EM Z SUB EOS I EL J I K .' HOME x J 1010 E W 1\ HT CLR V I 1001 D9 + L FS SO NOTE: SI - = L M I M N /I N 0 - 0 \ RS 0 1111 L GS N 1110 B U F 0110 A T E 0101 Q 101 P us - I ? 811_ block. - lunctlonolermlnol will react to. 0tI1.,. can bo _ _ but are ignored upon receipt. 10-88 110 111 AP·223 Appendix 7.5 Character Generator As previously mentioned, the character generator used in this terminal is a 2716 EPROM. A IK by 8 device would have' been sufficient since a 'I 28 character 5 by 7 dot matrix only requires 8K of memory. A custom character set could have been stored in the second 1K bytes of the 2716. Any of the free 110 pins on the 8051 could have been used to switch between the character sets. The three low-order line count outputs (LCO--LC2) from the 8276 are connected to the three low-order address lines of the character generator. The CCO--CC6 output lines are connected to the A3-A9 lines of the charac~er generator. The output of the character generator is loaded into the shift register. The serial output of the shift register is the video output to the CRT. Let's assume that the letter "E" is to be displayed. The ASCII code for '.' E" (45H) is presented to the address lines A2-A9 of the character generator. The scan lines (LCO--LC2) will now count from 0 to seven to form the character as shown in Figure 7.5.0. The same procedure is used to form all 128 possible characters. For reference Appendix 7.6 contains the HEX dump of the character generator used in this terminal. 45H = 01000101 Address to Prom = 01000101 = 228H - 22FH Depending on state of Scan lines. Character generator output Rom Address 228H 229H 22AH 22BH 22CH 22DH 22EH 22FH Bit Output" Rom Hex Output 3E 0 1234567 .A.AA.A 02 02 OE 02 02 3E 00 Bits 0, 6 and 7 are not used. 'note bit output is backward from convention. Figure 7.5.0 CharaCter Generator 10-89 AP-223 10·90 Ap·223 Appendix 7.7 Composite Video In this design it was assumed that the CRT monitor required a separate horizontal drive, vertical drive, and video input. Many monitors require a composite video signal. The schematic shown in Figure 7.7.0 illustrate how to generate a composite video from the output of the 8276. The dual one-shots are used to provide a small delay and the proper horizontal and vertical pulse to the composite video monitor. The delay introduced in the horizontal and vertical timing is used to center the display. The 7486 is used to mix the vertical and horizontal retrace. Q1 mix the'video and retrace signals along with .providing the proper D.C. levels. 4.7K SOK SOK 10K 74LS221 74LS221 HRTC 2 2Q S S 3 3 2Q B, A, SV SV B, 2 VRTC 2.2K 2.2K 470pF 14 lS 4 CX CX - RXCX- 6 .11'F .001/LF .OS 7 10 6800 1KO +S - - - - . . J \ I V I r -... VIDEO 1KO >-___-"''VV-_..J lS00 Figure 7.7.0 Composite Video 10-91 COMPOSITE VIDEO OUT AP-223 Appendix 7.8 Software Documentation /****.***********************************~.*.'!t**.********.*.*******.***.******* ••••• **********.**** •••• ******* •• ****************** •• ******************.******* ••••••• *.***** *--••• *.****. ******* OOF'lWllRE IJOClH;NI'ATIl"N FOR TIlE 8051 TEIfIDIAL CXNl'9JILER APFLICATICN Wl'E ******* *****.* *.***** •• *.*.********.********** •• ********************* ••• **************************** *********** •• **.********************************.***** .**.*~.**********.*.***** MEM)R'! MAP ASSOCIATal WITH FERJPHERI\L DEVICES (USING MJIIX) : 8051 8051 6276 8276 8276 WR lIND READ DISPLAY RAMADDRESS 10000 oro 17CFH WR DISPLAY RAM TO TIlE 8276- ADDRESS 180011 TO lFCP1I CXMWm ADDRESSAOORESS OOOlH PARl\MEl'ER AOORESsAOORESS 000011 srATUS RmISl'ERAOORESS OOOlH MEM)R'{ MAP FOR READIm TIlE KEi~ (USING M:M:) : AOORESS 10FF11 TO 17FF11 /******************** srARl' MAIN PIOGRNot /* BEGIN Irl Pl1l'1'ING TIlE AOCII CODE FOR ********-*******'*******··***1 BLAM( IN TIlE DISPLAY RAM*/ INIT: {~'ILL 2000 UX!ATICNS IN TIlE DISPLAY RAM WITH SPl\CES (AOCII 20H)} /* I INITIALIZE FOINl'ERS, RAM BITS, El'C. */ INITIALIZE FOlNl'ERS lIND FLAGS} INITIALIZE orop OF TIlE em' 'DISPLAY "LINEO"=1800ll} INITIALIZE 8276 BUFFER FOINl'ER "RASTER" =180OH} INITIALIZE DISPLAY$RAM$FOlNTER=OOOOO} /* INITIALIZE TIlE 8276 */ I RESEll' TIlE 8276} INITIALIZE 8276 oro 80 CHARI\CTElIIKM INITIALIZE 8276 oro 25 lOiS PER I1'R!\ME INITIALIZE 8276 oro 10 LINES PER KM} INITIALIZE 8276 oro ~-BLIR i BEl'WIiDI FIRSl' CIIlIRl\CTER lIND THE SIDH) *1 DOl I*SIDJtID ~ TRlIN!MTl lCIEAR CHl\RIlCl'ER *1 TRlIN!MT$CXllNl'} ENDI END; ELSE 001 , {TURN THE aJRmR Cl'I IXJRnr; THE III1RYREPFATmcrICl'I} 1* 2 VERl' FlWIES BEl'WIiDI 311) 'ro Nl'H 1* 3R> THlOJGH tmI CIIlIRl\CTER. *1 IF TRlIN!MT$TOOOIE = 1 '!'HEN CALL TRlIN!MTl {CXMPLIMiNr TRlIN!MT$'J,'OOO[B} CHl\RIlCl'ER "I ENDI ENDI 1* PIO:EIlJRE TRlINl'MlT- CN:E THE IKlSl' VE 'mE REMAINING CXNl'I!Nl'S OF 'mE FIFO UP TO 'mE BmINNIM3 OF TIlE FIFO} ENABLE SERIAL RlRl' INTERRlPl'} SET TIlE VALID$RECEPTICN FLAG} IF {'mE FIFU IS EMPlY} TIIEN {CLEAR 'mE 'SERIAL$INT FLAG AND RIilJ.Ulti} IF {'mE NEXT CIIARl\CTER IS AN "ESC' COlE } TIIEN DO: {IDCI( AT TIlE CHARl\CTER IN TIlE FIFO AFl'ER '!liE ESC COlE AND CALL TIlE CX>RRIim' SUBI01l'INE} b.u. UP$aJRSER; CALL· OOWN$CIJRSER; CALL RIGHl'$CIJRSER; CALL LEFT$aJRSER; CALL CIEAR$SCRJ;2;N; CALL MJV$ClJRSER; . I CALL ERASE$~$ VE 'mE REMAINING CXNl'I!Nl'S OF 'mE FIFO UP TO 'mE BmINNIM:; OF TIlE FIFO} ENABLE 'mE SERIAL 00Rl' INTERRlPl'} SET TIlE "VALID$RECEPTICN" FLAG} IF {'mE FIFU IS EMPlY} TIIEN {ClEAR 'mE SERIAL$INT FLAG AND RIilJ.Ulti} END; 10-95 , AP:'223 , IF {'DIB NEXT CHI\RI\C'l.'ER IS A CXlNl'OOL CXlIE} THEN , ' 00, ' {CALL 'DIB RIGill'SUBR:Vl'INE} /* en:. H */ /* en:. J */ /* CTL L */ /* en:. M */ I DISABlE 'DIB SERIAL iiOR1' INl'ERRlPl'} K)VE'DIB RD4AINING CDfRNl'S OF 'DIB PIro UP TO 'DIB BmINNIR; OF 'DIB FU-o} ENABLE 'DIB SERIAL PORi' IRl'ERHJPr} SBl' 'DIB "VAt.ID$ma:PrICII" PLI'IG} BllDI IP {ID VALID CXlIE WAS RB:EIVD> ("VAt.ID$la::EP'l'ICII" IS O)} THEN 'l'HlOf 'DIB aww:::'l'ER oor lIND ItJUE 'DIB RI!JoIAIN[lI; CDfRNl'S OF 'DIB PIro} UP TO _ 8IilGII«'IING} 1 IF {'DIB PIro IS SIPlY} THEN {CIBM /* TIm SBRIAL$INT PLI'IG lIND BB.l'IJaI} PRlCEilJRE DISPLAY: THIS PKlCEWRE WILL TAKE 'DIB Bl1TE IN RAM IABELED REX:BIVE lIND P!1l' IT Imo THE DISPLAY Rl\M. */ DISPLIIY: {P!1l' IIflO THE DISPLAY RAM UJC:M'ICII 1'OINl'm TO Bl1 "DISPLAY$RI\M$POINrER 'DIB CDfRNl'S OF RB:EIVE} , IP ITHE BIID OF 'DIB DISPLI\Y MlM)RC HIlS ~ RPACHm\ THEN RESEr "DISPLIIY$RI\M$POINrER" TO THE BmINNIR; OF THE RAM} ELSE {no&IIiNl' "DISPLAY$lWI$POIN'l'BR"} IF {THE C1JRSER IS IN THE LA9l' ~ OF THE CRl' DISPLIIY} THEN 00, {HlYB THE aJJISER JWl( ro THE BmINNIR;OF THE LINE} IF t'DIB NEW DISPLAY Rl\M :u:oaICli HAS A BIID-OP-LINE CHARI'Cl'ER IN IT} THEN CALL PILLI IP {TSE C1JRSER IS CII THE LA9l' LINE OF 'DIB CRl' DISPLAY} THEN CALL SCKlLL, ELSE' {1tJUE THE , I TIlE OJRSER ON} CALL IJJi\D$CXJRSER; END; IF !TIIE DISPlAY$Rl\M$POINTER IS ON TIlE LAST LINE IN "TIlE DISPlAY Rl\M} THEN MJI/E TIlE DISPLAY$Rl\M$POINTER ro TIlE FIRSI' LINE IN TIlE DISPlAY Rl\M} ElSE {MJI/E TIlE DISPLAY$Rl\M$POINTER TO TIlE NEXT LINE IN, TIlE DISPlAY Rl\M} IF {TIlE FIRSI' CHARl'ICTER IN TIlE NEJi LINE CXlNl'AINS AN END-OF-LINE CHARl'ICTER } THEN CALL FILL; /* */ SCJOLL: ~~vkrICAL REl'RltCE INl'ERRlPr} IF {TIlE FIRSI' LINE OF TIlE CRl' CXlNl'AINS TIlE LAST LINE OF TIlE DISPlAY MlM)R{} THEN { MJI/E TIlE POINTER "LINEO· ro TIlE BJ;X;I:NNIN;; OF TIlE DISPlAY MlM)R{} " ElSE (MJI/E "LINEO· ro TIlE NEXT LINE IN TIlE DISPlAY MlM)R{ I {ENABIE VERl'ICAL REll'IW::E INl'ERRJPr} /* */ 10-97 AP·223 PR:lCE!lJRE IJ:ME: 'ffiIS PIO:EIXJRE M)VES '1'HE aJRSER TO '1'HE 0,0 POSITICII ,,/ /" IJ:ME: ! foIJIIE TIlE aJRSER ~ITIClii TO TIlE UPPER LEFl' Hl\ND CORNER OF '1'HE eRr} TUm '1'HE ClJRSER CIiI t CALL LOI\D$aJllSER1 , {foIJIIE '1'HE DISPlAY$Rl\M$POINTER TO '1'HE OORRB:'r I£CATIClii IN '1'HE DISPlAY Rl\M} END IDIEI /* PRlCEIIJRE ERASE FR:M ClJRSER TO END OF ~: ,,/ ERASE$FR:M$aJRSE~$END$(F$SCREE}I: , CALL BLINEI /* . ERASE aJRRI!Nl' LINE ,,/ oor CIiI TIlE LASl' LiNE OF TIlE eRr DISPlAY} 'l'IIEN TIlE NEKT LINE,PUT lIN END-OJi'-LINE CIIAR1C1'ER (OFlH) } IN '1'HE DISPlAY Rl\M I£CATICliiS THAT OORRESEQIl) TO '1'HE I!Iil;INNIW OF '1'HE CRr DISPlAY LINES tNl'IL TIlE 00l'l'CM OF '1'HE eRr 9:REEN lIAS BElEN REI\CHED IF {'1'HE aJRSER IS srARl'ING wrm END" /"PRX:EIlJRE MJV$CURSER: THIS PIO:EIXJRE IS USED IN CCIiIJIJICl'IOO WITH I«)RDSl'ARIF A ESC F IS REX:EIVED FlO! '1'HE HOsr CXMF!1IER, TIlE TElMINAL CCNl'roLLER WILL READ '1'HE, NEKT 'J:W) If{TE TO DEl'EIMINE WHERE TO mIlE TIlE aJRSER. '1'HE FIRSI' mTE IS TIlE R:M INFOIt1ATIClii roI.IaiED m THE OOUMI INFOIt1ATIOO */ M:JV$CURSER: l WAIT UNl'IL '1'HE FIro lIAS REX:EIVED '1'HE NEKT 'J:W) CIIAR!\CTERS} foIJIIE TIlE aJRSER TO TIlE I£CATIClii SPECIFIED IN '1'HE ES:APE ~} foIJIIE '1'HE DISPlAY $R1IM$POINTER TO TIlE CX>RI!IiX:'l' I£CATICIiI} IF TIlE FIRSI' CIIARl\CTER IN TIlE ~ LINE lIAS lIN EN:H:lF-LINE CALLF~I ENDI I DISABLE '1'HE SERIAL PORr INl'ERRJPl'} foIJIIE '1'HE REMAIN CCNl'ENl'S OF TIlE FI, ro UP oa::REMENl' '1'HE FIro m 'J:W)} ENABLE '1'HE SERIAL PORI' INl'ERRJPl'} 'J:W) CIIARl\CTER} THEN I£CATICliiS IN MHlRl} END I«>V$ClJRSERI /" PIO:EIXJRE LEFl' aJRSER: THIS PIO:EIXJRE M)VES '1'HE aJRSER LEFl' CNE roUMI m SUBl'R!ICTING 1 OF '1'HE aJRSER COUIfi Rl\M I£CATICII 'l'IIEN CALL LON> aJRSER */ LEFl'$aJllSER: IF {'!HE ClJRSER IS oor IN '1'HE FIRSI' I£CATIClii OF A LINE} 'l'IIEN . DOl {foIJIIE TIlE aJRSER LEFl' m CNE I£CATICII} {TURN '1'HE aJRSER CIiI} CALL LOI\D$aJRSERI {oa::REMENl' '!HE DISPlAY$Rl\M$POINTER m CNE} HolDI END LEFl'$aJRSER, 10·98 AP·223 /. If{ PRlCEIXJRE RIGRl' CURSER: THIS PRlCEIXJRE MJIIES TIlE CURSER RIGRl' CNE COLl.tolN AIDING 1 oro TIlE CURSER COIDlN RAM LOCATICN THEN CALL I£lN) CURSER */ RIGHl'$CURSER: IF {TIlE CURSER IS NOr IN TIlE LAS!' RlSITICN OF TIlE eRr LINE} THEN 00; {MJIIE TIlE OJRSER RIGRl' If{ CNE LOCATICN} {~ TIlE OJRSER CN} CALL I£lI\D$CURSER; {INCREMIiNr TIlE DISPLAY$RIIM$FOINTER If{ CNE} END; END RIGHl'$OJRSER; /* If{ ,PRlCEIXJRE UP OJRSER: THIS PRJC:E:IXJRi! MJ\IES TIlE CURSER UP CNE lOi ro 1m: CURSER lOi RAM LOCATICN TIIEN CALL I£lN) CURSER */ SUBl'Rl\C'l'IN3 1 UP$CURSER: IF {TIlE CURSER IS NOr CN TIlE FIRS'!' LINE OF TIlE CRr DISPLAY}TIIEN 00; . {MJIIE TIlE OJRSER UP CtIE LINE} {~ 00 TIlE OJRSER} CALL I£lN)$CURSER; ITIIE IF DISPLAY$RIIM$FOINTER IS IN TIlE FIRBl' LINE OF DISPLAY MlHlRi} THEN MJIIE TIlE DISPLAY$RJ\M$FOINTER ro TIlE LAS!' LINE OF DISPLAY MlHlRi} ELSE {MJIIE TIlE DI5PLAY$RIIM$FOINTER UP CtIE LINE IN DISPLAY MlM>Ri} IF {TIlE FIRS'!' LOCATICN CALL FILL; /* If{ oF TIlE Ni;w LINE aE'AINS AN mIH>F-LINE CHARI\C'l'ER} TIIEN PRlCEIXJRE lXJWN OJRSER: THIS PRlCEIXJRE MJIIES TIlE OJRSER lXJWN CNE lOi AIDING 1 oro TIlE OJRSER lOi RAM LOCATICN TIIEN CALL I£lN) CURSER */ lXJWN$CURSER: IF {TIlE CURSER IS NOr CN TIlE LAS!' 'LINE OF TIlE CRr DISPLAY} THEN 00; {'!URN TIlE OJRSER OO} {MJIIE TIlE CURSER ro TIlE NEKT LINE} CALL LOAD$OJRSER; IF ITIIE DI5PIAY$RJ\M$FOINTER IS oor CN TIlE LAS!' LINE OF TIlE DISPLAY MlHlRi} K>VE TIlE DISPLAY$RIIM$FOINTER ELSE {K>VE TIlE DISPLAY$lwt$FOINTER ro TIlE ro TIlE NEKT LINE IN TIlE DISPLAY MlM>Ri} FIRS'!' LINE IN TIlE DISPLAY MlHlRi} IF {TIlE FIRS'!' CHARI\C'l'ER IN TIlE Nat LINE IS AN mIH>F-LINE CHARI\C'l'ER} TIIEN CALL FILL; 10-99 TIIEN /* */ CARRIl\GE$REl.'!lm : l MJIIE TIlE DISPLAY$RI\M$POIm'ER 'ID TIlE Bm~ OF TIlE CURREN!' LINE IN 'mf: DISPLAY MEK>R!} MJIIE TIlE CURSER 'ID TIlE BmINNIN3 OF TIlE CURRliNr LINE OF TIlE eRl' DISPLI\Y} 'rum TIlE CURSER a.} CALL I.OI\D$CURSER; END CARRIAGE$REl.'!lm; /* PRX:EWRE LON> CURSER. LON> CURSER TAKES TIlE VAUJE HELD IN Rl\M AND LCW>S IT nm:> TIlE 8276 CURSER RIDISTER. */ I.OI\D$CURSER: PRX:EWREI IF {TIlE CURSER IS a.} 'l'HEN {MJIIE TIlE CURSER Bl'.CK CNro TIlE CRl' DISPLI\Y} DISABLE B.lFFER INl'ERHlPr} {WRITE 'ID TIlE 8276 CURSER RIDISTERS TIlE X,Y u:x::ATIooS} FlIABLE B.lFFER INl'ERHlPr} . /* PRJCEJlJRE CfIEXl{ Bl\UD RATE: THIS PRX:EWRE READS THE TIffiEE PORI' PINS 00 PI AND SET:;! U.p TIlE SERIAL PORI' roR TIlE SPEX:IFIED BI\UD RATE */ . . . CfIEXl{ $BI\UD$RATE: I SET TIMER 1 'ID MJDE 1 AND 'rum TIMER 001 Al1JX) RELCWlj • FlIABLE SERIAL PORl' :mrERRlPr} REI\)) Bl\UD RATE SWI'l'CHES AND SET UP RELCWl VAUJE} ; THl=040H; THl=OAOH; THl=ODOH; THl=OEBH; THl=OF4H; THl=OFAII; THl=OFIlI; /* 00 IS /* NC1l' AI.IaiED • / 150 BI\UD */ /* 300 /* 600 /* 1200 */ /* */ /* /* BI\UD BI\UD BI\UD 2400 BI\UD 4800 BI\UD 9600 BI\UD */ */ */ */ 10-100 <' Ap·223 1* PRXnlJRE REI\DER: TIllS PRXnlJRE IS WRI'1'1'9I IS ASSEJoIBIH ~. 'l'HE EKTERW. l'RXmJRE OCIINS THE 8 LINES OF 'l'HE KE'i~ AND RE1IDS 'l'HE REl'UltI LINES. 'l'HE Sl'ATUS OF 'l'HE 8 IlEI.'!Jm LINES ARE 'l'IIm 9roRQ) IN INl'ERNAL MlH)R{ ARRAY CALLED 0JRRENl'$KE'{ *1 REI\DER: {INITIALIZE FIAGS "KRl0" ..0, "SIIME"zl, 0 CXlJN1'ER=0} 00 l}Nl'IL {ALL 8 KE'i~ 0ClIN LINES ARE RFAD} \RFAD KE'i~ 0ClIN} IF {m KE'i WAS PRESSED} 'l'IIm I INCRIHNl' 0 CXXlN1'ER} . ELSE IF {'l'HE KE'i PRESSED WAS IVl' THE SlIME KE'i '!HAT WAS PRESSED 'l'HE Li\Sl' TIME 'l'HE KE'i~ WAS RFAD} 'l'IIm {CIEAR·"SliME" AND WRITE NEW 0ClIN REsuLT TO aJRRENl'$KEY Ri\M ARRAY} ms IF {ALL 8 .DIOO'T HAVE A KE'i PmSSED(O roiNrER=B)} 'l'IIm {8m' KEl( 0, AND CIEAR SlIME} 1* PRJCE[XJRE BLAII<: TIllS ElCI'ERIAL PRJCE[XJRE FILlS LINEO WITH SPACES {20H AOCII) WRING THE scroLL IUlTlNES. *1 BU\NK: 00 1= {BEX>INNING OF THE CRl' DISPLAY (LINED)} TO {LINED + SOH} {DISPLAY Ri\M POINTED ro Ff{ "I" = SPlICE (AOCII 20H)} NEXT I am; am BU\NK; PRJCEWRE BLINE: TIllS' EXTEmAt. PRJCEWRE BLAII ING ro TIlE WEi: OF KEllBO!\RD THAT IS (DING ro BE USED. SWl- SET WIlEN USING AN UNDa:XlDED KE'lBO!\RD IS ro BE USED SW2- SET WIlEN USING A DEXXlDED OR A SERIAL WEi: OF KE'lBO!\RD UNDEXXlDED KE'lBOl\RD- CRl'PLM.OBJ ,CRrASM.OBJ ,KE'lBD.OBJ ,PIM51.LIB DEX))[lE[) KE'lBOl\RD-CRl'PLM.OBJ ,CRrASM.OBJ ,DElXOE.OBJ ,PLM51.LIB DETl\CIIED KE'lBOl\RD-CRl'PLM.OBJ ,CRrASM.OBJ ,DETl\CII.OBJ ;PIM51.LIB . */ $SET (SW1) $RESET (SW2) 10·102 AP-223 PL/M- 51 CDlPlLER CRl'$OJN'l'R)LLER: 1 1 00; /************* •••• DECLARE LITERALS .***********************/ 2 1 3 1 4 5 6 7 1 1 1 1 8 1 9 1 10 1 11 1 12 1 DECIARE DECIARE DECIARE DECLARE DECIARE DECIARE DECIARE DECIARE DECIARE DECIARE DECLARE UC LlTERALI.:l 'I£X:AL$LlNE$CIfAN:;E'; am LlTERALI.:l 'amISl'ER'; aJRRENl'$KE:f LITERALI.:l 'aJH:' ,OOH,3FH,OOH,OOH,OOH, SCAN 3, SHIFf =1; M,<,>,1 *1 1* OOH, 'AZXCVBN' , SCAN 4, SHIFf =1; A,Z,X"C,V,B,N *1 *1 */ *1 *1 r 1* SCAN 5, SHIFf =1; Y, SPACE, O,F ,G,H 1* 09H, '(JiSERl" ,OOH, SCAN 6, SHIFf =1; TAB, O,W,S,E,R,T /* SCAN 7, SHIFf =1;ESC,I,·,',$,%,& $ENDIF *1 *1 */ 'Y' ,008,OOH,' DFGH', lBH,' 1"'$%&' ,OOH); *1 */ */ *1 10·105 *1 *1 AP·223 PL/M-Sl CQ.!PILER CRro:Nl'lVLLER $E'..1OCT j.*****·***·.******DEX:IARE VARIABLES····················/ 16 1 DI!CIARE $IF SW2 BIT M(OB4H) INRlT $ENDIF $IF SW1 CAP$I.CQt SHIP'l'$KE'{ c:x:Nl'R>L$KE'{ $ENDIF RElG, BIT M (09511) BIT M(096H) BIT M(097H) RElG, RElG, RElG,' BIT M(OB5H) BIT M (09311) D.\TA$TERUNAL$RE1II7i BIT M (094H) RElG, RElG, RElGl LCCAL$LINE CU'AR$TO$SaiD 17 1 DI!CIARE ( $IF SWl SlIME, VALID$KE'{ , KE:{O, LIIST$SHIP'l'$KE'{ , LAS'l'$CXNrR)L$KE'{ , LIIST$CAP$I.CQt ,. $ENDIF $IF SW2 lCVFLG, snc, MFlN, KBDIN!', ERR>R, $ENDIF N&I$I(E:{ , TRl\NSUT$'rCXlGlB , ClJRSER$QI , SERIALSIN!' , &:AN$IN!', TRAN!MIT$J;m' , EOCSEQ, VALID$ROCEPl'ICN , uc, I!NSP) BIT RlBLICl 10·106 AP-223 PL/M- 51 CCMPILER 18 1 DEl:U\RE I, J, K, ASCII$KEY' , TRAN9UT$COONI' , TEMP, SHIFT, ClJRSER$COL, ClJRSER$COIDIN , ClJRSER$R:M , ClJRSER$CaJNl' , FIm, BlCTE PUBLIC; REr:EIVE) $IF SWl 19 1 DFO.ARE LASl'$KEY' (8) BlCTE RlBLIC; $EH)IF $IF SW2 DEl:U\RE LASl'$KEY' (2) BlCTE PUBLIC; $EH)IF 20 1 DFO.ARE SERIAL(16) 21 1 DEl:U\RE DISPLAY$RAM (7CPH) BlCTE AT (10000) AllXILIJIR{; 22 1 AT (00000) AT (OOOlH) AllXILIJIR{, AlJXILIJIR{; 23 1 BlCTE PUBLIC; DEl:U\RE ( DISPIAY$RAM$POINl'ER, RASTER, LINEO, L) ~ PUBLIC; 10-107 Ap"223 PL/M-S1 LL IiOJTINES. */ 26 27 2 '1 BLANK: PRJCEWRE EK'I.'ElfiAL, END BLANKI /* 28 29 2 1 } PRJCEIlJRE BLINE: THIS EK'l'ERiIAL PRJCEWRE BLANKS FICM TIlE aJl&:R TIlE DISPIAY LINE */ BLINE: PRJCEWRE EK'l'ERiIALI END BLINEI /* PRJCEWRE FILL: THIS EK'l'ERiIAL PRJCEWRE FILLS THE aJl&:R LINE WlTII SPICES*/ 30 1 31 1 FILL: PRJCEWRE EK'I.'ElfiAL; END FILL, 10-108 oro TIlE END OF AP-223 PL/M- 51 CCMPlLER CRl'O::Nl'IDLLER $JmCl' ' /* PlIX:E!lJRE ClIEXl< BA1lD RATE: 'IRIS PlIX:E!lJRE READS TIlE THREE KlRl' PINS 00 PI AND SETS UP TIlE SERIAL KlRl' FOR TIlE SPEX::IFIED BA1lD RATE */ ClIEXl<$BA1lD$RATE : PlIX:E!lJRE; 32 1 33 2 9Xtl=7OH; /* 34 2 2 '.lMJD=IlM)I) OR 20H; /* TIMER 1 Atrro RELOIW */ /* TIMER 1 00 */ /* ENABLE SERIAL IN1'EIUVPr*/ /* SERIAL IN1'EIUVPl' MAsK FLAG */ KlIJE 1 ENABLE ROCEPrlOO*/ 35 36 37 38 39 40 41 42 43 44 45 46 47 48 2 2 3 3 3 3 3 3 3 3 3 3 1 TRl=I; ES:a:l; ENSP=I; 00 CASE (PI AND 0711); ; 'DU-04OH; THl=MOII; THl=OOCli; THl=OEBH; THI-OF4H; THl=OFAH; THl=QJ;lJf; END; END ClIEXl<$Bi\llD$RATE; /* 49 1 SO 2 2 2 2 51 52 53 54 55 56 57 /* 00 IS ID1' l\Lt.C:MED */ /* ISO BA1lD */ /* 300 BA1lD */ /* 600 BA1lD */ /* 1200 BA1lD */ /* 2400 BA1lD */ /* 4800 Bi\llD */ /* 9600 Bi\llD */ PlIX:E!lJRE LON> amsER: LON> amsER TAKES TIlE VAWE HElD IN lWo\ AND UWlS IT IN1'O TIlE 8276 CllRSER RmISTERS. */ I£Wl$CdRsER: PRX:EWRE; IF OJRSER$QI-l TIIIiJI 0JRSER$CXlL=QJRSER$(X>UI!N; EKl=O; (XHWlD$AOORESS=8011; /* /* DISi\BLE IIJWER INl'ERRlPl' */ INITIALIZE OJRSER CXHWID */ ENABLE IIJWER INl'ERRlPl' 2 PARAMm'ER$AlJ>RESS>aJRSERS(X)L, 2 2 1 EKl=l; END UlI\D$aJRSER; /* /* PlIX:E!lJRE CARRIJ\GE$1IE1.rum */ PARAMm'ER$AIJ>R= Im'ER=DISPIAY$R/\M$R>INTER-aJRSER$(XID!N; 58 1 59 2 60 61 62 63 2 amsER$OJ~=O; 2 2 ClJRSER$CN=I; CALL LON>$OJRSER; 1 END CARRIJ\GE$1IE1.rum; 10-109 */ PLiM-51 0 THEN 00; C1JRSER$~KM - I; ClJRSER$OO=I; CALL Uli\D$CURSER; IF DISPLAY$RAM$POINTER<5OO THEN DISPLAY$RAM$POINI'ER=DISPLAY$RAM$POINl'ERt 7800; ELSE DISPLAY$RAM$POINTER=DISPLAY$RAM$POINTER - 50H; L=DISPLAY$RAM$POlN'l'ER-aJRSER$UlMN; IF DISPLAY$RAM(L)=OFlH THEN 1* I.O:I{ IiUR END OF LINE*1 00; 1* CHARl\CTER *1 CALL FILL; 1* IF TRUE FILL WITH *1 DISPLAY$RAM(L)=20H; 1* SPACES *1 END; END; END UP$CURSER; 10-1.10 AP-223 PL/M- 51 CDlPILER /* PRX:EruRE RIGIfI' CURSER: THIS PRX:EruRE MJIIES THE CURSER RIGIfI' OOE OOllJMN lJi AIDING 1 TO THE CURSER OOllJMN AAM LOCATIOO THEN CALL IIJI\D CURSER 98 1 99 100 101 102 103 104 105 106 2 3 3 3 3 3 3 1 */ RIGIfI'$CURSER : PRX:EruRE; IF CURSER$COIllMN < 4FH THEN 00; ClJRSER$COIllMN" 0 THEN 00} ClJRSER$COllJol" E1'ER1INE- WHERE TO MJ\IE THE aJRSER. THE FIRST W'TE IS THE R:M INroR1ATIOO R)l.L()oIEJ) W' TIlE O)llJMN INroR1ATlOO */ 116 1 117 118 119 120 121 122 123 124 125 126 3 3 2 2 2 3 3 3 3 3 M:)V$QJRSER: PRJCEIlJRE ; 00 WHILE FIFO< 4; /* WAIT UNl'ILL THE M:)V$QJRSER PARAMEl1'ERS*/ END; /* ARE ROCEIVED INro THE FIR) "/ TEMP=CURSER$R:M; aJRSER$R:M=SERIAL(2) ; IF CURSER$R:M>TEMP THEN 00; L=DISPLAY$Rl\M$POINTERI- ( (aJRSER$lOM'EMP) * SOH) ; IF L> 7GlI THEN . /* IF CX1l' OF RllM RANGE */ DISPLAY$RllM$POIN1'ER=L-7DOH; /* RAP AR:XJN[) TO BEGINNING */ ~ ~~RllM~ DISPLAY$Rl\M$POIN1'ER=L; 127 128 3 2 am~, ~ 00; 129 130 131 132 133 134 3 4 4 4 4 4 135 136 137 138 139 140 141 4 3 2 2 2 2 2 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 2 2 2 2 3 3 3 3 2 3 3 3 2 2 1 IF aJRSER$R:M TE THEN DISPLAY$Rl\M$POIN1'ER=DISPLAY$Rl\M$POINl'ER+ (~); ELSE DISPLAY$RAM$POIN1'ER=DISPLAY$Rl\M$POINTER- (TEMP-<:URSER$OOllJMN) ; aJRSER$OO=1; CALL LOAD$aJRSER; L=DISPLAY$Rl\M$POINTER-aJRSER$OOILt4N; IF DISPLAY$RllM(L)=OFlH THEN 00; CALL FILL; DISPLAY$RllM(L)=2OH; 00; ES=O; 00 1=2 TO FI~2; SERIAL (I) =SERIAL (1+2) ; END; FIFO=FI~2; ES=ENSP; END MJ\I$ (LINEO AND 7FFH)); DISPLAY$RAM(L)=OFlH; /* ERASE UNrIL LINEO OR */ L=Itl-50H; /* END OF DISPLAY RAM* / ENDI L=O; 00 WHILE L <> (LINEO AND 7FFH); /* ERASE UNrIL LINEO */ DISPLAY$RAM(L)=OFlH; L=Itl-50H; END; END; END ERASE$FR:MSOJRSER$TO$END$OF$SCREEN; /* 173 */ PRlCEllJRE IDlE: THIS PRX:EIl1RE !tJVES THE aJRSER TO THE 0,0 FOSITIOO 176 2 IDlE: PRlCEllJRE; aJRSER$1OP00; ClJRSER$CX)IlIl=OO I aJRSER$OO=ll 177 2 CALL I.O!\D$CURSER; 178 179 2 1 DISPLAY$RAM$FOINTER=(LINEO AND 7FFH); END IDIEI 10-113 */ AP·223 PL/M-51 a:MPlLER /* 180 1 181 182 183 2 2 1 CLFJ\R$SCREEN : PRlCEllJRE ; CALL HCME; _ __ CALL ERASE$FIOI$CURSER$TO$END$OF$SCREEN; E2ID CLFJ\R$SCREEN; /* 184 1 185 186 187 188 189 2 2 2 2 2 190 191 2 1 1 193 194 195 2 2 2 196 197 198 199 200 201 202 3 3 3 3 2 2 2 203 204 205 206 207 208 209 2 2 3 3 3 3 1 */ PRlCEllJRE SCRoLL SCR)LL: PRlCEllJRE; CALL BLANK; EKO=O; IF LINEO= iF80H THEN LINEO= 180011; EUlE LINEO= LINEOtSOH; EKO=l; E2ID SCBOLL; /* PRlCEllJRE LlNE$FEED 192 */ PRlCEllJRE CLEAR SCREEN /* DISABLE VERl'ICAL REFRESH /* ENABLE VERl'ICAL REFRESH INl'ERHJPl' INl'ERRJPl' */ */ */ LlNE$FEED: P-RlCEllJRE ; IF CURSER$JnI=18H THEN CALL SCBOLL; ELSE 00; CURSER$JnI= CURSER$IVWH; CURSER$CN=1; CALL UlI\D$CURSER; E2ID; IF DISPLAY $1WI$FOINrER >17FH THEN DISPLAY$R1\M$FOINrER=OISPLAY$R1\M$FOINTER-78OH; ELSE DISPLAY$IWI$FOINTER=DISPLAY$R1\M$FOINl'ERI-SOH; L=DISPLAY$R1\M$FOINrER-aJRSER$OJUHI; IF DISPLAY$IWI (L) =OFlH THEN 00; /* I.C(J{ roR E2ID OF LINE CHARI\CTER*/ /* IF TIllE FILL WITH SPlICES */ CALL FILL; DISPLAY$IWI(L)=2OH; E2ID; E2ID LINE$FEED; 10-114 AP-223 PL/M- 51 a:MPILER CRrCX:Nl'IVLLER /* PRJCE!lJRE DISl'tM: THIS PRJCE!lJRE WILL TAKE THE B'tTE IN RAM LABELID REX:EIVE AND PUT IT INl'O THE DISPLIIY RAM. */ 210 1 211 212 213 214 2 2 2 2 215 216 217 218 219 220 221 222 223 224 225 226 2 3 3 3 3 4 4 4 4 3 3 3 227 228 3 2 229 230 231 2 2 1 DISPLAY: PRXElJRE; DISPLAY$RAM (DISPLIIY$RAM$POINTER) zREX:EIVE; IF DISPLAY$RAM$POINTERa 7CFH THEN DISPLAY$iW4$POINTER~OOOH; /* IF END OF RAM */ /* RAP ELSE DISPLAY$RAM$POINTERaDISPLIIY$iW4$POINTERI-I; IF OJRSER$O)UI.!N,,4m THEN 00.; ClJRSER$COUI4N..oOH; L--DISPLIIY$iW4$POINTER; IF DISPLAY$RAM(L)=OFlH THEN 00; CALL FILL; DISPLAY$RAM(L)=2OH; END; IF OJRSER$1OP1BH THEN CALL scmLL; ELSE OJRSER$~R:Mt11 END; ELSE OJRSER$O)UI.!N>OJRSER$OOUJ4NI-l; 0JRSER$QI=1; CALL I£WOlRSER; END DISPLAY; 10-115 AlOJND TO BEX;INNItI; */ AP~223 PL;M-51 DES THE IJ)Sl' CGlPUTER'S MESSI\GES AND IEl'Elf4INFS CXNl'R)L lID;)JENCE, OR AN EOCAPE ~ WHImIER IT IS A DISPIJlYABLE CHARIlCTER, THE PRlCEIlJRE THEN ICrS Aa::ORDm;u *1 232 1 233 2 234 2 3 3 3 3 3 2 3 3 3 4 4 4 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 4 3 3 3 3 2 3 3 3 3 2 3 3 3 3 3 4 5 5 5 5 5 5 5 5 271 272 273 274 275 276 277 5 5 5 5 5 278 4 279 3 5 DEx::IPHER: PRXnlJRE: srARl'$DOCIPIIER: VALID$REx::EPl'IOO=O: 1=0: 00 WHILE (I 0 THEN 00: ES=O: 1* DISABLE SERIAL INl'ERRJP1' WHILE MJ\TIN3 FIro K=FIFO-I: 00 J=O TO K: 1* MJVE FIro *1 SERIAL(J)=SERIAL(I): 1=I+1: *1 FlIDJ FIFD=K1 ES=ENSP: 1* aw3LE SERIAL INl'ERRJP1' VALID$REx::EPl'IOO=1: END: IF FIRJ=O THEN 00: SERIAL$lNT=O: ooro END$DOCIPIIER: END: IF (SERIAL(O)=lBH) THEN 00: IF (ESC$SEQ=l) AND (FIro<2) THEN ooro END$DOCIPIIER: K=(SERIAL(l) AND 5m)-40ih IF (K >OOH) AND (K TIlE SERIAL OORT. *1 322 1 323 324 325 326 327 328 329 330 2 3 4 4 331 332 333 334 335 3 3 3 3 1 TRAN9oIIT: PRlCEIlJRE; IF LOCAL$LINE =1 THEN 00; 00 WHILE (CLEAR.$ro$SlH>=1) OR (TRAN9o\IT$INT=0); mo; 3 SSUF=AS::1I$KRi ; 3 3 2 TR!\I&UT$INT=O; mo; Eta 00; SERIAL(FIro)=ASCII~; FIFOo=FIrot-11 SERIAL$INT=11 mo; mo TR!\I&UT I 1* PRlCEIlJRE AU'IO$REPFAT: THIS PRlCEIlJRE WILL PERFOlfoI AN AUro REPEAT FUlCl'IOO AFTER A FIXED DELAY PERlOO *1 336 1 337 338 339 340 341 342 343 344 2 AU'IO$REPEAT : PRlCEIlJRE ; IF ~=1 THEN 3 00; 3 3 3 3 3 2 TRAN9oIIT$TOOOtE=0; TR!\I&UT$O:XJN1'=OD OOB TIIEN 345 346 347 348 349 350 351 352 353 354 3 4 4 4 5 5 5 '4 3 355 356 357 358 359 360 361 362 4 4 4 4 4 4 3 1 5 1* FIRS'!' CllAAACTER *1 00; TRAN9o\IT$COONl'='l'RAN9o\IT$COONTt-1; IF TRAN9o\IT$OlJN'l'ooOFFH THEN l*r:I8l.N. BImiIiEIiI FIRS'!' CIIARI'Cl'ER AND TIlE 001 CALL TRAN9o\IT; I*sa:nm CIIARI'Cl'ER *1 TR!\I&UT$O:XJN1'=OO, . mol mol Eta sa:nm *1 00; aJRSER$OO"'ll aJRSER$O:XJN1'=OI IF TRAN9o\IT$TOOOtE m 1 THEN 1* 2 VERT FRI\MES IIE'.M;EN 3H> ro Nl'H CIIAAACTER CALL TR!\I&UT I 1* 3R:l '1'IIlO.lGI Nl'H CIIARI'Cl'ER *1 TRAN9o\IT$TOOOtE= NC71' TRAN9o\IT$TOOOtE I mol mol mo AU'IO$REPFAT; 10-118 *1 AP-223 PL/M-Sl .Mr */ INIT: 00 L=O ro 7CFllr DISPLIIY$RJ>.M(L}=20Hr ENDr /* 366 367 368 369 370 371 372 373 374 375 376 377 1 1 1 1 1 1 1 1 1 1 1 1 INITIALIZE roINl'ERS,' RJ>.M BITS, Ell'C. */ ESC$SEQ=Or SCAN$INT=OI SERIAL$INT=OI FlFU=OI ClJRSER$CCUNr=01 ru;=01 llATA$TEiMINAL$RFAI7i=11 'lO:N=05Hl LlNEO=1800H1 RASTER=180OHI DISPLIIY$RJ>.M$roINTER=OOOOHI TRAN94IT$INT=11 $IF SWl 3~8 379 380 2 2 00 1=0 ro 71 IAS'l'~(I)=OOHI 2 ENDI 381 382 383 1 1 1 VALI~=OI IAS'l'$SHIFl'~=11 IAS'l'$(l)NI'R)L~=1r 384 1 IAS'l'$CAP$UXl(=11 $ENDIF $IF SW2 1CVFLG=01 ~=01 RiFIN=OI KBDINT=OI ERR:>R=01 $ENDIF 1* INITIALIZE THE 8276 385 386 387 1 1 1 aMoIl\ND$AOORESS=OOHI PARl\MEJI'ER$AOORESS=4FHl PAlWIF!l'ER$AOORESS=58Hl 388 1 PAlWIF!l'ER$AOORESS=89Hr 389 1 PAlWIF!l'ER$AOORESS=OF9HI */ /* /* /* RESEll'THE 8276 */ NOR-IAL ImS, 80 CllARJ\C'IE1V1m */ 2 1m OOlNl'S PER VERrICAL RErRl\CE 25 RJWS PER FRllME' /* LINE 9 IS THE UNDERLINE rosITIOO 10 LINES PER 1m */ /* 0FFSEl' LINE CXJUNrER, NCti-TRANSPARENr FIELD roTRIBUTE 10-119 */ AP·223 PL/M- 51 CXJ.IPILER CRl'Cl::NI'R)LLER NJi-BLIM IJXAL$LINE THEN 00, IF IJXAL$L1NE=0 THEN 00, ENSP=O, ES=O; END; ELSE CALL CIIB:K$B!IUD$RATE; LIC=LOCAL$LINE; END; $IF SWl 00 WHILE OCAN$INT=O; IF SERIAL$INT=1 THEN CALL OEX:IPIIER; END; /* ~IVALEN1' PR:lGIWtW!LE aJRSER BLIM< /* IF IJXAL/LINE HAS */ CHAtQD srAmS */ /* WAIT UNITL VERl'ICAL REll'AACE BEFORE */ /* SCANNItI; TIlE KJ;Y8'JAl1D*/ 10-120 AP·223 PL,IM- 51 LLER CALL RFADER; IF VALI~ =1 AND SAME=1 AND (LASl'$SIUFr$KE't=SHIFr$KE\') AND (LASl'$CAP$LOCK~$LOCK) AND (LASl'$O)NTR)L$KE\'= L$KE't) THEN CALL AIJ'ro$REPFAT; ELSE 00; IF KE'tO=O AND SAME=O THEN 00; TEMP =0; K=O; 00 WHILE LASl'$KE\' (K)=O; K=K+l; END; TEMP=LASl'$KE\' (K) ; 00 I=(K+l) ro 7; TEMP='I'aoIPtLASl'$KE\' (I) ; END; IF TEMP=LASl'$KE\' (K) '!HEN 00; J=O; 00 WHILE (TEMP AND OlH)=O; ~ (TEMP,I); J=J+l; END; IF TEMP >1 '!HEN 00; VALID$I 6011) AND (AOCII$KE'{<7BH) '!HEN AOCII$KE'{"IIISCII$KE'{- 2011; IF LLC=O '!HEN 00; IF AOCII$KE'{=lBH '!HEN ESC$SEtFl; ELSE ESC$SEtFO; END; END; END; LASl'$SIUFr$KE\' =SHIFr$KE'{ ; LASl'$CAP$LOCK=CAP$LOCK ; LASl'$O)NTR)L$KE't= L$KE'{ ; VALID$KE'{=I; NEW$KE't= 1; END; END; ELSE 00; VALID$KE\'=O; NEW$KJ;Y =0; END; END; END; $ENDIF 10-121 ~P·223 PL/M-51 a:MPILER CRl' 17 I~ l'i I 20 21 2C OUu 1I0cA Cst.G AICu311) lIJMP VEHT ,REStT RA9TEH TO L1NtO AND fXTRiI ccue CuEIA~H) CSfG AHu811) LJMP UEIAC" ,NEEUEU IF eSfG ATC 0 1311) UMP dUfFf.R ,FILL a276 RUW BuFfEH D~CUDtD KEY~OARU SCA~ IS ~EYBUAHD U~Eu j!J OU2.s 1I0eD 2/1 CS~G 2:i IiJI~P ArcUHM) Hh8UF ,STICK StRIAL INFOHMATICN INTO THE FIFU I'SII IPUSH HEw UStD BY I'LM51 2b CSfG 21 OUi!) o IIi! I OU21i 01120;1 Oui!t Ou31 01l3.s 0113'1 0030 01136 OU3A 01l3e COUO USUOI/O 05001/0 "/8 UI ti! IISIIO 1J2110 uOuO uOtO UOOO OU3~ Ji? 003~ eouo 211 i!Ii ~OuO CO~O vEkT; 3u F F 31 !il H MOV MaY MOV MOVX 3'1 3) F F 30 37 311 INC SETS I'OP POP POP H /III /I I COtO 1;0112 COli! 1 HA t,,01l3 uOll2 uOtO OUlif "OuO Ou51 32 . Ace 0011 "UTtR,LiNtO ,REINITIALIZt TU LINEO "A~TfR "ASTERt1,L,N~Ot1 1(0,*0111 A,ciR~ eCjj~r SCA~ UOh ACI. leLR 8c7~ INTEHRUPI ~LAG ,INCh CUHSER CUUNT RtG1STEH IFDR DEBDUNCt HOuTINE ,PDP flEGlSTEHS PS~ "ErI lie Oull1 OUH DUll!> OuII7 OUIl'l OUIlIl Oullll PU:'H PUS,", PUS" Qj Q4 4~ lib 47 1111 IIU~ f~~; I'USI< I'U~I< I'US .. IFILL ti216 RUW 8uFrEH ,POP REG IS I EllS IICALL. II~ I'OP 511 1'01' 51 ;PUSH ALL HEb UStO BY I'USH POI' Se 1'01' 50S ~EII 10-123 PL~51 COuE AP-223 "!;S-Sl ,d"R" SVM~OL. I_liLt L.hT!Nb E N • II · ACC, IlLAI\K. ·· · L. LINt.O. NUTYE T DvEH • D~EIH • Plllr.T. Pfili. RASIE .. · SHIV. il:N. THltcTY TH"'l"" hEr." VI:,RI · · 0 0 a C 8 0 0 ··· St-IIlN! 0 e C C e 0 GUeAe~ St. VNTY OuEu!' oua::.!' OUAIIH OU!I'H OlAJH OullllH ounl' C e e C · .. S!;Ar. • SI;RI:IUf St.RUL 0 Aue .. C C F lFTY. FILL FuRTY • Sbllf VAL U C C C · ··· · · F1Fli T YP E c Aue" IlLII~£. BUFfE" CHECK. CUNll. CullT2 • CUU .. T. CuRli!I< OIlOI~E • OMA. OMAO"'I: DONI:, OPH. OPL. UGHTT ESCliEw e e C D a a 0 B e ° · ·· • CWTASM AS:.E~8L.f~ !I e e e C B c C AUOl< AIIO" AUO .. "uO" Al.ltl< A1.10 " AUO" AuOI< AuOl< AIIO .. AuO" AUCK ADDI< AuOH AIlOH AUC .. AuDH AutH Aile\( AIICI< AUOI< AIlDH AIlOl< AIlOI< AuOR AuOl< AuO .. AIlCI< Aile ... AuCk AUOl< AUCI< ADOH AIIDI< AUel< AUOl< AuDK A"OH AIIOl< AuOl< AT T R 1 8 L T E 5 E A A PU8 A' PUB A A A A E~T OuFIIH OuFAH O,BdH OlSQH ouelM OuecH 01A1H 016:1'" OOCOH 0151101 OuaQH A A A A EXT A A A EXT ExT A A PUB A A EXT EXT OUHH Ou!S'lH Ou711H A A OIlOIlH A 01l9'1H A OUSeH A OleUM 017'1H 01 f:lM 01!IIH A A A A 01i?~H OU2~H A A A EXT EXT EXT EXT EXT EAT REGlSTE" IIAhKlS) uStC: U lSSEIII:IL Y !;DMPLEre, r.c E~RUA~ ~OuNu 10-124 AP-223 Me8-51 IIA"Ru lUC OBJ OUSe Ou,S, 0<151 Ou59 Oti5e Oust. OIl&U Oubi! 0064 0060 0060 309'1u4 Cl9'1 F ulllO i/O"'!e8 LOOl A'I9'1 Ci!98 LOIIO COt.O COuo F LlIIO F OllbA 14110 F ,ou&e ~500 Ou&E F8 OU&f' t.q 0111\1 4,;li1 ou1a F6 01l7l bG1BIli! F 007& DlOO F OU7et u5uO F OulA ui!UO 0111' uOIiO Oll1E jiOtO 01l8u DOUO OUIIi! LlOUI Ou84 l2 Ou8~ 0081 Oua.. 0081:1 COIlO CO.:O COlli! COo! COUO 851101li! F 85UOb3 F 1850 (H,8u 01l8f OO'lc OU'l!! 00'17 III~O OU'l'l fO Ou'lA A3 OU'l1l u8rA ou'lu OulIF OUAl OuAJ OuA~ uOUO 00113 uOlli! 1I0t.0 uOuo OuA7 ,,2 CHTAS", AS:.EI"R~e" llt.~ 511 51 So 5~ 611 61 6c U 6~ 6!i 6b 61 61:1 69 111 11 7e 7J 7'1 1!i 16 7( 111 H au 81 80l 83 811 lIOuRI:E I:iEftBuFI IN. (;lH /jEre JB uveR' I'U:.H 11'1911AI\ 1.,1 DLANIIJ PSI'I 811 81 811 89 'IV 'I~ ,H lRANlIMlT BiT IItolT au THh C14fC4\ HECElVf. ,ClA THA~SMI:'S~O~ !NfEHA~PT FLAG ;UTii TRAllli Ii'll fOw PLM51 :tUTus CHECK U:'M PU::i~ ,.CL i>Ul;i1' I'U::i1' PU:'M MOV "PI. uF" 111 MO~ 11e URL MOv lU .\lq 1l~ 1;0hTli ill> 111 1111 11'1 1211 121 122 12J 12q Ii!:' 1211 121 12d FILL: 129 1311 131 132 13J 13'1 13~ 130 137 1311 lH CONTe! I 140 141 14e 14J 14q 14~ 141> 141 1411 14'1 1511 151 ,Se +1 MOV ,PuSH I"S~ lOb 101 lOCI 109 11v uOtl uPH.I'C!NI IIPL.I"CH'I+1 IiP~.UuH "O.C"R~EH A• .cUM MO~X .O~TH.A lNe IlPIR IN~ ~O ,GI:T kEijlST~R:' cuRHE~T POP POP I'OP PO .. POP HEr BY PLM51 01SPLAY RAM LUCAT10~ ,SI:T BIT, l~ tOH hAM AOuRI:SS uECOulhG ,GH C~A~Ek COLUMN I~FO 10 T~LL HO~ ,FAR IhTO THI: HO~ YO~ ARE fASCII S~A~E CHAriACTt.R ,MOV Tu UISPLAY HAM ,INCH TO h~Xl ul~PLAY HAM LOCATluh CJNE HO •• SOH.COI~T1 ,IF NOT AT THE , CONTlNUE POi> 1I0H ,PUP At:GUlEHS POi> I.IPI1 i>OP uPL .. Oi> ACC POP PSi> HET PUS ... .. U PU:;~ ACC i>UI:iM UPL I'USM OPH PU5M 00., ClM C IiP.,.L MO~ MOV UPL.L+l URL UP.,.UuH MOV HO.UFH INC IIPTR MOV A•• 2UIi I'IO~X .OPTH.A INI. liPT" UJNZ' HO,CUt.H! US~O ,P~SH HEGISTI:R~ EI~D Ot TMt. LII.E USI:D BY PLM5l ,GET BI:GUH,lhG O~ Ll~E RAM LOC_TJDN ,CALI.ULATEu ~Y PLMSl ,SET BIT 15 fOH UISPLAY HAM ADuRt.8Ii uECOUE ,SET UP CO~NTEH FOI( SOH LOCATluNS ,Gil PAST THE Of1H ,ASCII SPACE CHA~ACT~R ,MUVE 10 DlS~LAY RAM ,INCH lO NEXT Ull:iPLAY HAM LOCATIUN ,If ALL H L~CAno ... s HAVE NOT IIEEN FILLEu ,THEN COI\T1NUE ,PUP RI:GlSTEHS UOH OPH LlPL AC,," PSI'< iIIEJEI.T 10-126 Ap·223 "~S·51 LuC MA~R ... AS~haL.fk U/o,e uP J C"TA5~, ~OuR~E ISJ 15~ OuFo ~ldB OuF. OuFLi OIOv 0101 OIOc 010:. 0101> 0107 010b 010'11 OIOA OIOb 010C 0101.1 !!SUO!!3 o5uObi! e.O A3 "Oo3~ 3 1:.0 A3 1:.0 A3 1:.0 A3 1:.0 A3 1:.0 A3 <'0 A3 e.0 A3 1:.0 A3 1;.0 A3 1;.0 113 1;.0 A3 e.O A3 0101:. o 1 O~ OUu 0111 011e 011j 011'1 011~ 0110 011., 01111 0119 OllA 01111 011~ 011U Ollt 011F 01211 0121 01U 012~ 012~ 012!> 0120 0121 01211 012'1 OIU 01211 0121. to 1\3 F F 1'5/ i51l 15'1 1.I0"NI:.I flJMP Ii~ACI\E 16u LiMAI MOV MOV MOVX LNC ",PII."A:JTc.R H'i He: 16's H:' 1611 16., 1&0 169 nu 171 17.: 173 17'1 17!:> 1711 i71 17d 17~ 18Q 1~1 18~ 18b lR7 1811 18'1 l'lU I'll A3 .'1 .. 113 1;0 A3 100 A3 1::0 I'IJ l'I .. ~'1:i 1'10 .'17 1qll 1'19 ~OU ~O1 A3 ~Oil EO ':O,s ':0'1 ciO!> eOo cOl A~ Ol2\) 1:.0 012l A3 012~ 1:.0 JB I&~ l@o! 183 18'1 ~OuTI~t TENI I'IOV)( LNC MOVX INC MOVX IN(,; MOVX LNC MOVX INC MOVX INC MOVX INC MOVX INC MOVX INC MOVX LNC I'IOVX IN~ MOVX IN~ MOVX INC MOVX INC MOVX IN' MOVX lNC MOVX I'" MOVX INC IWI:.N1YI MOVX LN' MOVX INL I'IOVX LNC MOVX ~C~E~ UJ~PL.A' ~FL."ASh.Rt1 ~AM uATA T~ HO~ ~UfFtR or ITHI~ ;+++++++++++++++++++++++++++++++++.+++++++++++ •• ++++++++t.t ••••••••• ~O ",0 A3 t,0 ,tt.+.+ ••••••••••••••••••••••••••••••••••••••••••••••• +t •••••••••••• IS~ 150 ijl16 ;LliAII .nR PuJI'th,A Hl(OlI ~YTE, ILUAU .FtH Pllli\HR LU\'4 11Th,' A... Ol'lll ~FTR IIUI- ,'CIIO"E ' A... Ol'h ,uP IA A... Cl'l" LIP IQ " A... e"ll( liP I,R A... Cl'l~ uP] R A... Of'll( UP Hi A... CI'TI( IIPIR A,'.01'111 'uPIR A, .. OPTK uP IR ' A,.Ol'll( liP IA ' A•• Ol'll( uPTR A; .. OPTII IIPIR A, .. OI'lI'( IIPIR A, .. OPh "FIR A, .. OP1H UPIR A, .. Ot"K IIP1~ A... Ol'lH IIF 11< A, .. OI'TIC ",PI" A... el'T" IIPI~ A, "\l,n K ~P1R A... CP1" . LIP TR' A... Ct'TIC IIPl" A, .. CI'Tw 10-127 lIt INll HIGH, TI1EI\ LIMA U aVE" AP-223 I'I.S-51 LuC ~tA\.lIu vl!J 013U A3 0131 toO' OUi! A3 01!J ~O o 1 !It A3 013~ toO 013t. 113 0131 ~O 01111 Al 011<; c:0 ~13A ('3 Olla 1:0 013C A3 OULl toO OUto A3 OUF "-0 0111U A3 o !Ill 1:0 0111.: Al 0111j c:0 011141 ,,1 0111; 1:0 ,0111b A! 01111 1:0 011111 A3 014'1 toO 0111A Al 011111 1:0 Ollie A3 0111U 1'.0 0111t ,,1 0111~ 1:0 015U A3 0151 ~O 015.: A3 015l e.0 0154 ,,3 015:; e.0 01511 Al ~151 toO 01511 Al 015'1 to 015A ,,3 015D toO 0151. A3 01511 1:0 015t ,,3 015f e.O 01&U A3 01"1 1:0 01&': Al 01&j 1:.0 OU.II ,,3 011.:' t.O, 01110 A3 AS:iEIY.BLE .. L!~~ C",USt, :,OvIlI.E .:011 .:0'1 .:U "I! ':\e "1~ "lq ,,1~ ':'\D .:11 ,,1/1 ct .. Ci!U .:21 .:u c~J .:24 .:~~ ~~b ':21 .:ael .:2'1 illll ':3, ':l~ c3J .:311 c3!i ':3D c3" ,,311 ':39 ':11\1 ~lIl ':lIet "IIJ e/l" ell:> ':lIb ,,117 ,,1111 ':11'1 ,,511 ':51 e5': ,,5J lNI. MOVX lNI. ,..OVX lNI. MOVX A... Cl'l" "PIR A... OPh "PIA 11 ... 0;-1" I~C IIP1~ MOVX lNC MOVX lNC MOvX IN' THIR1YI MOVX INC MOVX lNC MDVX INC MOVX lNIl; MOVJC, INC MOYX INC MOVX INC MOVX INC MOVX INC MOVX INC fO"'TYI MO~X INC MDVX INC MOVX INC MOVX lNC MOVl( lNC MOVX INC "'OVX ':5 .. 1"11. c5~ Mevx .:511 .:51 ,,51! MOVX INC U~C c59 ':6u ~61 efoe! ~UTY: rlOVX I1>;C MOVX INI. IIF1~ A... Cl'l" 'III' Iii A... Cl'l" uPIIi A... CPh uPIR A... Ot'h ",P1R 11 ... 01'1", IIPlR A... CPT" UPTR A... OI'T" "'PTR A... CP1", IIP111 A•• OP1" UPTR A.":OI'T" uP11I A' •• OPT" uplR A. "OPTIC IiPJA A,.Ol'l .. UPTII A,.O .. ll< liP Iii A,.OI'Toi UP1R A... OPTH UPIR A, .. C.. T~ Iip]R A... OI' 11< UPTR A•• 01'1" IiPIR A•• OrT" uPIR A,.OI"I< IIPIR A•• O.. ll< uPIR A... C.. 11< vPTR A•• Ol''''' IIPIR 10-128 AP-223 "\oS-51 ~,A\oRU A5:,e"'~LE .. Cl(lASM LvC U~J 011./ ~O ~6j ,,3 016'; 1;0 ~6" l~L ,,6:> ,,6b 11.67 e60 ,,6'( ,,7V ,,71 c7e Mev. lNI. MOVX 1"(; MOVX INC \'IOVX IN(; MOVX INC MOVX INC MOVX INI,; "'OVX IN(; MOVX 01,6~ OH.A A~ OUa 1.0 0161,; A3 01f1U ~O 016l 113 016~ 1;0 017U .3 0171 ~O 017e ,,3 017j 1:.0 01h A! 017:> to 0170 A3 017i 01711 017'1 017A 01711 0171. 017U Oln 017f OlaV 0181 018e OHI,3 Olh 018:' 0180 0181 01611 0169 018A 018a 018(; 0181.1 0181:. Olef 01'1V 01'11 01'1c 01'1') 01'i141 01CJ!l ~O A3 to A3 t.0 A3 1:.0 A3 1::0 A3 1:.0 A3 1;0 A3 ~O II! 1;;0 A3 1;0 43 1:.0 A3 to A3 1;0 A3 EO A3 ~o A3 toO ~lljb A3 01'17 lO 01'111 A3 0199 ~o 019A A3 019b ~O 01'1!;. A3 01'11.1 1;;0 L!~~ :'OURLE "'O~X e7~ ,,7~ ':75 e70 ,,71 ,,71! c7'f o!8U ol81 ,,8ol "ej o!84 o!t'~ c80 eel e8ll <:8'1 ,,'IV o!'!l o!9c c!'!.3 ,,'I" cCJ~ c!CJo "CJI "CJII j!CJ'f 30U 301 jOil 30.3 030 .. JO) jOb JOI JOIl J09 J10 J11 j1.: JU J1q ~IATYI INC MOVX INC MOU INI. MOVX INC MOVX IIIIC MOVX INC MOVX INC MOVX IN(; MOVX INC MOYX IN(; liEvNfY I MOVX INC MOVX 1NI,; MOVX INC MOVX 1ll:C kOVX INC MO~X lNC MOVX IN(; Ji) M()~X J1b :HI !II:I,; Mevx A, .. O"l" IIFl" A, .. Cl'll( liP I'; A,,,CI"T,, "FIR A, .. Ol'l" UPI" A, .. Ct'ln liPt~ A, .. Cl'l" uPlfi A, .. Ct'TI( UPtR /\, .. Ol'lIC IiPt" A, .. Ot'T" uPIR A, .. Ot'TH ' IIPIR A,,,Ot'TH IIPT" ' A, .. OI'TN UPIR A,'"OPTIC IIPTR A,AOt'TN LIP /R .,AOl'lH UPIR A,AOI'TH UPIR A,.Ol'lH uP'R A,.OPTN UPlR .,.01'1H .. PH A, .. Ot'lN uP'" A,AOl'TIC IIPTR A, .. Oi'l" IIP1R A, .. Ot'lH UP'R A, .. Dl'll1 liP ]I. A, .. CPTH IIPIA A, .. Cl'lH IIPI" A, .. CI'T" UPI~ A, .. C~l" 10-129 AP-223 MLS-51 MALRy LUC uBJ olilt. ,,3 AS~hllL.EI< UI'.t. HI' A, .. C~T" "PIR ~IOVX A,,,C~lH 11\1. "PtA j21 jj!j Jii!'i Jii!~ 01AI> E.511ii! 01AA d4UOij1 01AI) 15UO 18 F 7~QOijO F Jii!b Jii!7 Jell Jii!9 J!ij J!1 He 01lIJ d F F t.lbHTY: I.Ht.CIII MOV (;JhE ~IOY 'JNE MOV HAntR,.18n ~,Ov rlA~TI;I"l,*uOI1 MOY MOV ICET HII 331l 1I,*OUOI1,uO"E tiEl J3<1 HI> J37 A,UP" .. ,U~I1,DuNt A,,,PI. J31 J3~ 01811 (;3 018C; 1;511ii! 018~ r:!411F 01Cu F511ii! OlCe :aOUF OlC" u5t13 OlCb 1I0U8 "~lR r.Ovx ~41FijC 018 .. b5t13uO 0187 /l5l1eijO 01BA Z2 IN' jl~ J2u .lU 01A" 1:.5113 olfilU :'OURI.E jl~ 0111f 1:.0 OUU 43 01.1 to OlAe! A3 01A~ Cr;TA5~, LlO"EI IlMAONEI CLH MOV AOU MOV IN!; INC lUMP ~IIII J41 J4i! hAlilI:.R,Dt'H tdlJ1I;hl,OI"L C A,LlPi. A,.HD UPI., II LI't.CII "PH C~I:;Co\ J4j JGII JIIlI "'Nu 10-130 ,.lOU 79 Tu ~UFFt.R PUINTI:.R ITO GI;;T Tu t.EXT D18Pi.AY L1Nf 'IN THE Dl&PLAY MEMIJRY AP-223 I~I~-lI ~~S-51'~'~R~ 'S~E~8LEk ~2.1 C~J~Cl ~OuULE PLALf~ !~ l~l;KtY~D.ODJ '~S~~DL~R I~V~K~~ A,; AS~51 ;Fll~ETBU.~R~ l.IIC u8J UH ~OuR\.E c: j ~ ~ 0 1 II 'i IV 11 1~ 1.) 111 15 111 J* __ ••••• _.a_a*_. __ * •••• __ ._._ •• __ ._._._ ••• _•• *_. ____ .a,*.,a,_a._aa __ • __ _ *._---•• a,*,*a",'*'t,a,.,. J****.- ••• *_.a._._ ••• _. __ • __ • __ •• _-_._._-.-_ •• Ja'*' ,._.~OrThA"E FuR RtAUI~G AN uhuE~OUEu "'_ • __ _ ,._.. .-.- K~YDOAAU a'a' .*._ .. __ .___ ._ ..... ___ .. _*._* __ *__ * ___ a._. ,*_* •• *"a"att*., •• *_* __ • __ *__ •• *.,.* ___ **_, _____ ._*,*.* __ * __ a _____ ._. __ J'-" J****.a*.aaa __ a •••••• _. ___ •• ___ ,,, rHIS THIS 1/ CuhlAI~1I lHt 1I0fT~AkE NtEUEu TO S~Ah AN UNDtCuO~D KtYIlOARU PWC'~A~ ~uSI liE LIN~EU TO THE ~Arh PRUGkAMS TU FUNCTION 111 19 l!V 21 H~~URY MA~ fO" HEADING iii! ADUR~S~ tCH ~EY ~OARD 2l ~EY ~OARO lU5ING ~UV~) 10FFH TO 17FFH illi 2~ ilo il7 ilil 29 3\1 31 3~ H 311 3!1 31> t1 I'UbLIC RUDEH ~XTAN uATA (LaTKEY) tXTAN gIl lKtYu,~AMEJ ,-*-.-....... _-.. _.-.'_ ..... _**. __ .-••••••• -._.- •••• _.**-•• _*_.-... _-_._. I I· . • ,.,_a.* ••• _••••• _•••• _••••• _. __ .*._. __ •. _.*_. __ .. __ *___ • __ .t ... ________ *_* ,- .eJE~!;T ~RtADE"·WOUT1N~· • AP-223 /oI,,5-S1 ",."I'/I,j AS:.HijLE .. LuC uBJ Ll~L Kt.Y"O bOuR"E ! I ]11 3'f ~N~E"OuEu_KEY8u."C St.G~E~T U~DtCI,jD'O_K'YIICAR~ CUOt. "5tG ~II ~1 ~" 4,s OuliA ei! ItEADt.RI I'USM PUSH I'U::;I' 4:1 40 PUSI' ,",USI' H 411 I'UI:I" Q OUOIl OuOA ouoe 01i0t. OU10 COuO ~O,O 4~ COo2 ~O1l3 COuO caUl equ2 eou3 'iOIOfF Oul! l'IuO Ollt~ 1800 '/8ue L200 li2110 0602 0011 Out'il Outll Oulu Outl' f4 O~?,O 93 F F F 0021 Fa Ou2c bOUS Ou24 tlSUU4 Ou27 OU29 ou211 ou2t. Ou2F Ou31 11005 U501 IISU21D us u!i1l3 UAt:A oon 0'108011 F OU36 U200 00311 C2UO F .01131. U003 0.v3(' (lOU2 Ou3t. UOUI OUIIO IIOUO Ouai! uOC13 OU44 110112 \ 011410 DO~O OU411 UOIIO IPuSH I'h "E~ uStD 8Y I'LMSI AC" liFL UP" ~O~ Uln ,~2H U3H uPT~,UOI'FH "I"OOH teO,IIL5IKt,Y 1<3,1I08H KEYO SA .. E 02",aiRO ,INITIALIZ~ ,AIlDjjEU ,CLR ltRu uPTR Tii KE'BUAHD COuNTE~ K~YbOAA~ teAM POINTEH ,INITIALIZt LOUP CUUNTtR ,INITIALIZt. PlMSI STATUS BITS ,G~T ,. ,MUV LAST KEYBUAKO SCAN 10 Oi!M ",,,".DPTH A lEHO A. u2H, NTSAME ,SCAN IIEY8uAHO ,INVtRT ,IF bCAN ftAS ZtRU ~O INCHEMENT ZiRu COUNTEH ,CUMPAHE ~lTH LAST SCAN IF NOT THE S"~E ,THEN eLR SAME B1T AND ~riITE NE~ INFURMAlIu~ ,Tu HAM ,IF tQUA~ JMP UVt.R INCH OF URU COuNrEM ,INCH ZERO COUNTt.R I;QUAL ult; A.02H,NTUME kQ liP'" H3,I/URI; kiII/OSh,bACK liE 'to ,STEP TO Nt.Xl ~CAN RAM lUCATION ,Nt.XT KEYBOAHD AIlDRE~S ,IF LOOP COUNT~R NOT 0, ~CAN AijAIN ,ChECK TC $EI; l' ALL 8 SCANS wHERE 0 ,IF YES SET KEYO BIT U .. E 0311 02"· ,POP fll;lOlSTEHII 11111 00" UPIl UPL Ace 1'811 8'1 NHAME; MO~ .. ~O.A ClH liJMP ~.~,E 80 Ou4\. 1.:2uO OU4, 1I0liE F SI 8c1 89 qU '11 t.,uAL ,IF ~CA~ ~AS NuT THE SAMt: THEN PUT NEW ,SCAN INtC IwTU HAM ;eLR SAf't. all ;GU UO IIURt tNu 10-132 AP-223 '" • ~ v P E ·· ALC. BAC", 01' .... OI'L. EwUAL. KI;YI/ • UiTl\EY "URI; N1SA!'.t p;,~. 0 C 0 0 C ·· · ·., ·· · SAMt; ZtRIJ · · ..... RtGlSTEIC IlAt,1( (SJ AuOW A"Ck 01l8~14 "AA o II 2 E'" ~, OUluH OU40:1'" Ol/OUH OIiOUH R R A R PUB Aue" AUCk AUOw Aue" AUCk Autk e Auek C StG C AuOk USte I A T T R I BUT [ S A AUC" AuCk 0 C C C C U~OtC~OtD_Kt'DDARU VAL UE OUEII ... 01/34 ... e AUOW REAuEfc ~ oues ... 5cG;L~O~CyOtO_KtYbOARU EtGaLhO~CuOtO_KtY~DAR" EXT ExT 8I;G;L~0~CUOtO_K~YDO.Ru StG;L~O~CUOtO_KEYbDARU SI;G;LNDtCUDtD_KEYbDARU EXT OQ5UH Oll29H ·/it;L;I.NII R StG;~~OtCuOEO_Kt'DOAR" II Al>St;/lIILr COMPLETE. t.C [kRuR:> fOuNu 10-133 AP-223 Dt.CIJOt I~I~-.I ~~S-51 ~AL~~ ~S~E~BLEK ObJtCT LIIC UBJ v2.1 ,.IIOtCuOt.USJ ~OUULE PL~L~~ .~ A~St~bLt~ I~VuKtD ell A5~51 ;F1:IJECOUE.S~C Llt;t c! ~ ~ ~ b I II 'I IU 11 **._._--- J**************************.************.************* I-*t._ ••• _•• _•• __ • _____ • ___________ *••• _••••• _._ •• _. __ * t t ' t t . t . J**** _._1**** ~OfT~A"E FUR DtCUOEO K~YIIOARu **** Jt,t_ _a •• _t.', __ * ____ *_*_ •••• _____ • _____ •• ,._._. ___ ._.***_tt.tt ; •• ****************** •• ********************************a* __ •• _. ,.***_ ••• 1J I I I I~ I Ie: IS 1b 11 111 1'1 20 21 U PUIIUC DtTACh EXTR~ UAfA (LS1KtYJ EXIRN dIT (~8~IhTJ 1* * .·CtCuD~· INTERHUPT RUUTI~E FUR DECODED KEYIlDARuS * 1* 1******·******************** •••• ·*.·**.******** ••• ···.***** •• ****** i!~ I· 241 2:. 211 +1 IiEJECT 10-134 AP-223 "'(.5-51 LIJC M.C~U AS:.E~·BLE" uBJ L~H (ItC"O~ ~OuR(.E 21 211 i''I UEI..OuEu_KErBuAwC StG~E~' C\lOt wStG DtCUOtC_KtV~CA~u 3~ OuOu ~OuO OuOc ('Ooi! OU04 .. Oel3 ouOt> CO"O OUOIi \lOoO~F OU~b t a ouoe 93 OuOU ~5~0 F ouOF Ui'!UO F OUl1 15dC~F Old .. 15d.r F OUI7 UOtO OUl9 "Od3 OUID uOeli'! Oulu UOuO OUIF ji! !I 3.: 3.5 34 uE U(.H: I'U:..., 3~ Mev CLH MOVe MOv I:>ET8 "U~H 30 31 311 !9 4U 41 4o! 4:$ 44 .wF~ I'CSt< .AC~ 1010'1 MOV 1'01' 1'01' POP .. OP KElI 4~ 4b IPUSt1 IUI:>EU 1'5~ "PL I'US'" UF'I.,UOfFt1 A I AUDICEI:>S FI/R Kt.VelOAHU A,,,~+OP'IC IFtTCH ASCII eYTt IM\lV T~ ~EMOHY TU elE Rt.AU bY PL~~l ILt.T PLIo!~l Kt~OI\ IHtoRt. 18 " BYTI: ISI:T C~U~Tt.R TU ~FFFH ~O INTI:RICUPT ION THE ~E~T FALLI,.,G EliGI: UF TU LSln'+I,A I\BuI,.,' ItJ 641 OuOU .~ ~ ~ ~OuO OuO.: ~0t.0 011041 ':Ou013 OU07 c:Otjll4IA oeOA 1i2uO oooe 7StlCfll OOOF 1StllUO oute: .. S69 00141 ~2"2 Ouh FSo9 oU111 oO':B OulA Oul11 OU2U OU2.: OU2S cOuOl0 c:01l1ll4 1)2uO 7SUOIIO 7SClCt8 6~ 60 F fl7 F 611 6'1 711 71 71/ 73 741 F F F OU211 7SIIlUO 01l2b 11018 OU211 OU311 OuH Oil311 00311 (5e1et8 75111110 .:Ou014 t5~0 85 YALIul , NXT81TI 811 F F 81 811 8'1 F 91 F u 9.: 94 F 9~ 90 91 90 JB JB :lETB MOY MOV MOY IIJMP f II~ 11 1'811 kEijISTtR~ YS~O BY I'LM51 ,IF I(E~Elllt fLAG StT GfT Nt~T lilT ,IF TO 1& II 1 THtN NUT A STlHT BIT ,If TO IS U IHtN II II IITART bIT ,S£T Tl~£R TY IN1EkRuPT IN THE "IOOLt UF STAHT 8lT ",lllliO UEd' 1"100, A ,StT » TI~kR CUUNTtR TY lIMEH MOllE FII\I ,GU bACK TU I'RUGKlM IIYl\C,IIUIIII ,CHE~K If VALlu IITART bIT HAS lIEEN SkEN ,IF NOT CH~CK 4F VALID STAHT BIT ,IF YEa IIET liYNC , INIT lliTilEY l,.,PlI, ICS I SYNC L8"lKtY"lIOH r~ U, "IIUUGE 1 TL 0, ,,"IiSU.EO 1'1,,1 I .. O,II11tSUliEl TLO,IIHSSAliEu IIYfIN,IITUP A, LSTKt Y MOY C, l~f'ld ,SET T!MtR FUR 1 81T TIM£ ,AND GU HACK TU MAIN PHOliRAM ,SET TIM~R FIIR 1 B4T TIME ,CHECK TO SE£ IF ALL 8 BITS HAVE BEEN HECEIYtO ,GkT ~URKING RtG1SIEH ,GET Nf~T dlT fRYM Tl A LSIKtY,A FJi\I SETa IIYfJI\ Cll( MOV uE7~ 1'01' LSlKI:Hl,1 ACC POI' 1'80\ KETl ,PYSH ACL HCvFLG,IIALlD !M'LI,HSI "CvFLG 11'0,II8IAKI1 TlO,UIAHTu MOY JB MOV MOv J(RC MOY JNC 911 00111 C2t7 0114'1 32 , eu 84 A2g11 OUIIJ f5uO 011115 uOt.O Oull7 uOIiO IIEflLH: PUSH I'US .. J8 JB liEU MOV MOV ,"OY ClH MOY UMP u 8': 8J 01l3A 13 Ou311 f5uO Ou3u ::.0116 Ou3~ u2110 7:1 70 71 7& 19 uEfALHA8LE_KtYaOARu ~E~~tNI LOUE KStG OETACHlaLt~KerBIJA"D ,If NO CARI(Y THEN NOT DOllE ,CLR 81T 7 ,MOY FINAL CUOt fO LSTKY.1 ~ ~CS·51 ,",UC MA~RU ASDE~ijLE .. D~TACH U~~ II~J '1'1 OUIiA 30D4u5 OU4U u2uO OU4F u2UOUO OUSe: 02uO Ou511 C2uO Ou51> 1,;2110 Ou5~ C2vO Ou5A t.5~9 oose 1J2~2 OuSt. "'So'l O~fJu 'l'SlICtF ClUU 'l5~HF OU61> lIOuD F F 100 101 ~O" 10j F F F F :iOUR~E I bTUPI I , toR .. Jlllb bE18 JMP 1\8uhT H51 I ~t.1"L 10~ t.RHI liETB tli .. C.. 10::' lOb 101 1011 10'j llv 111 11.: hS I: CLR ClH eLI< MOV I 111 -'" ~ ~ 0 lid !:NII I~H AP-223 11('5-51 I~AI.AIi AS;,E~8I.E" 5YI'001. IAdL~ (,I:iT!~b "l!;C " E A · ·· ·· ·· ·· ·· ·· ·· ······ · ·· ·· · · · · · ·· · ·· · · . ·· · . ·· · · · · · no!'. · ····· ·· · · ·· ·· ·· · · · ····· o~ TlICh I , P t. V ~ ACLoR ~Ot:Ot1 A OOUOH UOl>811 H PUll IIO~~H h Dt TACH. a AOUR C AOuA OtTACHAdLt._~EYBlil"O ~ lIEli I. ACIIA AOuR AOUR AOuR AOIlR ACUR Nl"B Nll'e ACIIR AOUR ACUR lOUR NLMB 8YF1~ EHR EHRuR II Flt-:!. C I1,PuT II 1<1I01NT. L:>TI\EY. MtSUbEU. to u "~SbAIiEI. N~TbIT. !; P~~ U RI,;VfLG. RliT II I,; STAHTI/. SlAHTl. SyNC. Tu. THO TlO TMOII. VAllO · N~"B I: lOUR II II U U Ii I: ADUR ADDR lCuR ACuR lOUR ACDR A I I A I. Ii t: I< 1 II U T t. b ~XI ~eb.uEI1CHl8LE_KtYaOlRU HELauNH ~EbaUEl1~HA8LE_Kt.YOOARO t.XI 0045H H VOIlOH." A VOUOH VOt8H ~OclDH A A H OOUOn A 1I054H IIOOOH OOF4H OOUH R 001l0H.4 OOliCH IIOUH 0089H 1I0lAH aEij.UE1A~HABLE_KtYbOARU tXr tXT ~Eij.UETACHABLE_KtYbOARIi UT A A ~Eij-UETACHlBLE_KEYbOARD H A tiEbauETACHABLE_KfYtlOARD tXT A 10 10 Ii SEb_UETIoCHIo8LE_KfYtlOIoRU RflHS1EH !lANK(S) UStO; II A:lSt.l!bL Y COMPLETE, NO EHROR$ f'OUNU 10-141 ·APPENDIX B REFERENCES 1. John Murray and George Alexy, CRT Terminal Design Using The Intel 8275 and 8279, Intel Application Note AP·32, Nov., 1977. 2. John Katausky, A Low Cost CRT Terminal Using The 8275, Intel Application Note AP-62, Nov., 1979. 10-142 MCS®~51 Article Reprint 11 , ,~' ',1' AR-224 Extensive I/O subsystems and a tailored instruction set allow a 16-bit inicrocontroller to set its sights on a widening range of industrial and computer (and telecomm and consumer) applications. . Controller chip takes on many industrial, computer uses With industrial and computer control applications increasing all the time-and telecommunications and consumer applications emerging-designers increasingly need microcontrollers whose performance extends beyond that of the conventional 8-bit architectures. Normally, control system designers must depend on expensive and complex multiple-chip microprocessors to achieve high performance. But now, a 16-bit single-chip controller offers a much better solution. Not only does the 8096 offer perhaps the most extensive input/output "services" of any microcontroller, it also provides an instruction set and addressing modes tuned for both fast control operations and high-speed arithmetic. In industrial applications, the 8096 can be used for process control, 1'obotics, numerical and motor control, and instrumentation. Figure 1 shows the chip in a typical closed-loop servo system of the type used in industrial applications. In computer applications performance is the key feature, and here the 8096 provides greater throughput in systems in which simple data structures-a single I/O bit-and relatively small memories are required. Typical applications are computer peripherals such as printers, plotters, Winch esters, and other hard-disk systems. In the consumer end, moreover, the 8096 is ideally suited for automotive engine and other controls (see "Stopping a Car") and sophisticated video games. Both applications need the speed, calculating power, and addressability of a 16-bit microcomputer. For telecommunications, the controller is intended for high-speed modems, P ABXs, and central office switching systems. In addition to the full 16-bit CPU, the 8096's basic architecture includes an 8-kbyte ROM and a 232-byte RAM, which serves as a register file. To meet the wide needs of controller environments, the chip contains an eight-channel, lO-bit analog-to-digital converter, a full-duplex UART (universal asynchronous receiver-transmitter), two 16-bit timers, and a programmable pulse-width-modulated output. Since a microcontroller must be able to interface with various types of transducers and sensors, the 8096 fe~tures built-in, extensive I/O facilities. These include an eight-level priority interrupt structure, full-duplex serial I/O, parallel I/O, a watchdog timer, analog inputs for the a-d converter; a pulsewidth modulated output and a high-resolution pulse output. Each of these facilities is integrated not only physically but logically into the chip's structure by being tightly coupled to the CPU. The inherently high performance of a CPU suffers if the controller spends too much time administering complex real-time I/O operations. The 8096's onboard I/O facilities solve this problem by permitting the CPU to devote more time to executing mathematics and control algorithms and less on I/O. Table 1. Memory allocations ofthe 8096 ~- Steve Wiseman, Product Marketing Manager Steve Burton, Senior Engineer John Katausky, Technical Marketing Manager Intel Corp. 5000 W Williams Field Rd , Chandler, Anz. 85224 Reprinted from ELECTRONIC DESIGi. - August 5, 1982 0001Hl017 On-chip I/O 0018-0019 Data register/stack pointer 001A-OOFF Data registers (230 bytes) 01OD-1FFD Off-chip expansion RAM/ROM/I/O 1FFE-1FFF On-chlp I/O 20Q0-200F Internal ROM interrupt vectors 201D-207F Reserved 2OSD-3FFF Internal ROM user program space 40Q0-FFFF Off-chlp expansion RAMIROM!lIO Copynght 1982 Hayden Publishing Co., Inc. 11-1 16-bit microcontroller . . The instruction set h~~dle!;· signed and uhsigned 16-bit multiplications and divisions. Both S-bit bytes arid 16-bit double words are supported. and even 32bit double words are supported for a subset of the main instruction set. A full 64 kbytes of memory address space is usabl~. 'structions-as the first 256 bytes of the 64-kbyte RAM address space, This permits. for example. the use of a portion of the register space as the subro'utine stack on smaller systems'that do not have external expansion memory (Table 1). The first 24 bytes of this register space are reserved for on-chip 110 addresses. 110 locations are memory-mapped and can be referenced directly as registers. The word register located at address ISH serves as the stack pointer. Such a large register space allows a programmer to keep his most frequently referenced scalar variables in registers. A flexible register structure The S096 instruction set directly supports 256 bytes of registers. which can be referenced as 12Sword registers or as 64 double-word n,gisters. These registers also appear-for memory reference in- Immediate 0.2 (word) NA. Immediate o (byte) N.A. B,#A Indirect 0.4 1.4 B,(A) (B) <= (B) + ((A)) Autoincrement 0.6 16 B,(A)+ (B) <= (B) + ((A)); (A) <= (A) + Short Indexed 0.4 1.4 B,C[AI (B) <= (B) + ((A) + C); where -128 '~l_ s~13.3 Hz per r¢les per ~ timer, at time x and ly the value. operatiOn is eorreet, tile software . isa typicaLvalue, Four piCkup at time y,then Eq. 1 and 2 are. will issue commands to reset the outputs Ill'e easilyllaitdl:e4 by the written. as wat\:hdog. But if a system failure 8096's)l~-speed inputunlt. At V.y = ~481(I,. - I,.) (4) prevents a diagnOstic from runeach' _osition of any (1ftbe ning wjthin a prescribed period, V yz = 4699%.48I{I. - Iy) (5.) pickupS', the current vatwi ofijmet In practice, theeonstaritsIn Eq. the watchdog timer will reset the ois saved in the input ""0, The 4 and 5 should he multiplied by a entire systenl. The software ~. programmable 'edge tt~ in scaling factor to allow calculations not reset properly on an erroneous the high-speed input unit provides operation, such as a counter overto he performed in integer a convenient 'device for handling Ill'ithmetic. A faetoroflOO, for Bow, excevt by writing to the the' wide dynamic ra~,', (1f the ' example, gi~llSsjJeed measured in "z'watchdog, titDer twice within its ,period measurement. At· slow unitlf of lJ19D,ofa~i1epernour. counting,~e. ' .' ;' . ,,;1'I:I,e8096 ~bev~!'Y useful in c" 11-3 ", ' 16-bit microcontroller operands in and out of memory locations. In addition, the chip's' powerful three-operand instructionsAdd,. Subtract, Multiply and Logical And-often eliminate them. Since programmer productivity (measured in lines of code written per day) is reasonably constant, writing fewer Move instructions can lead to reduced development expense. Register Load and Store instructions, with a full set of addressing modes, handle moves that cannot be eliminated. Keeping addressing simple Because a study of the ways in which addressing is used on the 8086 microprocessor indicates that programmers use complex addressing modes less than 0.7% of the time, the 8096's instruction set bypasses those in favor of the more commonly used addressing modes. But should complex addressing be needed, programmers can build such modes through macros. Addressing modes in the 8096 include direct, register-indirect, immediate, autoincrement, and both short (8-bit) and long (16-bit) indexed-address. Table 2 lists the address modes and the operations that occur when each is activated. Indexed-address modes, by adding an 8- or 16-bit disp!acement to the contents of any 16-bit register to form the' effective address of an operand, allow fast access to arrays stored anywhere in memory. Indexed modes are also useful for, referencing elements of based structures, as in the PL/M language. However, preliminary calculations are needed to reference a based array. The stack pointer is fully addressable, as are all other 16-bit registers. As a result, it can be the base register for moded references. Stack-relative addressing, which is easy to program, is often used for recursive-subroutine parameter passing and dynamically allocated variables. While this technique does not make the best use of a large register space, it adds flexibility to the system. The stack need not be confined to internal RAM, but can fill any available RAM space in the system. The stack can flow across the boundary into register space at will, allowing recursion to very great subroutine depths. Of the instruction set's 71 instructions, 25 take on both word and byte form, which increases the total to 96 instructions. The set includes 16 varieties of conditional jump, allowing·for both signed and unsigned comparisons. All of the 2048 bits in register space can be tested individually by a Jump on Bit/Not Bit instruction. A Decrement and Jump on Not Zero instruction provides for loop control. 2. Centered around the CPU and memory, the 8096's extensive 1/0 subsystem. Include an , analog-to-dlgltal converter, a universal asynchronous recelver-transmltter(UART). high-speed input and output circuitry. and a pulse-width modulation olltput circuit. $Ilch IntelUgentl/O allows the CPU to concentrate not on real-time housekeeping but on high-speed arithmetic and control operations. 11-4 Most of the instructions execute in about 0.8 !lS; the .Iongest, to normalize a zero, takes 8 !lS. All datarefere'nce instructions except Pop, Push, and Normalize are available in byte form, and all such instructions except.Jump on Bit and Normalize are available in word form. Table 3 lists some typical 8096 instructions' and their run times. A survey of code frequency usage shows that although most. multiplications and divisions are unsigned, a signed form is still necessary. When unsigned multiplication and division instructions are preceded by a 0.8-!ls SIGND prefix, they are converted into full two's-complement signed multiplication and division. ;Either type of operation executes in less than 6 !lS. Word multiplications result in a double-word product, and byte multiplications produce a word product. With an instruction called Word Divide, a double-word dividend is divided by a word divisor to produce a word quotient and remainders. Because jumps and calls are PC-relative, code is easy to relocate. Both Jump and Call instructions are available in a short 2-byte form with an H-bit displacement. Jump on Bit is a 3-byte instruction with an 8-bit displacement. An indirect jump for the "do-case" is also provided. In addition to the usual sign-extending (EXT) instructions for byte-to-word and word-to-doubleword conversions, the set includes instructions LDBSA and LDBZE, which move a byte into a word with sign or zero extension. Most one- and twooperand forms execute in 1 !lS. Conditional jumps run in less than 1.8 !lS, and in about 0.8 !lS when the jump is not taken. Shifts, whether by a specific number of bit positions or by a computed number, are provided for all three operand lengths (byte, word, and double word). In a floating-point software package, the mantissas must be aligned before they are added or subtracted, and the results normalized afterwards. Both functions require a software shift loop. The Normalize instruction and the computer form of the Shift Double Word instruction allow fast software implementations of floating-point arithmetic with up to a 32-bit mantissa. Multibit shift instructions are very useful for scaling operations .in scaled-integer arithmetic. Scaled-integer operations are usually faster than floating-point arithmetic in control applications. In addition to an overflow flag, which is set by each arithmetic instruction, there is an overflowtrap flag. It can be checked at the end of a sequence of instructions to determine whether an overflow has occurred anywhere in the sequence. The instruction set is complemented by a variety of 110 subsystems for handling virtually any com- 0.8 INC,DEC,CLR, NOT,NEG,SEX One-operand Instructions 0.8 2' XOR,ADDC,SUB, AND,ADD,SUBC Two-operand arithmetics 08 2' OR,CMP Two-op arithmetics 0.8 2' LD,LDBSE, ST 0.8 (not taken) Load and store registers JC,JNC,ETC. Conditional jumps 1.0 3' AND,SUB,ADD Three-op arithmetics 1.0 (not taken) 2 JBS,JBC Jump on bill jump on not bit 1.6 (taken) JC,JNC,ETC. Conditional jumps 1.6 SJMP,IJMP, LJMP Unconditional jumps 1.6 (stack register) o PUSHF Push PSW 1.6 (stack register) l' PUSH Stack push 1.8 (taken) 2 JBS,JBC,DJNZ Jump on bill and jump 1.6 + 0.2/shift 2 SHL,SHR,SHRA Shift instruc- 1.8 o POPF Pop PSW 2 NORML Normalize 2.2 + tions O.2!shlft 2.4 l' POP Stack pop 2.4 (stack register) 1 LCALL,SCALL, RET Subroutines 2.4 (stack external) o PUSHF Push PSW 2.4 (stack external) l' PUSH Stack push 2.6 (stack external) o POPF Pop PSW 2.8 (stack external) l' POP Stack pop SCALL,CALL Subroutines 3.0 (stack external) 3.2 (stack external) o RET Subroutine 3.4 2' MULB Byte multiplication 3.6 2' DIVB Byte division 3.6 3' MULa Byte multiplication 5.2 2' MUL Word multiplication 5.2 2' 3' DIV Word diviSion MUL Word multiplication 5.4 these operands may have 11-5 address modes 16-blt microcontroller puter peripheral or industrial application (Fig. 2). They include an a-d converter, a DART, timercounters, and a programmable pulse-width -modulated output. I/O resources inclUde a-d The controller contains a complete eight-channel, lO-bit a-d converter. Dsin'g successive approximation to achieve high speed-33.6 (.LS at a I5-MHz clock rate -it handles analog input voltages in the range of o to 5 V. An external reference is required and must be connected between the reference voltage and analog ground terminals. The converter generates a vectored interrupt when it completes a conversion cycle, allowing the CPD to have rapid access to the a-d input handler when operating in a multitask environment. Conversion is initiated by writing to an 8-bit a-d command register. The results of a conversion are read from two 8-bit output data registers.' One 8-bit register contains the eight most significant bits, and the other holds the two least significant bits, a 3-bit channel indicator, two unused bits, and a status bit. The status bit, which indic'Ites whether the a-d conversion is still in progress, is typically used in a non interrupt-driven environment. Just four bits of the a-d command register are used. Three of the bits specify the channel to be converted, and the fourth specifies the method of initiating an a-d conversion cycle. For example, if the fourth bit is a 1, the cycle begins immediately after writing to the command register. If it is a 0, FIFO register (7 bits X 20 words) 3. One half of the 8096's high-speed 1/0 subsystem is an Input unit, which contains a user-programmable change detector that defines Input transitions for the high-speed inputs. Each ofthe four inputs (HSI. - HSI,) can be programmed to respond to a different Inputtransition. the high-speed output logic subsystem initiates the conversion: The reason for the option is that many data acquisition algorithms require that conversions occur at specific intervals. This requirement is often difficult to manage through software because of interrupt latency and other conditions. Thus, the high-speed output subsystem provides the proper timing for periodic a-d conversions. The 8096's DART is virtually a carbon copy of the one on the 8051 microcontroller. One' of its 8-bit registers receives data, another transmits data, and another indicates the DART status plus bits to configure it for a specific operating mode. By setting the appropriate bits in the third, or control-status, register, a user can select one of four modes: • Mode 0 (shift register) is a simple, synchronous mode in which the 8096 provides a clock to synchronize incoming or outgoing data. Mode 0 can also be used to expand the I/O. • Mode 1 is an 8-bit DART mode in which the eighth bit is used for parity when it is enabled. • Mode 2 is a 9-bit DART mode in which the ninth pit is used for parity when it is enabled. • Mode 3 is a 9-bit data/address mode in which the DART transmits and receives nine bits of data. This is useful for implementing a simple multiprocessor intercommunications link in which the ninth bit distinguishes address from data. The remaining six bits of the control-status register are used for six operations: enabling the receiver section of the DART, enabling parity for both transmission and reception (even parity); storing the ninth bit when in the 9-bit transmitting mode; storing the ninth bit when in the 9-bit receiving mode, indicating that the receiver is ready, and indicating that the transmitter is ready. Also on board are a dedicated I5-bit baud-rate generator and a baud-rate ~lock that can be driven by either the ·8096's crystal oscillator or an input at pin 1'2CLK. This gives maximum flexibility in setting baud rates. The pulse-width modulated output can produce a pulse train of variable duty cycle, which can be integrated and clamped to provide an accurate digital-to-analog output function. The PWM circuit operates as follows: The 8096 crystal frequency is divided by three and clocks an 8-bit free-running counter. The counter output connects to one side of an 8-bit comparator; the other side of the comparator is tied to a user-addressable register. When the freerunning counter value is the same'as the one stored in the addressable register, an R-S flip-flop is set. The flip-flop is also reset when the counter rolls over from a count of 255 to O. This produces a simple yet accurate variable duty-cycle oscillator, which can be programmed for a variable duty cycle from 0 to 255 in increments of X/256. 11-6 16-bit microcontroller The watchdog timer offers a simple way to recover from a software or hardware error. Essentially a 16Wt free-running counter that is clocked by the CPU clock generator circuitry, the timer is reset by writing a 01E H followed by a OEIH to byte location OOOAH. If a resetting does not occur at least once every 13.107 ms, the timer will overflow, causing the 8096 to be reset-resetting reinitializes the 8096. This feature makes it virtually impossible for the 8096 to become lost in a program for too long. For development purposes, the reset terminal can be connected to Vee to disable the watchdog timer. More I/O-and faster Correlating events in real time is one of the most important considerations in computer-based control system design. Another common requirement is generating pulses and pulse trains todrive actuators. Most single-chip microcontrollers support such operations by having one or more timer/event counters under software control. The 8096, on the other hand, offers a complete integrated subsystem to perform these functions. Called the high-speed I/O unit, it is intended to be an integrated subsystem, but it can be viewed as separate units for input and output. Figure 3 shows the block diagram of the high-speed input unit. Its major components are a 16-bit timer, a programmable change detector and a first-in, firstout (FIFO) memory. Also included are several registers used by the software to control the high-speed input unit. The read-only timer is cleared by the system reset and incremented once every eight CPU cycles (every 1.6 J.LS with a 15-MHz crystal). When the timer overflows-rolls over from FFFFH to OOO!l!-a status bit is set and an interrupt is generated. The change detector monitors four pins on the 8096 and looks for predefined changes. Change definitions are controlled by the high-speed input unit's mode register, which is set by the software. This register contains a 2-bit field for each of the four high-speed inputs. Using the fields, a programmer can select the type of change for each input. Fields are encoded in one of four ways: • 00 defines positive transitions divided by 8. • 01 defines positive transitions. • 10 defines negative transitions. • 11 defines positive and negative transitions. Each high-speed input can be disabled through a second control register. When this is done, inputs of the high-speed input unit become available as digital input pins or, if required, two of the pins can be connected to the high-speed output unit. As the block diagram in Fig. 4 shows, the 'highspeed output unit uses the same timer as the input unit and also has a 16-bit event counter. The readonly event counter is similar to the timer in that it can be read at any time, generates an overflowinterrupt or status indication, and cannot be written into. It differs from the timer, in that its reset and clock sources, instead of being fixed by hardware, can be selected under software control. Two of the 8096's pins are dedicated to the event counter. A positive-going pulse on ECRST (Event Counter Reset) clears the counter, and either edge of a pulse applied to ECCLK (Event Counter Clock) increments the counter. A programmer has the option of using HSI o instead of ECRST or HSI, instead of ECCLK. These options are available by setting the appropriate bits in the 110 control register. The event counter can also be cleared under software control either directly, by setting a bit in the 110 control register, or indirectly, using the high- 4. The other half of the high-speed I/O subsystem is the output unit. Using a content-addressable memory to store socalled time-field data, the unit's logic matches this information with timer or event-counter operations. ::tll== .. "' .... == . . "' ... -= ... .0; ...*"1 "'........ 6 .• ,4.3'2"',0 ; =-,",,, .. .::::.~,,,,=-=.,,,,_,,,-=;:.~_a*==<=;:;:;: , Channel 00Qe ~"--"().6:~l>IIiwt"'"".OII"tlU9h6 :.--:-.:::::-c::t~~,,",_'=%!',tnr<>Ugh$ ; : ...----- :-~ ... :- . "'---15:'S~Hconvet$iQn ~---- --- -~-"--~==.lIlo ~ m 0 0 0 @ • ~ III 0 -< 0 .... m s: SINGLE COMPONENT MCS®-48 SYSTEM registers in place of locations 0-7 and are then directly addressable. This second bank of working registers may be used as an extension of the first bank or reserved for use during interrupt service subroutines allowing the registers of Bank 0 used in the main program to be instantly "saved" by a Bank Switch. Note that if this second bank is not used, locations 24-31 are still addressable as general purpose RAM. Since the two RAM pointer Registers RO and RI are a part of the working register array, bank switching effectively creates two more pointer registers (ROland Rl!) which can be used with RO and RI to easily access up to four separate working areas in RAM at one time. RAM locations (8-23) also serve a dual role in that they contain the program counter stack as explained in Section 12.1.6. These locations are addressed by the Stack Pointer during subroutine calls as well as by RAM Pointer Registers RO and RI. If the level of subroutine nesting is less than 8, all stack registers are not required and can be used as general purpose RAM locations. Each level of subroutine nesting not used provides the user with two additional RAM locations. is stored in location 7. Program memory can be used to store constants as well as program instructions. Instructions such as MOVP and MOVP3 allow easy access to data "lookup" tables. -0 2048~ t 2047~TSELMBO SELMB1 l: ~ 1024 1023 0 co Go :t (.) z 0 ------- l: ~ l: co ...co Go co t0 ~ 0 Go :t (.) :t z (.) 0 z 0 8 7 6 5 4 3 2 1 - LOCATION 7TIMER INTERRUPT VECTORS PROGRAM HERE 63 (127) «255)) LOCATION 3EXTERNAL USER RAM 32 x 8 (96 x 8) «224 x 8)) -r- INTERRUPT VECTORS PROGRAM HERE 32 31 o 7161514131211101+ RESET VECTORS PROGRAM HERE ADDRESS 24 23 Figure 12·2. Program Memory Map 12.1.3 Data Memory Resident data memory is organized as 64, 128, or 256 by 8-bits wide in the 8048AH, 8049AH and 8050AH. All locations are indirectly addressable through either of two RAM Pointer Registers which reside at address 0 and 1 of the register array. In addition, as shown in Figure 12-3, the first 8 locations (0-7) of the array are designated as working registers and are directly addressable by several , instructions. Since these registers are more easily addressed, they are usually used to store frequently accessed intermediate results. The DJNZ instruction makes very efficient use of the working registers as program loop counters by allowing the programmer to decrement and test the register in a single instruction. By executing a Register Bank Switch instruction (SEL RB) RAM locations 24-31 are designated as the working 12-3 BANK 1 WORKING REGISTERS 8x8 -----Rf- - - - ----'Rii'---- . . 8 LEVEL STACK OR USER RAM 16 x 8 8 7 0 BANKO WORKING REGISTERS 8x8 . .:.=- -::'=-==RI=': RO I DIRECTLY ADDRESSABLE WHEN BANK 1 IS SELECTED , ADDRESSED INDIRECTLY THROUGH R1 OR RO (RO' OR R1') I DIRECTLY ADDRESSABLE WHEN BANKO ISSELECTjD I 'IN ADDITION RO OR R1 (RO' OR R1') ( ) 8049AH, 8749H, MAY BE USED TO ADDRESS 256 WORDS OF EXTERNAL RAM. « )) 8050AH Figure 12·3. Data Memory Map SINGLE COMPONENT MCS®-48 SYS1;EM ORL,ANL VCC VCC Q INTERNAL BUS D D FLIP FLOP CLK 1/0 PIN PORT! AND 2 LOW IMPEDANCE PULLDOWN Q WRITE PULSE -=- IN MAX -500 -400 10H -300 _ _ _~ ("A) -200 -!OOf---_ MINL-._ _ __ 4V VOH o 2 3 5 OV VOH(V) LOW IMPEDANCE PULLUP HIGH IMPEDANCE PULLUP 2V VOL LOW IMPEDANCE PULLDOWN These graphs are for Informational purposes only and are not guaranteed minimums or maximums. Figure 12-4. "Quasi-bidirectional" Port Structure 12-4 4V SINGLE COMPONENT MCS®-48 SYSTEM 12.1.4 Input/Output statically latched output port or non-latching input port. Input and output lines on this port cannot be mixed however. The 8048AH has 27 lines which can be used for input or output functions. These lines are grouped as 3 ports of 8 lines each which serve as either inputs, outputs or bidirectional ports and 3 "test" inputs which can alter program sequences when 'tested by conditional jump instructions. As a static port, data is written and latched using the OUTL instruction and inputted using the INS instruction. The INS and OUTL instructions generate pulses on the corresponding RD and WR output strobe lines; however. in the static port mode they are generally not used. As a bidirectional port·the MOVX instructions are used to read and write the port. A write to the port generates a pulse on the WR ou~ line and output data is valid at the trailing edge of WR. A read of the port generates a pulse on the RD output line and input data must be valid at the trailing edge of RD. When not being written or read, the BUS lines are in a high impedance state. See also sections 13.6 and 13.7. PORTS 1 AND 2 Ports 1 and 2 are each 8 bits wide and have identical characteristics. Data written to these ports is statically latched and remains unchanged until rewritten. As input ports these lines are non-latching, i.e., inputs must be present until read by an input instruction. Inputs are fully TTL compatible and outputs will drive one standard TTL load. . 12.1.5 Test and INT Inputs The lines of ports 1 and 2 are called quasi-bidirectional because of a special output circuit structure which allows each line to serve as an input, and output, or both even though outputs are statically latched. Figure 12-4 shows the circuit configuration in detail. Each line is continuously pulled up to VCC through a resistive device of relatively high impedance. ' Three pins serve as inputs and are testable with the~ ditional jump instruction. These are TO, Tl, and INT. These pins allow inputs to cause program branches without the necessity to load an.input port into the acoumulator. The TO, Tl, and INT pins have other possible functions as well. See the' pin description in Section 12.2. 12.1.6 Program Counter and Stack This pullup is sufficient to provide the source current for a TTL high level yet can be pulled low by a standard TTL gate thus allowing the same pin to be used for both input and output, To provide fast switching times in a "0" to " I" transition a relatively low impedance device is switched in momentarily ('" 115 of a machine cycle) whenever a "I" is written to the line. When a "0" is written to the line a low impedance device overcomes the light pullup and provides TTL current sinking capability. Since the pulldown transistor is a low impedance device a "1" must first be written to any line which is to be used as an input. Reset initializes all lines to the high impedance' 'I" state. The Program Counter is an independent counter, while the Program Counter Stack is implemented suing pairs of registers in the Data Memory Array. Only 10, 11, or 12 bits of the Program Counter are. used to address the 1024, 2048, or 4096 words, of on-board program memory of the 8048AH, 8049AH, or 8050AH, while the most significant bits can be used for external Program Memory fetches. See Figure 12.5. The Program Counter is initialized to zero by activating the Reset line. 1~IArol~I~I~I~I~I~I~~~I~I~1 It is important to note that the ORL and the ANL are read! write operations. When executed, the p,C "reads" the port, modifies the data according'to the instruction, then "writes" the data back to the port. The "writing" (essentially an OUTL instruction) enables the low impedance pull-up momentarily again even ifthe data was unchanged from a "I." This specifically ~pplies to configuratkms that have inputs and outputs mixed together on the same port. See also .section 13.7. ! I Conventional Program Counter • Counts OOOH to 7FFH • Overflows 7FFH to OOOH ! Figure 12-5. Program Counter BUS An interrupt or CALL to a subroutine causes the contents of the program counter to be stored in one of the 8 register pairs of the Program Counter Stack as shown in Figure 12-6. The pair to be used is determined by a 3-bit Stack Pointer which is part of the Program Status Word (PSW). Bus is also an 8-bit port which is a true bidirectional port with associated input and output strobes. If the bidirectional feature is not' needed, Bus can serve as either a 12-5 SINGLE COMPONENT: MCS®-48 SYSTEM POINTER the word. The Program Status Word is actually a collection of flip-flops throughout the machine which can be read or written as a whole. The ability to write to PSW allows for easy restoration of machine status after a power down sequence. R23. 111 22 21 110 , 20 SAVED IN STACK STACK POINTER I I 19 101 18 ....L , 17 : 011 ·, · ~ · 15 13 .-l. psw 000 PC4-7 'i Figure 12-7. Program Status Word (PSW) 12 11 ....L 001 CARRY AUXILIARY CARRY FLAG 0 REGISTER BANK SELECT 14 ....L 010 CY AC FO BS 16 ....L LSB MSB 100 The upper four bits of PSW are stored in the Program Counter Stack with every call to subroutine or interrupt vector and are optionally restored upon return with the RETR instruction. The RET return instruction does not update PSW. 10 9 PC8-11 R8 >.PCO-3 MSB LSB The PSW bit definitions are as follows: Bits 0-2: Stack Pointer bits (So' S l' S2) Figure 12-6. Program Counter Stack Bit 3: Data RAM locations 8-23 are available as stack registers and are used to store the Program Counter and 4 bits of PSW as shown in Figure 12-6: The Stack Pointer when initialized to 000 pointS to RAM locations 8 and 9. The first subroutine jump or interrupt results in the program counter contents being transferred to locations 8 and 9 of the RAM array. The stack pointer is then incremented by one to point to locations 10 and 11 in anticipation of another CALL. Nesting of subroutines wihtin subroutines can continue up to 8 times without overflowing the stack, If overflow does occur the deepest address stored (locations 8 and 9) lNiil be 'overwritten and lost sinoe the stack pointer overflows from III to.OOO. It also underflows from 000 to 111. The end of a subroutine, which is signalled by a return instruction (RET or RETR), causes the Stack Pointer to be decremented and (the contents of the resulting register pair to be transferred to the Program Counter. 12.1.7 Program Status Word An 8-bit status word which can be loaded to arid from the accumulator exists called the Program 'Status:W ord (PSW); Figure 12-7 shows the information available in 12-6 Bit 4: Not used (' '1" level when read) Working Register Bank Switch Bit(BS) . 0 = Bank 0 I = Bank I Bit 5: Flag 0 bit (FO) user controlled flag which can be complemented or cleared, and tested with the conditional jump instruction JFO. Bit 6: Auxiliary Carry (AC) carry bit generated by an ADD instruction and used by the decimal' adjust instru~tion DA A. Bit 7: CatTy (C'Y) carry flag which indicates that the previous operation has' resulted in overflow of the accumula~or. 12.1~8 Condltonal Branch Logic The conditional branch logic within the processsor enables several conditions internal and external to the processor to be tested by the users program. By using the conditronal jump instruction the conditions that are listed in Table 12-1 can effect a change in the sequence of the program execution. SINGLE COMPONENT MCS®-48 SYSTEM Table 12·1 Device Testable Accumulator Accumulator Bit Carry Flag User Flags (FO, FI) Timer Overflow Flag Test Inputs (TO,..!!) Interrupt Input (INT) abled by the users program. An interrupt request must be removed before the RETR instruction is executed upon return from the service routine otherwise the processor will re-enter the service routine immediately. Many peripheral devices prevent this situation by resetting their interrupt request line whenever the processor accesses (Reads or Writes) the peripherals data buffer register. If the interrupting device does not require access by the processor, one output line of the 8048AH may be designated as an "interrupt acknowledge" which is activated by the service subroutine to reset the interrupt request. The INT pin may also be tested using the conditional jump instruction IN!. This instruction may be used to detect the presence of a pending interrupt before interrupts are enabled. If interrupt is left disabled, INT may be used as another test input like TO and T!. Jump Conditions (Jum On) All zeros ~ - not all zeros 1 I - I I 0 0 - 1 12.1.9 Interrupt An interrupt sequence is initiated by applying a low "0" level input to the INT pin. Interrupt is level triggered and active low to allow "WIRE ORing" of several interrupt sources at the input pin. Figure 12-8 shows the interrupt logic of the 8048AH. The Interrupt line is s.ampled every instruction cycle and when detected causes a "call to subroutine" at location 3 in program memory as soon as all cycles of the current instruction are complete. On 2cycle instructions the interrupt line is sampled on the 2nd cycle only. INT must be held low for at least 3 machine cycles to ensure proper interrupt operations. As in any CALL to subroutine, the Program Counter and Program Status word are saved in the stack. For a description of this operation see the previous section, Program Counter and Stack. Program Memory location 3 usually contains an unconditional jump to an interrupt service subroutine elsewhere in program memory. The end of an interrupt service subroutine is signalled by the execution of a Return andRestore Status instruction RETR. The interrupt system is single level in that once an interrupt is' detected all further interrupt requests are ignored until execution of an RETR reenables the interrupt input logic. This occurs ,at the beginning of the second cycle ofthe RETR instruction. This sequence holds true also for an internal interrupt generated by timer overflow. If an internal timer/counter generated interrupt and an external interrupt are detected at the same time, the external source will be recognized. See the following Timer/Counter section for a description of timer interrupt. If needed, a second external interrupt can be created by enabling the timer/counter interrupt, loading FFH in the Counter (ones less than terminal count), and enabling the event counter mode. A "1" to "0" transition on the Tl input will then cause an interrupt vector to location 7. 12.1.10 Time/Counter The 8048AH contains a counter to aid the user in counting external events and generating accurate time delays without placing a burden on the processor for these functions. In b,oth modes the counter operation is the same, the only difference being the source of the input to the counter. The timer/event counter is shown in Figure 12-9. COUNTER The 8-bit binary counter is presettable and readable with two MOY instructions which transfer the contents of the accumulator to the counter and vice versa. 'The counter content may be affected by Reset and should be initialized ' by software. The counter is stopped by a Reset or STOP TCNT instruction and remains stopped until started as a timer by a START T instruction or as an event counter by a START CNT instruction. Once started the counter will increment to this maximum count (FF) and overflow to zero continuing its count until stopped by a STOP TCNT instruction or Reset. The increment from maximum count to zero (overflow) results in the setting of an overflow flag flip-flop and in the generation of an interrupt request. The state of the overflow flag is testable with the conditional jump instruction JTF. The flag is reset by executing a JTF or by Reset. The interrupt request is stored in a latch and then ORed with the external interrupt input INT. The timer interrupt may be enabled or disabled independently of external interrupt by the EN TCNT! and DIS TCNT! instructions. If enabled, the counter overflow will cause a subroutine call to location 7 where the timer or counter service routine may be stored, INTERRUPT TIMING The interrupt input may be enabled or disabled under Program Control using the EN I and DIS I instructions. Interrupts are disabled by Reset and remain so until en- If timer and external interrupts occur simultaneously, the external source will be recognized and the Call will be to 12·7 SINGLE. COMPONENT MCS®·48 SYSTEM CONDITIONAL JUMP LOGIC S JTF EXECUTED ~-- .....~~-+_~ R RESET--_.J' TIMER FLAG INTERRUPT CALL EXECUTED Q EXTERNAL INTERRUPT RECOGNIZED Q TIMER INTERRUPT RECOGNIZED CLR D ------+---1 S TIMER OVERFLOW, Q TIMER OVERFLOW FF TIMER INT RECOGNIZED EXECUTED CLK >-----lR RESET Q S DIS TCNTI _ _ _..... TIMER INT ENABLE Q ')----1 R EXECUTED S Q INTERRUPT IN PROGRESS FF R RESET INTcr--------l D PIN RESET INT FF RETR EXECUTED Q CLK ALE--I'-'" LAST CYCLE I------...J OFINST. ENI S EXECUTED OISI EXECUTED __ RESET Q INT ENABLE ---JL/--1' -R-_ _..J 1. WHEN INTERRUPT IN PROGRESS FLIP-FLOP IS SET ALL FURTHER INTERRUPTS ARE LOCKED OUT INDEPENDENT OF STATE OF EITHER INTERRUPT ENABLE FLIP-FLOP. 2. WHILE TIMER INTERRUPTS ARE DISABLED TIMER OVERFLOW fli WILL NOT STORE ANY OVERFLOW THAT OCCURS. TIMER FLAG WILL BE SET, HOWEVE,R. Figure 12·8. Interrupt Logic . 12-8 SINGLE COMPONENT MCS®-48 SYSTEM PRESCALER XTAL-15 732 LOAD OR READ I CLEARED ON START TIMER EDGE DETECTOR START COUNTER JUMP ON TIMER FLAG 8BITTIMERI EVENT COUNTER o OVERFLOW FLAG STOPT INT ENABLE--------~L_~ Figure 12-9. Timer/Event Counter location 3. Since the timer interrupt is latched it will remain pending until the external device is serviced and immediately be recognized upon return from the service routine. The pending timer interrupt is reset by the Call to location 7 or may be removed by executing a DIS TCNT! instruction. olution less than 1 count an external clock can be applied to the T I input and the counter operated in the event counter mode. ALE divided by 3 or more can serve as this external clock. Very small delays or "fine tuning" of larger delays can be easily accomplished by software delay loops. AS AN EVENT COUNTER Often a serial link is desirable in an MCS-48 family member. Table 12-2 lists the timer counts and cycles needed for a specific baud rate given a crystal frequency. Execution of a START CNT instruction connects the T! input pin to the counter input and enables the counter. The T! input is sampled at the beginning of state 3 or in later MCS-48 devices in state time 4. Subsequent high to low transitions on TI will cause the counter to increment. T! must be held low for at least 1 machine cycle to insure it won't be missed. The maximum rate at which the counter may be incremented is once per three instruction cycles (every 5.7 f.A-sec when using an 8 MHz crystal)there is no minimum frequency. T! input must remain high for at least 115 machine cycle after each transition. AS A TIMER Eexcution of a START T instruction connects an internal clock to the counter input and enables the counter. The internal clock is derived bypassing the basic machine cycle clock through a + 32 prescaler. The prescaler is reset during the START T instruction. The resulting clock increments the counter every 32 machine cycles. Various delays from I to 256 counts can be obtained by presetting the counter and detecting overflow. Times longer than 256 counts may be achieved by accumulating multiple overflows in a register under software control. For time res- 12-9 12.1.11 Clock and Timing Circuits Timing generation for the 8048AH is completely selfcontained with the exeception of a frequency reference which can be XTAL, ceramic resonator, or external clock source. The Clock and Timing circuitry can be divided into the following functional blocks. OSCILLATOR The on-board oscillator is a high gain parallel resonant circuit with a frequency range of I to II MHz. The XI external pin is the input to the amplifier stage while X2 is the output. A crystal or ceramic resonator connected between XI and X2 provides the feedback and phase shift required for oscillation. If an accurate frequency reference is not required, ceramic resonator may be used in place of the crystal. For accurate clocking, a crystal should be used. An externally generated clock may also be applied to XI-X2 as the frequency source. See the data sheet for more information. SINGLE COMPONENT MCS®~48 SYSTEM Table 12-2. Baud Rate Generation Baud Rate Frequency (MHz) Tcy TO Prr(1/5 Tcy) Timer Prescaler ' 4 6 8 11 3.75MS 2.50MS 1.88MS 1.36MS 750ns 500ns 375ns 275ns 120MS 80MS 60.2MS 43.5MS 4 MHz Timer Counts + Instr. Cycles 6 MHz Timer Counts + Instr. Cycles 8 MHz Timer Counts + Instr. Cycles 11 MHz Timer Counts + lnstr. Cycles 151 + 3 Cycles .01% Error 208 + 28 Cycles .01% Error (32T~ 110 75 + 24 Cycles .01% Error 113 + 20 Cycles .01% Error 300 27 + 24 Cycles .1% Error 41 + 21 Cycles .03% Error 55 + 13 Cycles .01% Error 1200 6 + 30 Cycles .1% Error 10 + 13 Cycles .1% Error 12 + 27 Cycles .06% Error 19 + 4 Cycles .12% Error 1800 4 + 6 + 30 Cycles .1% Error 9 + 7 Cycles .17% Error 12 + 24 Cycles .12% Error 2400 3 + 15 Cycles .1% Error 5 + 6 Cycles .4% Error 6 + 24 Cycles .29% Error 9 + 18 Cycles .12% Error 4800 1 + 23 Cycles 1.0% Error 2 + 3 + 14 Cycles .74% Error 4 + 25 Cycles .12% Error 20 Cycles .1% Error 19 Cycles .4% Error STATE COUNTER The output of the oscillator is divided by 3 in the State Counter to create a clock which defines the state times of the machine (CLK). CLK can be made available on the external pin TO by executing an ENTO CLK instruction. The output of CLK on TO is disabled by Reset of the processor. 76 + 18 Cycles .04% Error power supply is within tolerance. Only 5 machine cycles (6.8 MS @ 11 MHz) are required if power is already on and thl( oscillator has stabilized. ALE and PSEN (if EA = 1) are active while in Reset. Reset performs the following functions: 1) Sets program counter to zero. CYCLE COUNTER 2) Sets stack pointer to zero. CLK is then divided by 5 in ti1e Cycle Counter to provide a clock which defines a machine cycle consisting of 5 machine states as shown in Figure 12-10. Figure 12-11 shows the different internal operations as divided into the machine states. This clock is called Address Latch Enable (ALE) because of its function in MCS-48 systems with external memory. It is provided continuously on the ALE' output pin. 3) Selects register bank O. 4) Selects memory bank O. 5) Sets BUS to high impedance state (except when EA = 5V). 6) Sets Ports 1 and 2 to input mode. 12.1.12 Reset 7) Disables interrupts (timer and external). The reset input provides a means for initialization for the processor. This Schmitt-trigger input has an internal pullup device which in combination with an external 1 M fd capacitor provides an internal reset pulse of sufficient length to guarantee all circuitry is reset, as shown in Figure 12-12. If the reset pulse is generated externally the RESET pin must be held low for at least 10 milliseconds a~ter the 8) Stops timer. 12-10 9) Clears timer flag. 10) Clears FO and Fl. 11) Disables clock output from TO. SINGLE COMPONENT MCS®-48 SYSTEM JUMP ON TEST ~ 1 OR 0 .273 ~.ec (3.67 MHz) -5 CYCLE COUNTER (733 KHz) ' -_ _ _ _..1 1.36 ~.ec DIAGRAM OF S04SAH CLOCK UTILITIES . S5 S1 S2 INPUT I NST. DECODE I S3 1 S4 S5 S1 EXECUTION OUTPUT· ADDRESS INC. PC ~ I . 1.36 ~.ec CYCLE 1 I I 1 INPUT I t I INSTRUCTION CYCLE (1 BYTE, 2 CYCLE INSTRUCTION ONLY) ...,It--..... ... - - - 1 S T CYCLE------I.~I . 01(------2ND CYCLE----.. ~I PREVIOUS CYCLE-.. STATE TIME: S2 I 53 I I S4 S5 I S1 I S2 I S3 I S5 S4 I S1 55 I S1 I S2 (02)"TO ALE PSEN" ----------~ RD,WR _____________________________________ ~ "EXTERNAL MODE "IF ENABLED S04SAH/S049AH TIMING Figure 12-10. MCS®-48 Timing Generation and Cycle Timing 12.1.13 Single-Step This feature, as pictured in Figure 12-13, provides the user with a debug capability in that the processor can be stepped through the program one instruction at a time. While stopped, the address of the next instruction to be fetched is available concurrently on BUS and the lower 12·11 half of Port 2. The user can therefore follow the program through each of the instruction steps. A timing diagram, showing the interaction' between output ALE and input S8, is shown. The BUS buffer contents are lost during single step; however, a latch may be added to reestablish the lost 110 capability if needed. Datais valid at the leading edge of ALE. CYCLE 1 INSTRUCTION S3 54 S5 Sl S2 S3 FETCH INCREMENT INSTRUCTION PROGRAM COUNTER - 'INCREMENT TIMER - - READ PORT - OUTLP,A FETCH INCREMENT INSTRUCTION PROGRAM COUNTER - 'INCREMENT TIMER OUTPUT TO PORT - - - 'INCREMENT TIMER READ PORT FETCH IMMEDIATE DATA 'INCREMENT TIMER READ PORT FETCH IMMEDIATE DATA - INCREMENT TIMER - - READ PORT OUTPUT TO PORT - " FETCH INCREMENT INSTRUCTION PROGRAM COUNTER ... ...... ORL P, =DATA FETCH INCREMENT INSTRUCTION PROGRAM COUNTER ~ Q) .... INS A, BUS ~ :::J: 3" :i" cc c .. ii' cc DI 3 - - INCREMENT PROGRAM COUNTER 'OUTPUT TO PORT - - ~ - , - - , - - - INCREMENT PROGRAM COUNTER 'OUTPUT TO PORT - o o 'OUTPUT TO PORT - ." - - Z C) rm READ PORT FETCH INCREMENT INSTRUCTION PROGRAM COUNTER - 'INCREMENT TIMER READ PORT FETCH IMMEDIATE DATA - INCREMENT PROGRAM COUNTER FETCH INCREMENT INSTRUCTION PROGRAM COUNTER OUTPUT RAM ADDRESS INCREMENT TIMER OUTPUT DATA TO RAM - - MOVXA,@R FETCH INCREMENT INSTRUCTION PROGRAM COUNTER OUTPUT RAM ADDRESS INCREMENT TIMER - - MOVDA,PI FETCH INCREMENT INSTRUCTION PROGRAM COUNTER OUTPUT OPCODE/ADDRESS INCREMENT TIMER - MOVDPI,A FETCH INCREMENT INSTRUCTION PROGRAM COUNTER OUTPUT OPCODE/ADDRESS INCREMENT TIMER OUTPUT DATA TO P2LOWER - ANLD P,A FETCH INCREMENT INSTRUCTION PROGRAM COUNTER OUTPUT OPCODE/ADDRESS INCREMENT TIMER OUTPUT DATA - - - , - - C/) ORLD P,A FETCH INCREMENT INSTRUCTION PROGRAM COUNTER OUTPUT OPCODE/ADDRESS INCREMENT TIMER OUTPUT DATA - - - , - - -I J(CONDiTIONAL) FETCH INCREMENT' INSTRUCTION PROGRAM COUNTER SAMPLE CONDITION 'INCREMENT SAMPLE - FETCH , IMMEDIATE DATA - UPDATE PROGRAM COUNTER , - - 3: STRTT STRTCNT FETCH INCREMENT INSTRUCTION PROGRAM COUNTER - - START COUNTER STOP TCNT FETCH INCREMENT INSTRUCTION PROGRAM COUNTER - - STOP COUNTER ENI FETCH INClIEMENT INSTRUCTION PROGRAM COUNTER - ' ENABLE INTERRUPT - DISI FETCH INCREMENT INSTRUCTION PROGRAM COUNTER - ' DISABLE INTERRUPT - ENTOCLK FETCH INCREMENT INSTRUCTION PROGRAM COUNTER ' - =DATA :::. 0 :;, -I 'OUTPUT TO PORT - :::J: .. - INCREMENT PROGRAM COUNTER FETCH IMMEDIATE DATA MOVX@'R,A S" - 'INCREMENT TIMER ~ 2l. c: (') - , - ORL BUS, FETCH INCREMENT INSTRUCTION PROGRAM COUNTER S5 FETCH INCREMENT ANL BUS, =DATA INSTRUCTION PROGRAM COUNTER OUTLBUS,A iii ~ CD FETCH INCREMENT INSTRUCTION PROGRAM COUNTER 54 , INCREMENT TIMER 0 Q) CYCLE 2 INA,P =DATA ; ~ S2 ANL P, cO c: I\) Sl , ENABLE CLOCK - READ DATA READ P2 LOWER - , - - , - , - - , - - - - o Z m Z -I 3: o C/) ® .... I Q) 'VALID INSTRUCTION ADDRESSES ARE OUTPUT AT THIS TIME IF EXTERNAL PROGRAM MEMORY IS BEING ACCESSED, (1) IN LATER MCS-48 DEVICES TlIS SAMPLED IN S4. 3: -< C/) m SINGLE COMPONENT MCS®-4S SYSTEM dear input. ALE should be buffered since the clear input of an SN7474 is the equivalent of 3 TTL loads. The processor is now in the stopped state. The next instruction is initiated by clocki!!s a "1" into the flip-flop. This' '1" will not appear on SS unless ALE is high removing clear from the flip-flop. In response to SS going high the processor be~s an instruction fetch which brings ALE low resetting SS through the clear input and causing the processor to again enter the stopped state. EXTERNAL RESET Vcc ACTIVE PULLUP 12.1.14 Power Down Mode (8048AH, 8049AH, 8050AH, 8039AHL, S035AHL, S040AHL) POWER ON RESET Vcc ~ Exqa circuitry has been added to the 8048AHl8049AHI 8050AH ROM version to allow power to be removed from all but the dllta RAM array for low power standby operation. In the power down mode the contents of data RAM can be maintained while drawing typically 10% to 15% of normal operating power requirements. lK [ v ce serves as the 5V supply pin for the bulk of circuitry Figure 12-12 TIMING The 8048AH operates in a single-step mode as follows: 1) The processor is requested to stop by applying a low level on SS. 2) The processor responds by stopping during the address fetch portion of the next instruction. If a double cycle instruction is in progress when the single step command is received, both cycles will be completed before stopping. 3) The processor acknowledges it has entered the stopped state by raising ALE high. In this state (which can be maintained indefinitely) the address of the next instruction to be fetched is present on BUS and the lower half of port :2. 4) SS is then raised high to bring the processor out of the stopped mode allowing it to fetch the next instruction. The exit from stop is indicated by the processor bringing ALE low. 5) To stop the processor at the next instruction SS must be brought low again soon after ALE goes low. If SS is left high the processor· remains in a "Run" mode. A diagram for implementing the single-step function of the 8748H is shown in Figure 12-13. D-type flip-flop with preset and clear is used to generate SS. In the run mode SS is held high by keeping the flip-flop preset (preset has precedence over the clear input). To enter single step, preset is removed allowing ALE to bring SS low via the 12-13 while the VDD pin supplies only the RAM array. In normal operation both pins are a 5V while in standby, Vee is at ground and VDD is maintained at its standby value. Applying Reset to the processor through the RESET pin inhibits any access to the RAM by the processor and guarantees that RAM cannot be inadvertently altered as power is removed from Vce' A typical power down sequence (Figure 12-14) occurs as follows: 1) Imminent power supply failure is detected by user defined circuitry. Signal must be early enough to allow 8048AH to save all necessary data before Vce falls below normal operating limits. 2) Power fail sign;!l is used to interrupt processor and vector it to a power fail service routine. 3) Power fail routine saves all important data and machine status in the internal data RAM array. Routine may also initiate transfer of backup supply to the VDD pin and indicate to external circuitry that power fail routine is complete. 4) Reset is applied to guarantee data will not be altered as the power supply falls out of limits. Reset must be held low until Vce is at ground level. Recovery from the Power Down mode can occur as any other power-on sequence with an external capacitor on the Reset input providing the necessary delay. See the previous section on Reset. SINGLE COMPONENT MCS®-48 SYSTEM +5V SINGLE STEP +5V MOMENTARY PUSHBUTTON 10K ~U~N--~------------' 10K PRESET o +5V Q +5V .-------t> CLOCK 10K DEB OUNCE LATCH 1/27400 ALE SINGLE STEP CIRCUIT I S3 I S4 S5 I S1 I S2 I S3 I .. .I .S3 I S4 I S5 I I S2 I ALEJi n SS I BUS P20-23 1/0 PC 0-7 ; PC 8-11 f : : SINGLE STEP TI~ING Figure 12·13. Single Step Operation 12-14 c 1/0 SINGLE COMPONENT MCS®-48 SYSTEM reset the prescaler and time state generators. TO may then be brought down with the rising edge of X 1. Two clock cycles later, with the rising edge of Xl, the device enters into, Time State I, Phase I, SS' is then brought down to 5 volts 4 clocks later after TO. RESET' is allowed to go high 5 tCY (75 clocks) later for normal execution of code. See Figure 12-15. POWER~ SUPPLY . PROCESSOR i' "---- INTE~RUPTED I : POWER - - - - - , . I I SUPPLY _._ '_ _I _ _ I_ _ _ FAIL SIGNAL I I I I I RESET NORMAL POWERON SEQUENCE FOLLOWS 12.1.17 Idle Mode LJ ___ _ : I DATA SAVE ROUTINE EXECUTED Along with the standard power down, the'SOC43S, SOC49 , SOC50 has added an IDLE mode instruction (OIH) to give . even further flexibility and power management. In the IDLE mode, the CPU is frozen while the oscillator, RAM, timer, and the interrupt circuitry remains fully active. I ACCESS TO DATA RAM INHIBITED When the IDL instruction (OIH) is decoded, the clock to the CPU is stopped. CPU status is preserved in its entirety: the Stack Pointer, Program Counter, Program Status Word, Accumulator, RAM, and all the registers maintain their data throughout idle. Figure 12-14. Power Down Sequence 12.1.15 External Access Mode Normally the first IK (S04SAH), 2K (S049AH), or 4K (S050AH) words of program memory are automatically fetched from internal ROM or EPROM. The EA input pin however allows the user to 'effectively disable internal program memory by forcing all program memory fetches . to reference external memory. The following chapter explains how access 1'0 external program memory is accomplished. The External Access mode is very useful in system test and debug because it allows the user to disable his internal appli~ations program and substitute an external program of his choice - a diagnostic routine for instance. In addition, section 12.4 explains how internal program memory can be read externally, independent of the processor. A "I" level on.EA initiates the external accesss mode. For proper operation, Reset should be applied while the EA input is changed. 12.1.16 Sync Mode The S04SAH, S049AH, S050AH has incorporated a new SYNC mode. The Sync mode is provided to ease the design of multiple controller circuits by allowing the designer to force the device into known phase and state time. The SYNC mode may also be utilized by automatic test equipment (ATE) for quick, easy, and efficient synchronizing between the tester and the DUT (device under test). SYNC mode is enabled when SS' pin is raised to high voltage level of + 12 volts. To begin synchronization, TO is raised to 5 volts at least four clocks cycles after SS'. TO must be high for at least four X 1 clock cycles to fully 12-15 Externally, the following occurs duriQg idle: I) The ports remain in the logical state they were in when idle was executed. 2) The bu's remains in the logical state it was in when idle was executed if the bus was latched. If the ,bus was in It high Z condition or if external program memory is used the bus will remain in the float state. 3) ALE remains in the inactive state (low). 4) RD', WR' , PROG' , and PSEN' remains in the inactive state (high). 5) TO outputs clock if enabled. There are three ways of exiting idle. Activating any enabled interrupt (external or timer) will cause the CPU to vector to the appropriate interrupt rontine. Following a RETR instruction, program execution will resume at the instruction following the address that contained the IDL instruction. The FO and FI flags may be used to give an indication if the interrupt 9ccurred during normal program execution or during i4le.This is done by setting· or clearing the flags before going into idle. The interrupt service routine can examine the flags and act accordingly when idle is terminated by an interrupt. Resetting the device can also terminate idle. Since the oscillator is already running, five machine cycles are all that .is required to insure proper machine operation. .SINGLE COMPONENT MCS®-48 SYSTEM Xl PHASE 1- - - - - - - - - - - - - PHASE 2- - - - - - - - - - - - - TIME STATE SS 2 3 4 .5V 1..-_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ 12V~r---------------------------------------------' OV TO OV-------------------j 5V 5V. 5V ALE ~ .------. OV-------------------------~ 1..-_ _ __ OV--------------------------------------SYNC MODE TIMING Figure 12-15. Sync Mode Timing 12.2 PIN DESCRIPTION 8 PORT #1 . 8 PORT #2 The MCS-48 processors are packaged in 40 pin Dual InLine Packages (DIP's). Table 12-3 is a summary of the functions of each pin. Figure 12-16 is the logic symbol for the 8048AH product family. Where it exists, the second paragraph describes each pin's function in an expanded MCS-48 system. Unless otherwise specified, each input is TTL compatible and each output will drive one standard TTL load. RESET SINGLE STEP EXTERNAL MEM TEST { INTERRUPT BUS 8 8048AH 8049AH 8050AH READ WRITE PROGRAM STORE ENABLE ADDRESS LATCH ENABLE Figure 12-16. 8048AH and 8049AH Logic Symbol 12-16 SINGLE COMPONENT MCS®-48 SYSTEM Table 12-3. Pin Description " Designation Pin Number· Function Vss 20 Circuit G N D potential VDD 26 Programming power supply; 21 V during program for the 8748H18749H; + 5V during operation for both ROM and EPROM. Low power standby pin in 8048AH and 8049AHl8050AH ROM versions. Vee 40 Main power supply; +5V during operation and during 8748H and 8749H programming. PROG 25 Program pulse; + 18V input pin during 8748H /8749H programming. Output strobe for 8243 I/O expander. PIO-PI7 (Port I) 27-34 8-bit quasi-bidirectional port, (Internal Pullup = 50KH) P20-P27 (Port 2) 21-24 35-38 8-bit quasi-bidirectional port. (Internal Pullup = 50KU) P20-P23 contain the four high order program counter bits during an external program memory fetch and serve as a 4-bit IjO expander bus for 8243. DO-D7 (BUS) ,12-19 True bidirectional port which can be written or read synchronously using the RD. WR strobes. The port can also be statically latched. Contains the 8 low order program counter bits during an external program memory fetch. and receives the addressed instruction under the control of PSEN, Also contains the address and data during an external RAM data store instruction. under control of ALE. RD. and WR, .[0 I Input pin testable using the conditional transfer instructions JTO and J NTO. TO can be designated as a clock output using ENTO CLK instruction. TO is also used during programming and sync mode. fI 39 Input pin testable using the JTI. and JNT I instructions. Can be designated the event counter input using the STRT CNT instruction. (See Section 2,1.10) iNT 6 Interrupt input. Initiates an interrupt if interrupt is enabled. Interrupt is disabled after a reset. (Active low) -RD Interrupt must re~ain low for at least 3 machine cycles to ensure proper operation. 8 Output strobe activated during a BUS relld. Can be used to enable data onto the BUS from an external device. (Active low) Used as a Read Strobe to External Data Memory. RESET 4 " Input which is used to initialize the processor, Also used during EPROM programming and verification. (Active low) (Internal pullup "" 80K 0) WR 10 Output strobe during a BUS write. (Active low) Used as write strobe to external data memory. ALE II Address Latch Enable. This signal occurs once during each cycle and is useful as a clock output. The negative edge ,of A LE strobes address into external data and program memory. 12-17 SINGLE COMPONENT MCS®-48 SYSTEM Table 12,3. Pin Description (Continued) Designation Pin Number· Function PSEN 9 Program Store Enable. This output occurs only during a fetch to external program memory. (Active low) -SS 5 Single step input can be used in conjunction with ALE to "single step" the processor through each instruction. (Active low) (Internal pullup 300K!!) + l2V for sync modes (See 2.1.16) EA 7 External Access input which forces all program memory fetches to reference external memory. Useful for emulation and debug, and essential for testing and program verification. (Active high) + 12V for 8048AH /8049AH /8050AH program verification and +18V for 8748H/8749H program verification (Internal pullup 10M!! on 8048AH/8049AH/8035AHL/8039AHL/8050AH/8040AHL) = = XTALI 2 One side of crystal input for internal oscillator. Also input for external source. XTAL2 3 Other side of crystal/external source input. 'Unless otherwise stated. Inputs do not have internal pullup resistors. 8048AH, 8748H, 8049AH, 8050AH, 8040AHL 12.3 PROGRAMMING, VERIFYING AND ERASING EPROM 8748H AND 8749H ERASURE CHARACTERISTICS The internal Program Memory of the 8748H and the 8749H may be erased and reprogrammed by the user as explained in the following sections. See also the 8748H and 8749H data sheets. The erasure characteristics of the 8748H and 8749H are such that erasure begins to occur when exposed to light with wavelengths shorter than approximately 4000 Angstroms (A). It should be noted that sunlight and certain types of fluorescent lamps have wavelengths in the 3000-4000A range. Data show that constant exposure to room level fluorescent lighting could erase the typical 8748H and 8749H in approximately 3 years while it would take approximately 1 week to cause erasure when exposed to direct sunlight. If the 8748H or 8749H is to be exposed to these types of lighting conditions for extended periods of time, opaque labels should be placed over the 8748H window to prevent unintentional erasure. 12.3.1 ProgrammingNerification In brief, the programming process consists of: activating the program mode, applying an address, latching the address, applying data, and applying a programming pulse. This programming algorithm applies to both the 8748H and 8749H. Each word is programmed completely before moving on to the next and is followed by a verification step. The following is a list of the pins used for programming and a descsription of their functions: Pin XTAL 1 Reset Test 0 EA BUS P20-1 P20-2 V DD PROG Pl(~·PIl When erased, bits of the 8748H and 8749H Program Memory are in tl\e logic "0" state. Func;tion The recommended erasure procedure for the 8748H and 8749H is exposure to shortwave ultraviolet light which has a wavelength of 2537 Angstroms (A). The integrated dose (Le., UV intensity X exposure time) for erasure should be a minimum of l5W-sec/cmz. The erasure time with this dosage is approximately 15 to 20 minutes using an ultraviolet lamp with a l2000J.tW/cm z power rating. The 8748H and 8749H should be placed within one inch from the lamp tubes during erasure. Some lamps have a filter in their tubes and this filter should be removed before erasure. ClOCk Input (3 to 4 MHz) Initialization and Address Latching Selection of Program (OV) or Verify (5V) Mode Activation of Program/Verify Modes Address and Data Input Data Output During Verify Address Input for 8748H Address Input for 8749H Programming Power Supply Program Pulse Input Tied to ground (8749H only) 12-18 SINGLE COMPONENT MCS-48 SYSTEM COMBINATION PROGRAMIVERIFY MODE (EPROM'. ONLY) 18V / EA 5V _ _ _ _....J I--------PROGRAM--------!+--'VERIFY'--"i----PROGRAMTO IWW- IAW-l---t--t-1WA ~ r-~O~A=TA~T=O~B=E-~ DBO-DB7 ~ - - PROGRAMMED VALID LAST ADDRESS P20-P22 IVDDwnIVD~H , ~ 'DO NEXT ADDRESS ADDRESS (8-10) VALID ~ - +5---------------- PROG+:: _ _ _ _ _ _ _ _ ------------------------- __ ~:J])--J{l~: +0 -------==--::-"'\....- - - - VERIFY MODE (ROM/EPROM) EA _--II ·TO RE~ET ~..._________~;' DBO-DB7 ==>--- P20-P22 \---------/ ADDRESS (0-7) VALID ADDRESS (8-10) VALID NEXT ADDRESS VALID NOTES: 1. PROG MUST FLOAT IF EA IS LOW (I.E., ¥o18V). ·TO QN EPROM ONLY. Figure 12-17. ProgramNerlfy Sequence for 8749H/8748H 12-19 Expanded MCS®48 System 13 CHAPTER 13 EXPANDED MCS®-48 SYSTEM 13.0 INTRODUCTION 1) The contents of the 12-bit program counter will be output on BUS and the lower half of port 2. 2) Address Latch Enable (ALE) will indicate the time at which address is valid. The trailing edge of ALE is used to latch the address externally. If the capabilities resident on the single-chip 8048AH/ 8748H18035AHU8049AHl8749H/8039AHL are not sufficient for your system requirements, special on-board circuitry allows the addition of a wide variety of external memory, I/O, or special peripherals you may require. The processors can be directly and simply expanded in the following areas: 3) Program Store Enable (PSEN) indicates that an external instruction fetch is in progress and serves to enable the external memory device. 4) BUS 'reverts to input (floating) mode and the processor accepts its 8-bit contents as an instruction word. • Program Memory to 4K words • Data Memory to 320 words (384 words with 8049AH) • 110 by unlimited amount • Special Functions using 8080/8085AH peripherals ALE By using bank switching techniques, maximum capability is essentially unlimited. Bank switching is discussed later in the chapter. Expansion is accomplished in two ways: J L PSEN FLOATING I) Expander 110 - A special 110 Expander circuit, the 8243, provides for the addition of four 4-bit Input! Output ports with the sacrifice of only the lower half (4-bits) of port 2 for inter-device communication. Multiple 8243' s may be added to this 4-bit bus by generating the required "chip select" lines. BUS ~FLOATING~ FLOATING ADDRESS INSTRUCTION Figure 13-1. Instruction Fetch from External Program Memory 2) Standard 8085 Bus ~ One port of the 8048AH/ 8049AH is like the 8-bit bidirectional data bus of the 8085 microcomputer system allowing interface to the numerous standard memories and peripherals of the MCS®-80/85 microcomputer family. All instruction fetches, including internal addresses, can be forced to be external by activating the EA pin of the 8048AHI 8049AH!8d50AH. The 8035AHU8039AHLl8040AHL processors without program memory always operate in the external program memory mode (EA = 5V). MCS-48 systems can be configured using either or both of these expansion features to optimize system capabilities to the application. 13.1.2 Extended Program Memory Addressing (Beyond 2K) . Both expander devices and standard memories and peripherals can be added in virtually any number and combination required. For programs of 2K words or less, the 8048AH/8049AH addresses program memory in the conventional manner. Addresses beyond 2047 can be reached by executing a program memory bank switch instruction (SEL MBO, SEL MBI) followed by a branch instruction (JMP or CALL). The bank switch feature extends the range of branch instructions beyond their normal 2K range and at the same time prevents the user from inadvertently. crossing the 2K boundary. 13.1 EXPANSION OF PROGRAM MEMORY Program Memory is expanded beyond the resident IK or 2K words by using the 8085 BUS feature of the MCS®48. All program memory fetches from the addresses less than 1024 on the 8048AH and less than 2048 on the 8049AH occur internally with no external signals being generated (except ALE which is always present). At address 1024 on the 8048AH, the processor automatically initiates external program memory fetches. PROGRAM MEMORY BANK SWITCH The switching of 2K program memory banks is accomplished by directly setting or resetting the most significant bit of the program counter (bit II); see Figure 13-2. Bit 11 is not altered by normal incrementing of the program counter but is loaded with the contents of a special flipflop each time a JMP or CALL instruction is executed. This special flip-flop is set by executing an SEL MB 1 13.1.1 Instruction Fetch Cycle (External) As shown in Figure 13-1, for all instruction fetches from addresses of 1024 (2048) or greater, the following will occur: 13-1 EXPANDED MCS®-48 SYSTEM ---------instruction and reset by SEL MBO. Therefore, the SEL MB instruction may be executed at any time prior to the actual bank switch which occurs during the next branch instruction encountered. Since all twelve bits of the program counter, including bit 11, are stored in the stack, when a Call is executed, the user may jump to subroutines across the 2K boundary and the proper bank will be restored upon return. However, the bank switch flip-flop will not be altered on return. counter is held at "0" during the interrupt service routine. The ~nd of the service routine is signalled by the execution of an RETR instruction. Interrupt service routines should therefore be contained entirely in the lower 2K words of program memory. The execution of a SEL MBO or SEL MB I instruction within an interrupt routine is not recommended since it will not alter PCII while in the routine, but will change the internal flip-flop. 13.1.3 Restoring 1/0 Port Information IAftIAwl~I~I~I~I~I~I~I~I~I~1 C Conventional Pr~gram Counter • Counts OOOH to 7FFH • Overflows 7FFH to OOOH JMP or CALL instructions transfer contents of internal flipflop to All Although the lower half of Port 2 is used to output the four most significant bits of address during an external program memory fetch, the I/O information is still outputed during certain portions of each machine cycle. 110 information is always present on Port 2' slower 4 bits at the rising edge of ALE and can be sampled or latched at this time. I • Flipflop set by SEL MBl • Flipflop reset by SEL MBO or by RESET 13.1.4 Expansion Examples During interrupt service routine All is forced to "0" All 12 bits are saved in stack Shown in Figure 13-3 is the addition of 2K words of program memory using an 2716A 2K x 8 ROM to give a total of 3K words of program memo!y:"'!!! this case no chip select decoding is required and PSEN enables the memory directly through the chip select input. If the system requires. only 2K of program memory, the same configuration can be used with an 8035AHL substituted for the 8048AH. The 8049AH would provide 4K of program memory with the same configuration. Figure 13-2. Program Counter INTERRUPT ROUTINES Interrupts always vector the program counter to location 3 or 7 in the first 2K bank, and bit II of the program 3 PORT 20-22 '(7 8048AH ALE BUS PSEN ~8 "- rr=V to.. 11 ) 8282 LATCH V ADDRESS 2716 EPROM ·DATA OUT CS USING 2K x 8 EPROM Figure 13-3. Expanding MCS®-48 Program Memory Using Standard Memory Products 13-2 EXPANDED MCS®-48 SYSTEM Figure 13-4 shows how the 8755/8355 EPROM/ROM with 110 interfaces directly to the 8048AH without the need for address latch. The 8755/8355 contains an internal 8-bit address latch eliminating the need for an 8212 latch. In addition to a 2K x 8 program memory, the 8755/8355 also contains 16 I/O lines addressable as two 8-bit ports. These ports are addressed as external RAM; therefore the RD and WR outputs of the 8048AH are required. See the following section on data memory expansion for more detail. The subsequent section on 110 expansion explains the operation of the 16 110 lines. an ALE iffi 804BAH B049AH lOW 2Kx8 lOR E~~~~ WITH AlDO_7 8~~1 1/0 8755 Aa-A10. CS 13.2 EXPANSION OF DATA MEMORY Data Memory is expanded beyond the resident 64 words by using the 8085AH type bus feature of the MCS®-48. TEST INPUTS 13.2.1 ReadlWrite Cycle 1/0 All address and data is transferred over the 8 lines of BUS. As shown in Figure 13-5, a read or write cycle occurs as follows: Figure 13-4. External Program Memory Interface ALE J I L >8<___ BUS FL_O_A_T_IN_G_ __ READ FROM EXTERNAL DATA MEMORY ALE BUS J L FLOATING FLOATING WRITE TO EXTERNAL DATA MEMORY FIgure 13·5. External Data Memory Timings 13-3 EXPANDED MC.S~-48 SYSTEM I) The contents of register RO or Rl is outputed on BUS. 2) Address Latch Enable (ALE) indicates addresss is valid. The trailing edge of ALE is used to latch the address externally. 3) A read (RD) or write (WR) pulse on the corresponding output pins of the S04SAH indicates the type of data memory access i!!.£!.ogress. Output data is valid at the trailing edge of WR and input data must be valid at the trailing edge of RD. 1'3.3 EXPANSION OF INPUT/OUTPUt There are four possible modes of 110 expansion with the S04SAH: one using a special low-cost expander, the S243; another using standard MCS-SO/S5 1/0 devices; and a third using the combination memory 110 ex,pander devices the S155, S355, and S755. It is also possible to expand using standard TTL devices as shown in Chapter 5. 13.3.1 I/O Expander Devi.ce 4) Dat (S bits) is transferred in or out over BUS. 13.2.2 Addressing External Data Memory External Data Memory is accessed with its own two-cycle move instructions. MOVXA, @R and MOVX@R, A, which transfer S bits of data between the accumulator and the external memory location addressed by the contents of one of the RAM Pointer Registers RO and RI. This allows 256 locations to be addressed in addition to, the resident lOCations. Additional pages may be added by "bank switching" with extra output lines ofthe S04SAH. 13.2.3 Examples of Data Memory Expansion Figure 13-6 shows how the S04SAH can be expanded using the SI55 memory and 110 expanding device. Since the S155 has an internalS-bit address latch, it can interface directly to the S04SAH without the use of an external latch. The S155 provides an additional 256 words of static data memory and also includes 22 1/0 lines and a 14-bit timer. See the following section on 110 expansion and the S155 data sheet for more details on these additional features. BUS 8 ALE 8048AH The most efficient means of 110 expansion for small systems is the S243 110 Expander Device which requires only 4 port lines (lower half of Port 2) for communication with the 804SAH. The S243 contains four 4-bit 110 ports which serve as an extension of the on-chip 110 and are addressed as ports #4-7 (see Figure 13-7). The following operations may be performed on these ports: • Transfer Accumulator to Port • Transfer Port to Accumulator • AND Accumulator to Port • OR Accumulator to Port A 4-bit transfer from a port to the lower half of the Accumulator sets the most significant four bits to zero. All communication between the S04SAH and the S243 occurs over Port 2 lower (P2O-P23) with timing provided by an output pulse on the PROG pin of the processor. Each transfer consists of two 4-bit nibbles: The first containing the "op code" and port address, and the second containing the actual 4 bits of data. ADO_7 WR ALE 8155 256 x 8 \VA RAM AD AD PORT 3 18 TEST INPUTS 22 I/O TIMER IN TIMER OUT 101M ) 1/0 Figure 13-6. 8048AHlnterfaceto·256 x 8 Standard Memories EXPANDED MCS®-48 SYSTEM fl -;:- /L ...I\. 20 CS 1/0 v 'I CHIP SELECT CONNECTIO N IF MORE THAN ONE EXPANDER IS USED A. P4 4 A P5 2 a050AH a049AH 8048AH ] T::JTS " 4 A " 4. " 1/0 v 8243 A P2O-P23 1/0 " PROG PROG "- P6 4 P7 4 "- 1/0 v DATA IN P2 1/0 v EXPANDER INTERFACE BITS 0, 1 MOO P20-P23 \ BITS2,3 '--. _ _ _- J/ JX"'_____.-J)>----- OO} PORT OO} READ 01 01 WRITE OR 10 ADDRESS 10 11 11 AND ---("',_ _ _ DATA (4-BITS) ADDRESS ANDOPCODE (4-BITS) OUTPUT EXPANDER TIMING Figure 13-7. 8243 Expander 1/0 Interface 3 Nibble I 2 I 0 II II IAIA I Instruction Code 3 13.3.2 1/0 Expansion with Standard Pttr1pherals Nibble 2 2 I 0 Standard MCS-80/85 type I/O devices may be added to the MCS@-48 using the same bus and timing used for Data Memory expansion. Figure 13-8 shows an example of how an 8048AH: can be connected to an MCS-85 peripheral. 110 devices reside on the Data Memory bus and in the data memory address space and are accessed with the same MOVX instructions. (See the previous section on data memory expansion for a description of timing.) The following are a few of the Standard MCS-80 devices which are very useful in MCS@-48 systems: • 8214 Priority Interrupt Encoder • 8251 Serial Communications Interface • 8255 General Purpose Programmable 110 • 8279 Keyboard/Display Interface • 8253 Interval Timer I did Idid I Port data Address 1_1_ _ AA 00 Read 01 Write 100R II AND 00 01 10 II - Port Port Port Port #4 #5 #6 #7 A high to low transition of the PROG line indicates that address is present, while allow to high transition indicates the presence of data. Additional 8243's may be added to the four-bit bus and chip selected using additional output lines from the 8048AHl8748H. !/O PORT CHARACTERISTICS 13.3.3 Combination Memory and 1/0 Expanders Each of the four 4-bit ports of the 8243 can serve as either input or output and can provide ·high drive capability in both the high and low state. As mentioned in the sections on program and data memory expansion, the 8355/8755 and 8155 expanders also contain 110 capability. 13-5 EXPANDED MCS®,.48 S,YSTEM 8 INT INT P20 C/D 8279 KEYBOARD DISPLAY 8048Ati RD RD WR WR BUS 8 KEYBOARD INPUTS SCAN OUTPUTS (A) DISPLAY OUTPUT DATA BUS CS (B) DISPLAY OUTPUT -::- Figure 13·8. Keyboard/Display Interface 8355/8755: These two parts of ROM and EPROM equivalents and therefore contain the same I/O structure. I/O consists of two 8-bit ports which normally reside in the external data memory address space and are accessed with MOVX instructions. Associated with each port is an 8bit Data Direction Register which defines each bit in the 'port as either an input or an output. The data direction registers are directly addressable, thereby allowing the user to define under software control each individual bit of the ports as either input or output. All outputs are statically latched and double buffered. Inputs are not latched. 8155/8156: I/O- on the 8155/8156 is configured as two 8-bit programmable 110 ports and one 6-bit programmable BUS 8 PORT l' 8048AH 8 port. These three registers and a Control/Status register are accessible as external data memory with the MOVX instructions., The 'contents of the control register determines the mode of the three ports. The ports can be programmed as input or output with or without associated handshake communication lines. In the handshake mode, lines of the six-bit port become input and output strobes for the two 8-bit ports. Also included in the 8155 is a 14-bit programmable timer. The clock inputto the timer and the timer overflow output are available on external pins. The timer can be programmed to stop on terminal count or to continuously reload itself. A square wave or pulse output on terminal count can also be specified. PROGr-------~--~~-----~------4-------------~------------~ Figure 13·9. Low Cost 110 Expansion 13-6 EXPANDED MCS®-48 SYSTEM 110 EXPANSION EXAMPLES Figure 13-10 shows the 8048AH interface to a standard MCS$-80 peripheral; in this case, the 8255 Programmable Peripheral Interface, a 4O-pin part which provides three 8-bit programmable 110 ports. The 8255 bus interface is typical of programmable MCS$-80 peripherals with an 8-bit bidirectional data bus, a RD and WR input for Read! Write control, a CS (chip select) input used to enable the Read!Write control logic and the address inputs used to select various internal registers. Figure 13-9 shows the expansion of 110 using multiple 8243's. The only difference from a single 8243 system is the addition of chip selects provided by additional 8048AH output lines. Two output liens and a decoder could also be used to address the four chips. Large numbers of 8243' s would require a chip select decoder chip such as the 8205 to save 110 pins. An 8255 A1 PROGRAM· MABLE PERIPHERAL INTERFACE RO WR 8048AH ALE RO WR BUS 8 00-7 PORT A P20 P21 AO 8255 A1 PROGRAM· MABLE PERIPHERAL INTERFACE PORT B 8048AH _ RO AD PORT C WR WR BUS 8 PORT B PORT C 00-7 CS OPTION #1 PORT A CS -::- OPTION #2 -::- Figure 13·10. Interface to MCS®·80 Peripherals addressing of the various memories and 110 ports. Note that in this configuration address lines AIO and AlI have been 0 Red to chip select the 8355. This ensures that the chip is active for all external program memory fetches in the IK to 3K range and is disabled for all other addresses. This gating has been added to allow the I/O port of the 8355 to be used. If the chip was left selected all the time, there would be conflict between these ports and the RAM and lIO of the 8156. The NOR gate could be eliminated and All connected directly to the CE (instead of CEl input of the 8355; however, this would create a IK word "hole" in the program memory by causing the 8355 to be active in the 2K and 4K range instead of the normal IK to 3K .range. Interconnection to the 8048AH is very straightforward with BUS, RD, and WR connecting directly to the corresponding pins on the 8255. The only design consideration is the way in which the internal registers of the 8255 are to be addressed. If the registers are to be addressed as external data memory using the MOVX instructions, the appropriate number of address bits (in this case, 2) must be latched on BUS using ALE as described in the section on external data memories. If only a single device is connected to BUS, the 8255 may be continuously selected by' grounding CS. If multiple 8255's are used, additional address bits can be latched and used as chip selects. A second addressing method eliminates external latches and chip select decoders by using output port lines as address and chip select hnes directly, ,rhLS method, of course, requires the setting of an output port with address information prior to executlng a MOYX instruction. In this system the various locations are addressed as follows: • Data RAM - Addresses 0 to 255 when Port 2 Bit o has been previously set = 1 and Bit 1 set = 0 • RAM 110 - Addresses 0 to 3 when Port 2 Bit 0 = 1 and Bit I = 1 13.4 MULTI-CHIP MCS®·48 SYSTEMS • ROM lIO Bit 3 = I Figure 13- i I shows the addition of two memory expanders to the 8048AH, one 8355/8755 ROM and one 8156 RAM. The main consideration in designing such a system is the Addresses 0 to 3 when Port 2 Bit 2 or See the memory map in Figure 13-12. 13-7 EXPANDED MCS®.48 SYSTEM 8156/8355 A8-10 PORT 83551 8755 ROM EPROM PORT ALE PSEN 8048AH RD WR BUS 8 TIMER OUT Figure 13-11. The Three-Component MCS®-48 System 13.5 MEMORY BANK SWITCHING Certain systems may require more than the 4K words of program 'memory which are directly addressable by the program counter or more than the 256 data memory and 1/0 locations directly addressable by the pointer registers RO and Rl. These systems can be achieved using "bank switching" techniques. Bank switching is merely the selection of various blocks of "banks" of memory using dedicated output port lines from the processor. In the case of the 8048AH, program memory is selected in blocks of 4K words at a time, while data memory and 110 are enabled 256 words at a time. The most important consideration in implementing two or more banks is the software required to cross the 'bank boundaries. Each crossing of the boundary requires that the processor first write a control bit to an output port before accessing memory or 1/0 in the new bank.' If program memory is being switched, programs should be organized to keep boundary crossings to a minimum. 13,8 Jumping to subroutines across the boundary should be avoided when possible since the programmer must keep track of which bank to return to after completion of the subroutine. If these subroutines are to be nested and accessed from either ;bank, a software "stack" should be implemented to save the bank switch bit just as if it were another bit of the program counter. From a hardware standpoint bank switching is very straightforward and involves only the connection of an 110 line or lines as bank enable signals. These enables are ANDed with normal memory and 110 chip select signals to activate the proper bank. 13.6 CONTROL SIGNAL SUMMARY Table 13 summarizes the instructions which activate the various control outputs of the MCS@-48 processors. During all other instructions these outputs are driven to the active state. EXPANDED MCS®-48 SYSTEM Table 13-1. MCS®-48 Control Signals Control Signal When Active RD During MOVX, A, @R or INS Bus WR During MOVX @R, A or OUTL Bus ALE Every Machine Cycle PSEN During Fetch of external program memory (instruction or immediate data) PROG During MOVD, A,P ANLD P,A MOVD P,A ORLDP,A The latched mode (INS, OUTL) is intended for use in the single-chip configuration where BUS is not begin used as an expander port. OUTL and MOVX instructions can be mixed if necessary. However, a previously latched output will be destroyed by executing a MOVX instruction and BUS will be left in the high impedance state. INS does not put the BUS in a high impedance state. Therefore, the use of MOVX after OUTL to put the BUS in a high impedance state is necessary before an INS instruction intended to read an external word (as opposed to the previously latched value). OUTL should never be used in a system with extern,,: program memory, since latching BUS can cause the nf instruction, if external, to be fetched improperly. 13.7 PO'RT CHARACTERISTICS' 13.7 BUS Port Operations The BUS port can operate in three different modes: as a latched 110 port, as a bidirectional bus port, or as a program memory address output when external memory is used. The BUS port lines are either active high, active low, or high impedance (floating). 13.7.2 POl"t 2 Operations The lower half of Port 2 can be used in three different ways: as a quasi-bidirectional static port, as an 8243 expander port, and to adddress external program memory. PROGRAM MEMORY SPACE ,----'BFFH MBl 8355 (2K) EXTERNAL DATA MEMORY SPACE MBO 1 - - - - - 1 400H I I ~~5 I I - - - - - - - - 300H 8155 RESIDENT I I 10 RESIDENT DATA 200H r - - - - - t MEMORY - - - - - - - - 100H r--~--'--tl (64) '--_ _ _-" OOOH 1--------1 --(';Kj-- SECTION ADDRESS DESIGNATION PROG.MEM DATAMEM 8155 PORTS OOO-BFF 100-IFF 300 301 302 303 304 305 400 401 402 403 CMD/STATUS PORTA PORTB PORTC TIMER LOW TIMER HI PORTA PORTB DORA DDRB 8355 PORTS Figure 13-12. Memory Map for Three-Component MCS®-48 Family 13-9 EXPANDED MCS®-48 SYSTEM" In all cases outputs are driven low by an active device and driven high momentarily by a low impedance device and held high by a high impedance device to vcc. The port may contain latched 110 data prior to its use in another mode without affecting operation of either. If lower Port 2 (P20-3) is used to output address for an external program memory fetch, the 110 information pre- viously latched will be automatically removed temporarily while address is present, then retored when the fetch is complete. However, if lower Port 2 is used to communicate with an 8243, previously latched 110 information will be removed and not restored. After an input from the 8243, P20-3 will be left in the input mode (floating). After an output to the 8243, P20-3 will contain the value written, ANDed, or ORed to the 8243 port. I/O I/O 8749H 8049AH 8048AH 8748H 8035AHL 8039AHL ,.....-_ _ _- - , ,.....-_ _ _- - , , - -_ _ _ _-.-J I/O CJ CJ Figure 13-13. MCS®-48 Expansion Capability 13-10 00 MCS®,48 Instruction Set 14 CHAPTER 14 MCS®-48 INSTRUCTION SET 14.0 INTRODUCTION 14.0.1 Data Transfers The MCS$-48 instruction set is extensive for a machine of its size and has been tailored to be straightforward and very efficient in its use of program memory. All instructions are either one or two bytes in length and over 80% are only one byte long. Also, all 'instructions execute in either one or two cycles and over 50% of all instructions execute in a single cycle. Double cycle instructions include all immediate instructions, and all 1/0 instructions. As can be seen in Figure 14.1, the 8-bit accumulator is the central point for all data transfers within the 8048. Data can be transferred between the 8 registers of each working register bank and the accumulator directly, i.e., the source or destination register is specified by the instruction. The remaining locations of the internal RAM array are referred to as Data Memory and are addressed .indirectly via an address stored in either RO or R I of the active register bank. RO and R 1 are also used to indirecly address external data memory when it is present. Transfers to and from internal RAM require one cycle, while transfers to external RAM require two. Constants stored in Program Memory can be loaded directly to the accumulator and to the 8 working registers. Data can also be transferred directly between the accumulator and the on- The MCS-48 microcomputers have been designed to handle arithmetic operations efficiently in both binary and BCD as well as handle the single-bit operations required in control applications. Special instructions have also been included to simplify loop counters, table look-up routines, and N-way branch routines. I~---------l I I I I PROGRAM MEMORY (~DATA) ADD MOV . MOVP MOVP3 ANL DRL XRL I DATA MEtMORY I MOV WORKING REG I MOV ADD ANL ORL XRL XCH I EXPANDER /lIL---,-:~--'-...I'\ r-'.....---------""------'''-,/I::-::-='7.:-:'.J....J''' EXTERNAL MEMORY \.rr-'-"-......,-,,, ,F=:.c.,.-,/ AND PERIPHERALS ~~ PORTS L----7'<"---""7<:----:--~----' 8749H 8048AH 8049AH 8748H 8035AHL' .!!L ____ Figure 14·1. Data Transfer Instructions 14·1 I 'NO PROGRAM 8039AH~J MEMORY MCS.®·4~ II\ISTflUCTION SET ;', , board timer counter.or the accumulator and the Program Status word (pSW). Writing to the PSW alters machine status accordingly and provides a means of restoring status after an interrupt or of altering· the stack pointer if necessary. 14.0.2 Accumulator Ope.rations Immediate data, data memory, or the working registers can"be added with or without carry to the accumulator. These sources can also be ANDed, ORed, or Exclusive ORed to the accumulator. Data may be moved to or from the accumulator and working registers or data memory. The two values can also be exchanged in a single operation. 14.0.4 Flags There are four user-accessible flags in the 8048AH: Carry, Auxiliary Carry, FO and PI. Carry indicates overflow of the accumulator, and Auxiliary Carry is used to indiate overflow between BCt> digits and is used during decimaladjust operation. Both Carry and Auxiliary Carry are accessible as part of the program status word and are stored on the stack during subroutines. FO and F1 are undedicated general-purpose flags to be used as the programmer desires. Both flags can be cleared or complemented and tested by conditional jump instructions. FO is also accessible via the Program Status word and is stored on the stack with the carry flags. 14.0.5 Branch Instructions In addition, the lower 4 bits of the accumulator can be exchanged with the lower 4-bits of any of the internal RAM locations. This instruction, along with an instruction which swaps the upper and lower 4-bit halves of the accumulator, provides for easy handling of 4-bit quantities, including BCD numbers. To facilitate BCD arithmetic, a Decimal Adjust instruction is included. This instruction is used to correct the result of the binary addition ofJwo 2-digit BCD numbers. Performing a decimal adjust on the result in the accumulator produces the required BCD result. Finally, the accumulator can be incremented, decremented, cleared, or complemented and can be rotated left or right 1 bit at a time with or without carty. Although there is no subtract instruction in the 8048AH, this operation can be easily implemented with three singlebyte single-cycle instructions. A value may be subtracted from the accumulator with the result in the accumulator by: The unconditional jump instruction is two bytes and allows jumps anywhere in the first 2K words of program memory. Jumps to the second 2K of memory (4K words are directly addressable) are made first by executing a select memory bank instruction, then executing the jump instruction. The . 2K boundary can only be crossed via a jump or subroutine call instruction, i.e . , the bank switch does not occur until ajump is executed. Once a memory bank has been selected all subsequent jumps will be to the selected bank until another select memory bank instruction is executed. A subroutine in the opposite bank can be accessed by a select memory bank instruction followed by a call instruction. Upon completion of the subroutine, execution will automatically return to the original bank; however, unless the Original bank is reselected, the next jump instruction encountered will again transfer execution to the opposite bank. . Conditional jumps can test the followihg inputs and machine status: • TO Input Pin • Complementing the accumulator • T1 Input Pin • Adding the value to the .~ccumulator • INT Input Pin • Accumulator Zero • Complementing the accumulator • Any bit of Accumulator 14.0.3 Register Operations The working registers can be accessed via the accumulator as explained above, or can be loaded immediate with constants from program memory. In addition, they can be incremented or decremented or used as loop counters using the decrement and jump, if not zero instruction, as ex. plained under branch instructions. All Data Memory including working registers can be ascessed with indirect instructions via RO and R 1 and can be incremented. • Carry Flag • FO Flag • FI Flag Conditional jumps allow a branch to any address within the current page (256 words) of execution. The conditions tested are the instantaneous values at the time the conditional jump is executed. For instance, the jump on accumulator zero instruction tests the accumulator itself, not an intermediate zero flag. 14-2 MCS®·48 INSTRUCTION SeT The decrement register and jump if not zero instruction combines a decrement and a branch instruction to create an instruction very useful in implementing a loop counter. This instruction can designate anyone of the 8 working registers as a counter and can effect a branch to any address within the current page of execution. The working register bank switch instructions allow the programmer to immediately subsfitute a second 8-register working register bank for the one in use. This effectively provides 16 working registers or it can be used as a means of quickly saving the contents of the registers in response to an interrupt. The user has the option to switch or not to switch banks on interrupt. However, if the banks are switched, the original bank will be automatically restored upon execution of a return and restore status instruction at the end of the interrupt service routine. A single-byte indirect jump instruction allows the program to be vectored to anyone of several different locations based on the contents of the accumulator. The contents of the accumulator points to a location in program memory which contains the jump address. The 8-bit jump address refers to the current page of execution. This instruction could be used, for instance, to vector to anyone of several routines based on an ASCII character which has been loaded in the accumulator. In this way ASCII key inputs can be used to initiate various routines. A special instruction enables an internal clock, which is the XTAL frequency divided by three to be output on pin TO. This clock can be used as a general-purpose clock in the user's system. This instruction should be used only to initialize the system since the clock output can be disabled only by application of system reset. 14.0.6 Subroutines 14.0.9. Input/Output Instructions Subroutines are entered by executing a call instruction. Calls can be made like unconditional jumps to any address in a 2K word bank, and jumps across the 2K boundary are executed in the same manner. Two separate return instructions determine whether or not status (upper 4-bits of PSW) is restored upon return from the subroutine. Ports 1 and 2 are 8-bit static I/O ports which can be loaded to and from the accumulator. Outputs are statically latched but inputs are not latched and must be read while inputs are present. In addition, immediate data from program memory can be ANDed or ORed directly to Port I and Port 2 with the result remaining on the port. This allows "masks" stored in program memory to selectively set or reset individual bits of the I/O ports. Ports 1 and 2 are configured to allow input on a given pin by first writing a "I" out to the pin. The return and restore status instruction also signals the end of an interrupt service routine if one has been in progress. 14.0.7 Timer Instructions The 8-bit on board timer/counter can be loaded or read via the accumulator while the counter is stopped or while counting. The counter can be started as a timer with an internal clock source or an event counter or timer with an external clock applied to the Tl input pin. The instruction executed determines which clock source is used. A single instruction stops the counter whether it is operating with an internal or an external clock source. In addition, two instructions allow the timer interrupt to be enabled or disabled. 14.0.8 Control Instructions Two instructions allow the external interrupt source to be enabled or disabled. Interrupts are initially disabled and are automatically disabled while an interrupt service routines is in progress and re-enabled afterward. There are four memory bank select instructions, two to designate the active working register bank and two to control program memory banks. The operation of the program memory bank switch is explained in section 13.1.2. An 8-bit port called BUS can also be accessed via the accumulator and can. have statically latched outputs as well. It too can have immediate data ANDed or ORed directly to its outputs, however, unlike ports 1 and 2, all eight lines of BUS must be treated as either input or output at anyone time. In addition to being a static port, BUS can be used as a true synchronous bi-directional port using the Move External instructions used to access external data memory. When these instructions are executed, a corresponding READ or WRITE pulse is generated and data is valid only at that time. When data is not being transferred, BUS is in a high impedance state. Note that the OUTL, ANL, and the ORL instructions for the BUS are for use with internal program memory only. The basic three on-board I/O ports can be expanded via a 4-bit expander bus using half of port 2. I/O expander devices on this bus consist of four 4-bit ports which are addressed as ports 4 through 7. These ports have their own AND and OR instructions like the on-board ports as well as move instructions to transfer data in or out. The expander AND and OR instructions, however, combine the contents of accumulator with the selected port rather than immediate data as is done with the on-board ports. 14-3 MCS®-48 INSTRUCTION SET I/O devices can also be added externally using the BUS port as the expansion bus. In this case the 1/0 ports become "memory mapped" , i.e., they are addrl:ssed in the same way as external data memory and exist in the external data memory address space addressed by pointer register RO or Rl. The alphabetical listing includes the following information. • Mnemonic • Machine Code • Verbal Description • Symbolic Description • Assembly Language Example The machine code is represented with the most significant bit (7) to the left and two byte instructions are represented with the first byte on the left. The assembly language examples are formulated as follows: 14.1 INSTRUCTION SET DESCRIPTION The following pages describe the MCS®-48 instruction set in- detail. The instruction set is first summarized with instructions grouped functionally. This summary page is followed by a detailed description listed alphabetically by mnemonic opcode. Arbitrary Label: Mnemonic, Operand; Descriptive Comment 14-4. MCS@·48INSTRUCTION SET S04SAH/S74SH/S049AH/S050AH/8749H Instruction Set Summary Mnemonic Oescrtptlon Mnemonic Bytes Cycle XRLA,@R XRL, A, # data INCA DECA CLRA CPLA DAA SWAP A RLA RLCA RRA RRCA INCR INC@R DECR Add register to A Add data memory to A Add immediate to A Add register with carry Add data memory with carry Add immediate with carry And register to A And data memory to A And immediate to A Or register to A Or data memory to A Or immediate to A Exclusive Or register toA Exclusive or data memory to A Exclusive or immediate to A Increment A Decrement A Clear A Complement A Decimal adjust A Swap nibbles of A Rotate A left Rotate A left through carry Rotate A right Rotate A right through carry 1 1 2 1 1 1 1 2 1 1 2 2 1 1 2 1 1 2 1 1 1 2 1 1 2 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Input port to A Output A to port And immediate to port Or immediate to port Input BUS to A Output A to BUS And immediate to BUS 1 1 2 2 1 1 2 2 2 2 2 2 2 2 Or immediate to BUS 2 2 Input Expander port toA Output A to Expander port And A to Expander port Or A to Expander port 1 2 MOVA,#data MOVR,A MOV@R,A MOVD P, A 1 2 ANLD P,A ORLD P, A MOV R, # data 1 1 2 2 MOV@R, # data MOVA,PSW MOVPSW,A Increment register Increment data memory Decrement register 1 1 1 1 1 1 Jump unconditional Jump indirect Decrement register and jump Jump on carry =1 Jump on carry =0 Jump on A Zero Jump on A not Zero Jump on TO =1 Jump on TO =0 Jump on T1 =1 Jump on T1 =0 Jump on FO =1 Jump on F1 =1 Jump on timer flag =1 Jump on INT =0 Jump on Accumulator Bit 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 Jump to subroutine Return Return and restore status 2 1 1 2 2 2 Clear Carry Complement Carry Clear Flag 0 Complement Flag 0 Clear Flag 1 Complement Flag 1 1 1 1 1 1 1 1 1 1 1 1 1 Move register to A Move data memory toA Move immediate to A Move A to register Move A to data memory Move immediate to register Move immediate to data memory Move PSW to A MoveAtoPSW 1 1 1 1 2 1 1 2 1 1 2 2 2 2 1 1 1 1 Branch JMP addr JMPP@A DJNZ R, addr JC addr JNC addr JZ addr JNZ addr JTO addr JNTO addr JT1 addr JNT1 addr JFO addr JF1 addr JTF addr JNI addr JBb addr Subroutine CALL addr RET RETR Flags CLRC CPLC CLR FO CPL FO CLR F1 CPL F1 Input/Output INA,P OUTL P,A ANL P, # data ORL P, # data 'INS A, BUS 'OUTL BUS, A 'ANL BUS, # data 'ORL BUS, # data MOVDA, P Bytes Cycles Registers Accumulator ADD A, R ADDA,@R ADD A, # data AD DC A, R ADDCA, @R ADDCA, # data ANLA, R ANLA,@R ANLA, # data ORLA, R ORLA@R ORL A, # data XRL A, R Description Data Moves MOVA, R MOVA,@R Mnemonics copyright Intel Corporation 1983. 'For use with internal memory only. 14-5 MCS®·481NSTRUCTION SET 8048AH/8748H/8049AH/8050AH/8749H Instruction Set Summary (Con't) Mnemonic Description Data Moves (Confd) XCH A, R DIS TCNTI Mnemonic Control EN I Exchange A and register XCH A,@R Exchange A and data memory XCHDA,@R Exchange nibble of A and register MOVXA,@R Move external data memory to A MOVX@R,A Move A to external data memory MOVPA,@A Move to A from current page MOVP3A,@A Move to A from Page 3 Timer/Counter MOVA. T MOVT.A STRTT STRTCNT STOP TCNT EN TCNTI Bytes Cycle Read Timer/Counter Load Timer/Counter Start Timer Start Counter Stop Timer/Counter Enable Timer/Counter Interrupt Disable Timer/Counter Interrupt 1 1 1 1 1 1 1 2 1 2 1 2 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 DISI SEL RBO SEL RB1 SEL MBO SEL MB1 ENTOCLK NOP Description Bytes Cycle Enable external Interrupt Disable external Interrupt Select register bank 0 Select register bank 1 Select memory bank 0 Select memory bank 1 Enable clock output onTO 1 1 1 1 1 1 1 1 1 1 1 1 1 1 No Operation 1 1 Mnemonics copyright Intel Corporation 1983. 14-6 MCS®-48 INSTRUCTION SET Symbols and Abbreviations Used A AC addr Bb BS BUS C ClK CNT CRR D data DBF FO, F1 I P PC Pp PSW Ri Rr SP T TF TO, T1 X # @ $ (X) ((X» - ,Accumulator Auxiliary Carry 12-Bit Program Memory Address Bit Designator (b = 0-7) Bank Switch BUS Port Carry Clock Event Counter Conversion Result Register Mnemonic for 4-Bit Digit (Nibble) 8-Bit Number or Expression Memory Bank Flip-Flop Flag 0, Flag 1 Interrupt Mnemonic for "in-page" Operation Program Counter Port Designator (p = 1, 2 or 4-7) Program Status Word Data memory Pointer (i = 0, or 1) Register Designator (r = 0-7) Stack Pointer Timer Timer Flag Test 0, Test 1 Mnemonic for External RAM Immediate Data Prefix Indirect Address Prefix Current Value of Program Counter Contents of X Contents of location Addressed by X Is Replaced by Mnemonics copyright Intel Corporation 1983. 14-7 MCS®-48 INSTRUCTION SET ADD A,R r Add Register Contents to Accumulator Encoding: I0 1 1 0 I 1 r rr I 68H-6FH Description: The contents of register 'r' are added to the accumulator. Carry is affected. Operation: (A) - r = 0-7 (A) + (Rr) Example: ADDREG: ADD A,R6 ;ADD REG 6 CONTENTS ;TOACC ADD A,@R1 Add Data Memory Contents to Accumulator Encoding; I0 1 1 0 I 0 0 0 i I 60H-61H Description: The contents of the resident data memory location addressed by register 'i' bits O-S** are added to the accumulator. Carry is affected. i = 0-1 ;MOVE '1 F' HEX TO REG 0 ;ADD VALUE OF LOCATION ;31 TO ACC Operation: (A) - (A) + ((Ri)) Example: ADDM: MOV RO, #01 FH ADD A, @RO ADD A,#data Encoding: Add Immediate Data to Accumulator I0 0 0 0 I 0 0 1Il I d7 I d6 dS d4 d3 d2 d1 dO I 03H Description: This is a 2-cycle instruction. The specified data is added to the accumulator. Carry is affected. Operation: (A) - (A) + data Example: ADDID: ADD A,#ADDER: ADDC A,R r Encoding: ;ADD VALUE OF SYMBOL ;ADDER' TO ACC Add Carry and Register Contents to Accumulator I0 1 1 1 I 1 r r r I 78H-7FH Description: The content of the carry bit is added to accumulator location 0 and the carry bit cleared. The contents of register 'r' are then ,added to the accumulator. Carry is affected. Operation: (A) - r = 0-7 (A) + (Rr) + (C) Example: ADDRGC: AD DC A,R4 ;ADD CARRY AND REG 4 ;CONTENTS TO ACC •• 0-5 in 8048AH/8748H 0-6 in 8049AH/8749H 0-7 in 8050AH 14-8 MCS®-48 INSTRUCTION SET ADDC A,@Ri Add Carry and Data Memory Contents to Accumulator Encoding: 1a 1 1 1 1 a a Oil 70H-71H Description: The content of the carry bit is added to accumulator location 0 and the carry bit cleared. Then the contents of the resident data memory location addressed by register 'j' bits 0-5** are added to the accumulator: Carry is affected. Operation: (A) - (A) + «Ai» + (C) i = 0-1 Example: ADDMC: MOV A1,#40 ADDCA,@A1 ADDC A,@data Encoding: 10 ;MOVE '40' DEC TO AEG 1 ;ADD CARAY AND LOCATION 40 ;CONTENTS TO ACC Add Carry and Immediate Data to Accumulator a a 1 1a a 1 11 I d7 d6 d5 d4 I d3 d2 d1 dO I 13H' Description: This is a 2-cycle instruction. The content of the carry bit is added to accumulator location a and the carry bit cleared. Then the specified data is added to the accumulator. Carry is affected. Operation: (A) - (A) + data + (C) Example: AD DC A,#225 ANL A,R r ;ADD CAAAY AND '225' DEC ;TOACC Logical AND Accumulator with Register Mask Encoding: 10 1 a 1 11 r r r I 58H-5FH Description: Data in the accumulator is logically ANDed with the mask contained in working register 'r'. Operation: (A) - r = 0-7 (A) AND (Ar) Example: ANDAEG: ANL A,A3 ANL A,@Ri ;'AND' ACC CONTENTS WITH MASK ;IN REG 3 Logical AND Accumulator with memory Mask Encoding: 10 1 a 1 10 a Oil 50H-51H Description: Data in the accumulator is logically ANDed with the mask contained in the data memory location referenced by register 'i' bits 0-5**. Operation: (A) - (A) AND«Ai» i = 0-1 ;MOVE '3F' HEX TO AEG a ;'AND' ACC CONTENTS WITH ;MASK IN LOCATION 63 Example: ANDDM: MOV AO,#03FH ANL A, @AO ** 0-5 in 8048AH/8748H 0-6 in 8049AH/8749H 0-7 in 8050AH 14-9 MCS@-48INSTRUCTION SET ANL ~,#data Logical AND Accumulator with Immediate Mask Encoding: 10 1 0 1 I0 0 1 1 1 53H Description: This is a 2-cycle instruction. Data in the accumulator is logically ANDed with an immediately-specified mask. Operation: (A) - (A) AND data ;'AND' ACC CONTENTS ;WITH MASK 10101111 ;'AND' ACC CONTENTS ;WITH VALUE OF EXP ;'3 + Xy/y' Examples: ANDID: ANL A,#OAFH ANL A,#3 + X/Y ANL BUS,#data* Logical AND BUS with Immediate Mask 98H Encoding: 11 0 0 1 11 0 0 0 1 Description: This is a 2-cycle instruction. Data on the BUS port is logically ANDed with an immediately-specified mask. This instruction assumes prior specification of an 'OUTL BUS, A' instruction. Operation: (BUS) - (BUS) AND data Example: ANDBUS: ANL BUS,#MASK ANL Pp,#data ;'AND' BUS CONTENTS ;WITH MASK EQUAL VALUE ;OF SYMBOL 'MASK' Logical AND Port 1-2 with Immediate Mask Encoding: 11 001 11 0 P pi Id7 de d5 d41 d3 d2 d1 dol 99H-9AH Description: This is a 2-cycle instruction. Data on port 'p' is logically ANDed with an immediately-specified mask. Operation: (Pp) - p = 1-2 (Pp) AND DATA ;'AND' PORT 2 CONTENTS ;WITH MASK 'FO' HEX ;(CLEAR P20-23) Example: ANDP2: ANL P2,#OFOH • For use with internal program memory ONLY. 14-10 MCS®-48 INSTRUCTION SET ANLD Pp,A Logical AND Port 4-7 with Accumulator Mask Encoding: 11 0 0 1 11 1 P P 1 9CH-9FH Description: This is a 2-cycle instruction. Data on port 'p' is logically ANDed with the digit mask contained in accumulator bits 0-3. Operation: (Pp) - (Pp) AND (AO-3) P = 4-7 Note: The mapping of port 'p' to opcode bits 0-1 is as follows: 1 0 Port 00 01 10 11 4 5 6 7 Example: ANDP4: ANLD P4,A CALL address ;'AND' PORT 4 CONTENTS ;WITH ACC BITS 0-3 Subroutine Call I Encoding: , a10 a9 as 1 0 1 0 0 I Page Hex Op Code o 1 2 3 4 5 6 7 14 34 54 74 94 B4 D4 F4 Description: This is a 2-cycle instruction. The program counter and PSW bit!! 4-7 are saved in the stack. The stack pointer (PSW bits 0-2) is updated. Program control is then passed to the location specified by 'address'. PC bit 11 is determined by the most recent SEL MB instruction. A CALL cannot begin in locati'ons 2046-2047 or 4094-4095. Execution continues at the instruction following the CALL upon return from the subroutine. Operation: ((SP)) - (PC), (PSW4-7) (SP) - (SP) + 1 (PCS- 10) - (addrS_10) ( PCO- 7) - (addrO_7) (PC11) - DBF 14-11 MCS@-48INSTRUE::TION SET Example: Add three groups of two numbers. Put subtotals in locations 50, 51 and total in location 52. ;MOVE '50' DEC TO ADDRESS ;REGO ;MOV~ CONTENTS OF REG 1 . ;TOACC ;ADD REG 2 TO ACC ;CALL SUBROUTINE 'SUBTOT' ;ADD REG 3 TO ACC ;ADD REG 4 TO ACC ;CALL SUBROUTINE 'SUBTOT' ;ADD REG 5 TO ACC ;ADD REG 6 TO ACC ;CALL SUBROUTINE 'SUBTOT' ;MOVE CONTENTS OF ACC TO ;LOCATION ADDRESSED BY ;REGO ;INCREMENT REG 0 . ;RETURN TO MAIN PROGRAM MOV RO,#50 BEGADD: MOV A,R1 ADD A,R2 CALL SUBTOT . AD DC A R3 ADDC A,R4 CALL SUBTOT ADDC A,R5 ADDCA,R6 CALL SUBTOT SUBTOT: MOV @RO,A INC RO RET CLR A Clear Accumulator Encoding: 10 0 1 0 I0 1 11 27H Description: The contents of the accumulator are cleared to zero. Operation: A CLR C 0 Clear Carry Bit Encoding: 11 0 0 1 10 1 11 97H Description: During normal programe.xecution, the carry bit can be set to one by the ADD,ADDC, RLC, CPL C, RRC, and DAA insructions. This instruction resets the carry bit to zero. Operation: C CLR F1 0 Clear Flag 1 Encoding: 11 0 1 0 I0 1 0 1 1 A5H Description: Flag 1 is cleared to zero. Operation: (F1) - 0 14-12 MCS®-48 INSTRUCTION SET CLR FO Clear Flag 0 I Encoding: 11 0 0 0 1 0 1 0 1 8SH Description: Flag 0 is cleared to zero. Operation: (FO) CPL A 0 Complement Accumulator Encoding: 10 0 1 1 10 1 1 1 1 37H Description: The contents of the accumulator are complemented. This is strictly a one's complement. Each one is changed to zero and vice-versa. Operation: (A) - NOT (A) Example: Assume accumulator contains 01101010. CPLA: CPL A ;ACC CONTENTS ARE COMPLE;MENTED TO 10010101 CPL C Complement Carry Bit Encoding: 11 0 1 0 1 0 1 1 1 I A7H Description: The setting of the carry bit is complemented; one is changed to zero, and zero is changed to one. Operation: (C) - NOT (C) Example: Set C to one; current setting is unknown. CT01: CLR C ;C IS CLEARED TO ZERO CPL C ;C IS SET TO ONE CPL FO Complement Flag 0 Encoding: 11 0 0 1 1 0 1 0 11 '95H Description: The setting of flag 0 is complemented; one is changed to zero, and zero is changed to one. Operation: FO CPL F1 NOT (FO) Complement Flag 1 Encoding: 11 0 1 1 10 1 0 1/ BSH D!ilscrlptlon: The setting of flag 1 is complemented; one is changed to zero, and zero is changed to one. Operation: (F1) - NOT (F1) 14-13 MCS®·48 INSTRUCTION SET DA A Decimal Adjust Accumulator Encoding: I0 1 0 1 I0 1 1 11 57H Description: The S-bit accumulator value is adjusted to form two 4-bit Binary Coded Decimal (BCD) digits following the binary addition of BCD numbers. The carry bit C is affected. If the contents of bits 0-3 are greater than nine, or if AC is one, the accumulator is incremented by six. The four high-order bits are then checked. If bits 4-7 exceed nine, or if C is one, these bits are increased by six. If an overflow occurs, C is set to one. Example: Assume accumulator contains 10011011. DA A ;ACC Adjusted to 00000001 ;WITH C SET C AC 7 43 0 0010011011 ADD SIX TO BITS 0-7 00000110 1 0 1 0 0.0 0 1 ADD SIX TO BITS 4-7 1 1 0 OVERFLOW TO C 000 000 0 0 o DEC A o Decrement Accumulator Encoding: I0 0 0 0 10 1 1 1 I 07H Description: The contents of the accumulator are decremented by one. The carry flag is not affected. Operation: (A) +- (A) -1 Example: Decrement contents of external data memory location 63. MOV RO,#3FH ;MOVE '3F' HEX TO REG 0 MOVX A, @RO ;MOVE CONTENTS OF ;LOCATION 63 TO ACC DEC A ;DECREMENT ACC MOVX @RO,A ;MOVE CONTENTS OF ACC TO ;LOCATION 63 IN EXPANDED ;MEMORY DEC Rr Decrement Regh}ter Encoding: 11 1 0 0 I1 r r r 1 CSH-CFH Description: The contents of working register 'r' are decremented by one. Operation: (Rr) +- r = 0-7 (Rr) -1 Example: DEeR1: DEC R1 ;DECREMENT CONTENTS OF REG 1 14-14 MCS®-48 INSTRUCTION SET DIS I External Interrupt Encoding: I 0 0 0 1 I0 1 0 1 I 15H Description: External interrupts are disabled. A low signal on the no effect. DIS TCNTI int~rrupt input pin has Disable Timer/Counter Interrupt Encoding: 10 0 1 1 1 0 1 0 1 I 35H Description: Timer/counter interrupts are disabled. Any pending timer interrupt request is cleared. The interrupt sequence is not initiated by an overflow, but the timer flag is set and time accumulation continues. DJNZ Rr • address Decrement Register and Test Encoding: 11 1 1 0 11 r r r 1 1a7 a6 a5 a4 1a3 a2 a1 aO 1 E8H-EFH Description: This is a 2-cycle instruction. Register 'r' is decremented, thEm tested for zero. If the register contains all zeros, program control falls through to the next instruction. If the register contents are not zero, control jumps to the specified 'address'. The address in this case must evaluate to 8-bits, that is, the jump must be to a location within the current 256-location page. Example: (Rr) - (Rr) -1 r =0-7 If Rr not 0 (PCO-7) - addr Note: A 12-bit address specification does not cause an error if the DJNZ instruction and the jump target are on the same page. If the DJNZ instruction begins in location 255 of a page, it must jump to a target address on the following page. Example: Incre'ment values in data memory locations 50-54. MOV RO,#50 ;MOVE '50' DEC TO ADDRESS ;REGO MOV R3,#5 ;MOVE '5' DEC TO COUNTER ;REG3 INCRT: INC @RO ;INCREMENT CONTENTS OF ;LOCATION ADDRESSED BY ;REGO INC RO ;INCREMENT ADDRESS IN REG 0 DJNZ R3, INCRT ;DECREMENT REG 3 - JUMP TO ;'INCRT' IF REG 3 NONZERO NEXT ;'NEXT' ROUTINE EXECUTED ;IF R3 IS ZERO 14-15 MCS®~48 INSTRUCTION SET EN I Enable External Interrupt Encoding: 10 0 0 0 10 1 0 1 1 05H Description: External interrupts are enabled. A low signal on the interrupt input pin initiates the interrupt sequence. EN TCNTI Enable Timer/Counter Interrupt I Encoding: 10 0 1 0 0 1 0 1 I 25H Description: Timer/counter interrupts are enabled. An overflow of the timer/cc;>unter initiates the interrupt sequence. ENTO ClK Enable Clock Output I Encoding: 10 1 1 1 0 1 0 1. I 75H Description: The test 0 pin is enabled to act as the clock output. This function is disabled by a system reset. Example: EMTSTO: ENTO ClK IN A,Pp ;ENABlE TO AS CLOCK OUTPUT Input Port or Data to Accumulator Encoding: 10 0 0 0 11 0 P P 1 09H-OAH Description: This is a 2-cycle instruction. Data present on port 'p' is transferred (read) to the accumulator. p = 1-2 ;INPUT PORT 1 CONTENTS TO ACC ;MOVE ACC CONTENTS TO REG 6 ;INPUT PORT 2 CONTENTS TO ACC ;MOVE ACC CONTENTS TO REG 7 Operation: (A) - (Pp) INP12: IN A,P1 MOV R6,A INA,P2 MOV R7,A INC A Increment Accumulator Encoding: I0 0 0 1 1 0 1 1 1\ 17H Description: The contents of the accumulator are incremented by one. Carry is not affected. Operation: (A) - (A) +1 14·16 MCS®-48 INSTRUCTION SET Example: Increment contents of location 100 in external data memory. INCA: MOV RO,#100 ;MOVE '100' DEC TO ADDRESS REG 0 MOVX A,@RO ;MOVE CONTENTS OF LOCATION ;100 TO ACC INC A ;INCREMENT A MOVX @RO,A ;MOVE ACC CONTENTS TO ;LOCATION 101 INC Rr Increment Register Encoding: 10 0 0 1 11 r r r I 18H-1FH Description: The contents of working register 'r' are incremented by one. Operation: (Rr) - (Rr) + 1 r = 0-7 Example: INCRO: INC RO ;INCREMENT CONTENTS OF REG 0 INC @R1 Increment Data Memory Location Encoding: I0 0 0 1 I 0 0 0 i I 10H-11 H Description: The contents of the resident data memory location addressed by register 'i' bits 0-5** are incremented by one. . Operation: ((Ri)) - i = 0-1 ({Ri)) + 1 ;MOVE ONES TO REG 1 ;INCREMENT LOCATION 63 Example: INCDM: MOV R1,#03FH INC @R1 INS A,BUS* Strobed Input of BUS Data to' Accumulator Encoding: I0 0 0 0 I 1 0 0 0 I 08H Description: This is a 2-cycle instruction. Data present on the BUS port is transferred . (read) to the accumulato~ when the RD pulse is dropped. (Refer to section on programming memory expansion for details.) Operation: (A) - (BUS) Example: INPBUS: INS A,BUS ;INPUT BUS CONTENTS TO ACC * For use with internal program memory ONLY. ** 0-5 in B048AH/8748H . 0-6 in 8049AH/8749H 0-7 in 8050AH 14-17 MCS®~48INSTRUCTION seT JBb address ' Jump If Accumulator Bit Is Set Accumulator Bit Hex Op Code o 12 32 52 72 1 2 3 4 5 6 02 7 F2 92 B2 Description: This is a 2-cycle instruction. Control passes to the specified address if accumulator bit 'b' is set to one. b = 0-7 If Bb = 1 If Bb = 0 ;JUMP TO 'NEXT' ROUTINE ;IF ACC BIT 4 = 1 Operation: (PCO-7) - addr (PC) = (PC) + 2 Example: JB4IS1: JB4 NEXT JC address Jump If Carry Is Set Encoding: 11 1 1 1 1 0 1 1 0 I 1a7 a6 a5 a4 Ia3 a2 a1 aO I F6H Description: This is a 2-cycle instruction. Control passes to the specified' address if the carry bit is set to one. If C = 1 IfC=O Operation: (PCO-7) - addr (PC) = (PC) + 2 Example: JC1: JC OVFLOW ;JUMP TO 'OVFLOW' ROUTINE ;IF C == 1 Description: This is a 2-cycle instruction. Control passes to the specified address if flag 0 is set to one. Operation: (PCO-7) - addr (PC) =(PC) + 2 If FO = 1 If FO = 0 ;JUMP TO 'TOTAL' ROUTINE IF FO = 1 Example: JFOIS1: JFO TOTAL 14-18 MCS®·48 INSTRUCTION SET JF1 address Jump If Flag 1 Is Set Encoding: 10 1, 1 1 10 1 1 0 1 1a7 a6 as a41 a3 a2 a1 aol 76H Description: This is a 2-cycle instruction. Control passes to the specified address if flag 1 is set to one. Operation: (PCO-7):O- addr (PC) =(PC + 2) If F1 = 1 If F1 = 0 ;JUMP TO 'FILBUF' ;RbuTINE IF F1= 1 Example: JF1IS1: JF1 FILBUF JMP address Direct Jump within 2K Block Page Hex Op Code 0 1 2 3 4 [; 6 7 04 24 44 64 84 A4 C4 E4 , ' . Description: This is a 2-cycle instruction. Bits 0-10 of the program counter are replaced with the directly-specified address. The setting of PC bit 11 is determined by the most recent SELECT MB instruction. Operation: (PC8-10) - addr 8-10 (PCO-7) - addr 0-7 (PC11) - DBF ;JUMP TO SUBROUTINE 'SUBTOT ;JUMP TO INSTRUCTION SIX ;LOCATIONS BEFORE CURRENT ;LOCATION ;JUMP TO ADDRESS '2F' HEX Examplel JMP SUBTOT JMP $-6 JMP 2FH JMPP @A Indirect Jump within Page I Encoding: 11 0 1 1 0 0 1 1 I B3H Description: This is a 2-cycle insruction. The contents of the program memory location pointed to by the accumulator are substituted for the 'page' portion of the program counter (PC bits 0-7). 14.19 MCS@I·4$ INSTRUCTION SET' Operation: (PCO-7) - ((A)) Example: Assume accumulator contains OFH. JMPPAG: JMPP @A ;JUMP TO ADDRESS STORED IN ;LOCATION 151N CURRENT PAGE JNC address Jump If Carry Is Not Set I' Encoding: 11 1 1 0 10 1 1 0 1 1a7 a6 a5 a4 1a3 a2 a1 aO ESH Description: This is a 2-cycle instruction. Control passes to the specified address, if the carry bit is npt set, thatis, equals zero. If C = 0 If C = 1 Operation: (PCO-7) - addr (PC) = (PC) + 2 ;JUMP TO 'NOVFLO' ROUTINE. ;IF C= 0 Example: JCO: JNC NOVFLO JNI address Jump If Interrupt Input Is Low Encoding: 11 0 0 0 10 1 1 0 1 1a7 as a5 a41 a3 a2 a1 aO 1 B6H Description: This is a 2-cycle instruction. Control passes to the specified address if the interrupt input signal is low (= 0), that is, an external interrupt has been signaled. (This signal initiates an interrupt service sequence if the external interrupt is enabled.) Operation: (PCO-7) - addr (PC) = (PC) + 2 Example: LOC 3: JNI EXTINT If I = 0 If I = 1 ;JUMP TO 'EXTINT' ROUTINE ;IF I = 0 JNTO address Jump If Test 0 is Low Encoding: 10010101101 ja7a6asa41a3a2a1 aol 2SH a Description: This is 2-cycle instruction. Control passes to the specified address, if the test 0 signal is low. If TO = 0 If TO = 1 Operation: (PCa':"7) - addr (PC) = (PC) + 2 Example: JTOLOW: JNTO 60 ;JUMP TO LOCATION 60 DEC ;IF TO = 0' 14-20 MCS®-48 JNT1 address INST~UCTION SET Jump If Test 1 Is Low Encoding: 10 1 0 0 I0 1 1 0 I Ia7 a6 a5 a4 Ia3 a2 a1 aO I 46H Description: This is a 2-cycle instruction. Control passes to the specified address, if the test 1 signal is low. If T1 = 0 If T1 = 1 Operation: (PCO-7) - addr (PC) = (PC) + 2 JNZ Address Jump If Accumulator Is Not Zero Encoding: 11 0 0 1 1 0 1 1 0 1 Ia7 a6 a5 a4 Ia3 a2 a1 aO I 96H Description: This is a 2-cycle instruction. Control passes to the specified address if the accumulator contents are nonzero at the time this instruction is executed. IfA#O If A = 0 Operation: (PCO-7) - addr (PC) = (PC) + 2 Example: JACCNO: JNZ OABH JTF address Encoding: ;JUMP TO LOCATION 'AB' HEX ;IF ACC VALUE IS NONZERO Jump If Timer Flag Is Set I0 0 0 1 I0 1 1 0 I Ia7 a6 a5 a4 I a3 a2 a1 aO I 16H Description: This is a 2-cycle instruction. Control passes to the specified address if the timer flag is set to one, that is, the timer/counter register has overflowed. Testing the timer flag resets it to zero. (This overflow initiates an interrupt service sequence if the timer-overflow interrupt is enabled.) If TF = 1 If TF = 0 Operation: (PCO-7) - addr (PC) = (PC) + 2 Example: JTF1: JTF TIMER JTO address Encoding: ;JUMP TO 'TIMER' ROUTINE ;IF TF = 1 Jump If Test 0 Is High I0 0 1 1 I0 1 1 0 I Ia7 a6 a5 a41 a3 a2 B1 aO I 36H Description: This is a 2-cycle instruction. Control passes to the specified address if the test 0 signal is high (= 1). If TO = 1 If TO= 0 Operation: (PCO-7) - addr (PC) = (PC) + 2 Example: JTOHI: JTO 53 ;JUMP TO LOCATION 53 DEC ;IF TO = 1 14-21 MCS®-48INSTf'UCTION SET JT1 address Jump If Test 1 Is High I0 1 0 1 I0 1 1 0 I Ia7 as as a41 a3 a2 a1 Encoding: aO 1 SSH Description: This is a 2-cycle instruction. Control passes to the specified address'if the test 1 signal is high (= 1). IfT1 = 1 If T1 = 0 Operation: (PCO-7) - addr (PC) = (PC) + 2 ;JUMP TO 'COUNT' ROUTINE ;IFT1 = 1 Example: JT1 HI: JT1 COUNT JZ address Jump If Accumulator Is Zero Encoding: 11 1 0 0 1 0 1 10 1 Ia7 as as a4 1a3 a2 a1 aO 1 CSH Description: This is a 2-cycle instruction. Control passes to the specified address if the accumulator contains all zeros at the time this instruction is executed. If A =0 If A =;f 1 Operation: (PC O- 7)'- addr (PC) = (PC) + 2 Example: JACCO: JZ OA3H MOV A,#data ;JUMP TO LOCATION 'A3' HEX ;IFACC VALUE IS ZERO Move Immediate Data to Accumulator Encoding: 1 0 0 1 0 I0 0 1 1 I 1a7 as as a4 1a3 a2 a1 aO 1 23H Description: This is a 2-cycle instruction. The 8-bit value specified by 'data' is loaded in the accumulator. Operation: (A) - data Example: MOV A,#OA3H MOV A,PSW ;MOVE 'A3' HEX TO ACC Move PSW Contents to Accumulator Encoding: 11 1 0 0 1 0 1 1 1 1 C7H Description: The contents of the program status word are moved to the accumulator. Operation: (A) - (PSW) Example: Jump to 'RB1SET' routine if PSW bank switch, bit 4, is set. BSCHK: Mov A,PSW ;MOVE PSW CONTENTS TO ACC JB4 RB1SET ;JUMP TO 'RB1SET' IF ACC BIT 4 = 1 14·22 MCS®·48 INSTRUCTION SET MOV A,R r Move Register Contents to Accumulator Encoding: 11 1 1 1 11 r r r 1 F8H-FFH Description: 8-bits of data are removed from working register 'r' into the accumulator. Operation: (A) - r = 0-7 (Rr) ;MOVE CONTENTS OF REG 3 TO ACC Example: MAR: MOV A,R3 MOV A,@Ri Move Data Memory Contents to Accumulator Encoding 11 1 1 1 10 00 i 1 FOH-F1H Description: The contents of the resident data memory location addressed by bits 0-5** of register 'i' are moved to the accumulator. Register 'i' contents are unaffected. Operation: "(A) - i ((Ri» Example: Assume R1 contains 00110110. MADM: MOV A,@R1 =0-1 ;MOVE CONTENTS OF DATA MEM ;LOCATION 54 TO ACC MOV A,T. Move Timer/Counter Cont.ents to Accumulator Encoding: 10 1 0 0 1 0 0 1 0 1 42H Description: The contents of the timer/event-counter register are moved to the accumulator. Operation: (A) - (T) Example: Jump to "EXIT" routine when timer reaches '64', that is, when bit 6 setassuming initialization 64, . TIMCHK: MOV.A,T ;MOVE TIMER CONTENTS TO ACC JB6 EXIT ;JUMP TO 'EXIT' IF ACC BIT 6 = 1 MOV pSW,A Move Accumulator Contents to PSW •• O-!;i in 8048AH/8748H 0-6 in 8049AH/8749H 0-7 in 8050AH 14-23 MCS®.-48 I NS:t"RUCl'ION SET MOV Rr,A Move Accumulator Contents to Register' Encoding: 11 0 1 0 11 r r r 1 A8H-AFH. Descrlptlom The contents of the accumulator are moved to register 'r'. Operation: (Rr) - (A) r = 0-7 Example: MRA: MOV RO,A MOV Rr,#data ;MOVE CONTENTS OF ACC TO REG 0 Move Immediate Data to Register Encoding: 11 011 1 B8H-BFH 1 r2 r1 rol Description: This is a 2-cycle instruction. The 8-bit value specified by 'data' is moved to register'r'. . . . Operation: (Rrf - r = 0-7 data Examples: MIR4: MOV R4,#HEXTEN MIR S: MOV RS,#PI*(R*R) MIR 6: MOV R6, #OADH MOV @ Ri,A ;THE VALUE OF THE SYMBOL ;'HEXTEN' IS MOVED INTO REG 4 ;THE VALUE OF THE EXPRESSION ;'PI*(R*R)' IS MOVED INTO REG S ;'AD' HEX IS MOVED INTO REG 6 Move Accumulator Contents to Data Memory Encoding: 11 0 1 0 I0 0 0 i I AOH-A1H Description: The contents of the accumulator are moved to the resident data memory location whose address is specified by bits O-S** of register 'i'. Register 'i' contents are unaffected. Operation: ((Ri)) - . i = 0-1 (A) Example: Assume RO contains 00000111. MDMA: MOV @RO,A, . MOV @ Rj,#data ;MOVE CONTENTS OF ACC TO ;LOCATION 7 (REG 7) Move Immediate Data to Data memory I Encoding: 11- 0 1 1 0 0 0 i I Id7 d6 dS d4. 1 d3 d2 d1 dO I BOH-B1H Description: This is a 2-cycle instruction. The 8-bit value specified by 'data' is moved to the resident d\'lta memory location addressed by register 'i', bits o-S**. Operation: ((Ri)) - data i =0-1 Examples: Move the hexadecimal value AC3F to locations 62-63. MIDM: MOV RO,#62 ;MOVE '62' DEC TO ADDR REG 0 MOV @RO,#OACH ;MOVE 'AC' HEX TO LOCATION 62 INC RO ;INCREMENT REG 0 to '63' MOV @RO,#3FH ;MOVE '3f' HEX TO LOCATION 63 ** 0-5 in 8048AH/8748H 0-6 in 8049AH/8749H 0-7 in 8050AH MCS®-48 INSTRUCTION SET MOV T,A Move Accumulator Contents to Timer/Counter Encoding: I0 1 1 0 10 0 1 0 1 62H Description: The contents of the accumulator are moved to the timer/event-counter register. Operation: (T) - (A) Example: Initialize and start event counter. ;CLEAR ACC TO ZEROS INITEC: CLR A MOVT,A ;MOVE ZEROS TO EVENT COUNTER START CNT ;START COUNTER MOVD A,Pp Move Port 4-7 Data to Accumulator Encoding: 10 0 0 0 11 1 p pi OCH-OFH Description: This is a 2-cycle instruction. Data on 8243 port 'p' is moved (read) to a~cumulator bits 0-3. Accumulator bits 4-7 are zeroed. Operation: (0-3) (4-7) - p (Pp) 0 =4-7 Note: Bits 0-7 of the opcode are used to represent ports 4-7. If you are coding in binary rather than assembly language, the mapping is as follows: Bits 10 Port 00 01 10 11 4 5 6 7 Example: INPPT5: MOVD A,P5 MOVD Pp,A Encoding: ;MOVE PORT 5 DATA TO ACC ;BITS 0-3, ZERO ACC BITS 4-7 Move Accumulator Data to Port 4-7 I0 O· 1 1 11 1 P P I 3CH-3FH Description: This is a 2-cycle instruction. Data in accumulator bits 0-3 is moved (written) to 8243 port 'p'. Accumulator bits 4-7 are unaffected. (See NOTE above regarding port mapping.) Operation: (Pp) - P = 4-7 (AO-3) Example: Move data in accumulator to ports 4 and ~. ;MOVE ACC BITS 0-3 TO PORT 4 ;EXCHANGE ACC BITS 0-3 and 4-7 ;MOVE ACC BITS 0-3 TO PORT 5 OUTP45: MOVD P4,A SWAP A MOVD P5,A 14-25 MCS®-48 INSTRUCTION S.ET MOVP A,@A Move Current Page Data to ~ccumulator Encoding: 11 0 1 0 1 0 0 1 1 1 A3H Description: The contents of the program memory location addressed by,the accumulator are moved to the accumulator. Only bits 0-7 of the program counter are affected, limiting the program memory reference to the ., current page. The program counter is restored following this operation. Operation: (PCO-7) - (A) (A) - «PC» Note: This is a 1-byte, 2-cycle instruction. If it appears in location 255 of a program memory page, @A addresses a location in the following page. Example: MOV128: MOV A,#128 MOVP A,@A MOVP3 A,@A ;MOVE '128' DEC TO ACC, ;CONTENTS OF 129th LOCATION IN ;CURRENT PAGE ARE MOVEDTOACC Move Page 3 Data to Accumulator Encoding: 11 1 1 0 1 0 0 1 1 1 E3H Description: This is a 2-cycle instruction. The contents of the program memory location (within page 3) addressed by the accumulator are moved to the accumulator. The program counter is restored following this operation. Operation: (PCO-7) - (A) (PC8-11) - 0011 (A) - «PC» Example: Look up ASCII equivalent of hexadecimal code in table contained at the beginning of page 3. Note that ASCII characters are deSignated by a 7-bit code; the eighth bit is always reset. TABSCH: MOV A,#OB8H ;MOVE 'B8'HEX TO ACC (10111000) ANL A,#7FH ;LOGICAL AND ACC TO MASK BIT ;7 (00111000) ;MOVE CONTENTS OF LOCATION '38' MOVP3 A,@A ;HEX IN PAGE 3 TO ACC (ASCII '8') Access contents of location' in page 3 labelled TAB1. Assume current program location is not in page 3. TABSCH: MOV A,#LOW TAB 1 ;ISOLATE BITS 0-7 OF LABEL ;APDRESS VALUE, MOVP3 A,@A ;MOVE CONTENTS OF PAGE3, ;LOCATION LABELED 'TAB1' 'rCACe 14-26 .MCS®-48 INSTRUCTION SET - - - - - - - - - - - - _ .. - - - - _.._ - - - - - - - - - - - - - _ . MOVX A,@RI Move External-Data-Memory Contents to Accumulator Encoding: 11 0 0 0 1 0 0 0 i 1 SOH-S1 H Description: This is a 2-cycle instruction. The contents of the external data memory location addressed by register 'i' are moved to the accumulator. Register 'i' contents are unaffected. A read pulse is generated. Operation: (A) - «Ri)) . i Example: Assume R1 contains 01110110. MAXDM: MOVX A,@R1 MOVX@Rj,A =0-1 ;MOVE CONTENTS OF LOCATION ;118 TO ACC Move Accumulator Contents to External/Data Memory Encoding: 11 0 0 1 1 0 0 0 i 1 90H-91H Description: This is a 2-cycle instruction. The contents of the accumulator are moved to the external data memory location addressed by register 'i'. Register 'i' contents are unaffected. A write pulse is generated. Operation: «Ri)) - A i = 0-1 Example: Assume RO contains 11000111. MXDMA: MOVX @RO,A NOP ;MOVE CONTENTS OF ACC TO ;LOCATION 1991N EXPANDED ;DATA MEMORY The NOP Instruction Encoding: 10 0 0 0 1 0 0 0 0 1 OOH Description: No operation is performed. Execution continues with the following instruction. ORL A,R r Logical OR Accumulator With Register Mask Encoding: 10 1 0 0 11 r r rl 4SH-4FH Description: Data in the accumulator is logically ORed with the mask contained in working register 'r'. Operation: (A) - (A) OR (Rr) r Example: ORREG: ORL A,R4 =0-7 ;'OR' ACC CONTENTS WITH ;MASK IN REG 4 14-27 MCS@·48 JNSTRUCTION SET ORL A,@RI Logical OR Accumulator With Memory Mask Encoding: 10 1 00 10 0 0 i 1 40H-41H Description: Data in the accumulator is logically ORed with the mask contained in the resident data memory locati.on referenced by register "i", bits 0-5**. Operation: (A) -- (A) OR ((Ri)) i = 0-1 Example: ORDM: MOV RO,#3FH;MOVE '3F' HEX TO REG 0 ORL A,@RO ;'OR' AC CONTENTS WITH MASK ;IN LOCATION 63 ORL A,#data Logical OR Accumulator With Immediate Mask I Encoding: 10 1 0 0 0 0 1 1 1 1d7 d6 d5 d4 1 d3 d2 d1 dO I 43H Description: This is a 2-cycle instruction. Data inthe accumulator is logically ORed with an immediately-specified mask. Operation: (A) -- (A) OR data ;'OR' ACC CONTENTS WITH MASK ;01011000 (ASCII VALUE OF 'X') Example: ORID: ORL A,#'X' ORL BUS,#data* Logical OR BUS With Immediate Mask 88H Encoding: 11 0 0 0 11 0 0 0 1 Description: This is a 2-cycle instruction. Data on the BUS port is logically ORed with an immediately-specified mask. This instruction assumes prior specification on an 'OUTL BUS,A' instruction. Operation: (BUS) -- (BUS) OR data Example: ORBUS: ORLBUS,#HEXMSK ORLPp, #data :'OR' BUS CONTENTS WITH MASK ;EQUAL VALUE OF SYMBOL 'HEXMSK' Logical OR Port 1 or 2 With Immediate Mask Encoding: 11 0 0 0 11 0 P pi 1d7 d6 d5 d4 I d3 d2 d1 dO I 89H-8AH Description: This isa 2-cycle instruction. Data on port 'p' is logically ORed with an immediately-specified mask. p = 1-2 Operation: (Pp) -- (Pp) OR data Example: ORP1: ORL P1, #OFFH ;'OR' PORT 1 CONTENTS WITH MASK ;'FF' HEX (SET PORT 1 TO ALL ONES) • For use with internal program memory ONLY. •• 0-5 in 8048AH/8748H 0-6 in 8049AH/8749H 0-7 in 8050AH 14-28 MCSS"48 INSTRUCTION SET ORlD Pp,A Encoding: logical OR Port 4-7 With Accumulator Mask I' 0 0 0 11 1 P P 1 8CH-8FH Description: This is a 2-cycle instruction. Data on port 'p' is logically ORed with the digit mask contained in accumulator. bits 0-3. Operation: (Pp) - p (Pp) OR (AO-3) Example: ORP7: ORlD P7.A =4-7 ;'OR' PORT 7 CONTENTS WITH ACC ;BITS 0-3 OUTl BUS,A* Output Accumulator Data to BUS Encoding: @1 0 0 10 0 1 0 I 02H Description: This is a 2-cycle instruction. Data residing in the accumulator is transferred (written) to the BUS port and latched. The latched data remains valid until altered by another OUTl instruction. Any other instruction requiring use of the BUS port (except INS) destroys the contents of the BUS latch. This includes expanded memory operations (such as the MOVX instruction). logical operations on BUS data (AND, OR) assume the OUTL BUS,A instruction has been issued previously. Operation: (BUS) - (A) Example: OUTLBP: OUTL BUS, A OUTl Pp,A ;OUTPUT ACC CONTENTS TO BUS Output Accumulator Data to Port 1 or 2 Encoding: 10 0 1 1 11 0 P pi 39H-3AH Description: This is a 2-cycle instruction. Data residing in the accumulator is transferred (written) to port 'p' and latched. Operation: (Pp) - P = 1-2 (A) Example: OUTLP: MOV A,R7 OUTL P2,A MOV A, R6 OUTL P1.A ;MOVE REG 7 CONTENTS TO ACC ;OUTPUT ACC CONTENTS TO PORT 2 ;MOV REG 6 CONTENTS TO ACC ;OUTPUT ACC CONTENTS TO PORT 1 • For use with internal program memory ONLY. 14-29 MGS®-48INSTR'l,JCTIONSET· RET Return Without PSW Restore Encoding: 11 0 0 0 !0 0 1 1/ 83H Descript!on: Ttlis is a ~-cycle instruction. The stack pointer (PSW bits 0-2) is decremented. The program counter is then restored from the stack. PSW bits 4-7 are not restored. Operation: (SP) - (SP)-1 (PC) -«SP» RETR Return with PSW Restore Encoding: 11 0 0 1 / 0 0 1 1 I 93H Description: This is a 2-cycle instruction. The stack pointer is decremented. The program counter and bits 4-7 of the PSW are then restored from the stack. Note that RETR should be used to return from an interrupt, but should not be used within the interrupt service routine as it signals the end of an interrupt routine by resetting the Interrupt in Progress flip-flop. Operation: (SP) +-- (SP)-1 (PC) - «SP» . (PSW 4-7)...,... «SP» 14-30 . MCS@-48 INSTRUCTION SET RL A Rotate Left without Carry Encoding: 11 1 1 0 I0 1 1 1 I E7H Description: The contents of the accumulator are rotated left one bit. Bit 7 is rotated' into the bit 0 position. Operation: (An + 1) - (An) (AO) - (A7) n = 0-6 Example: Assume accumulator contains 10110001. RLNC: RL A . ;NEW ACC CONTENTS ARE 01100011 RLC A Rotate Left through Carry Encoding: 11 1 1 1 I0 1 1 1 I F7H Description: The contents of the accumulator are rotated left one bit. Bit 7 replaces the carry bit; the carry bit is rotatd into the bit 0 position .. Operation: (An + 1) - (An) n =0-6 (AO) - ,(C) (C) - (A7) Example: Assume accumulator contains a 'signed' number; isolate sign without changing value. RLTC: CLR C ;CLEAR CARRY TO ZERO RL'CA ;ROTATE ACC LEFT, SIGN ;BIT (7) IS PLACED IN CARRY ;ROTATE ACC RIGHT - VALUE RRA ;(BITS 0-6) ISRES1b'RED, ;CARRY UNCHANGED, BIT 7 ;IS ZERO RR A Rotate Right without Carry Encoding: 10 1 1 1 I0 1 1 1 I 77H Description: The contents of the accumulator are rotated right one bit. Bit 0 is rotated into the bit 7 position. ' Operation: (An) (A7) - (An + 1) (AO) n = 0-6 Example: Assume accumulator contains 10110001. RRNC: RR A ;NEW ACC CONTENTS ARE 11011000 . 14-31 MCS®·48INSTR.UCTION SET RRC A Rotate Right through Carry Encoding: 10 1 1 0 10 1 1 11 67H Description: The contents of the accumulator are rotated right one bit. Bit 0 replaces the carry bit; the carry bit is rotated into the bit 7 position. n =0-6 Operation: (An) - (An + 1) (A7) - (C) (C) - (AO) Example: Assume carry is not set and accumulator contains 10110001. ;CAAAY IS SET AND ACC RATC: ARC A ;CONTAINS 01011000· SEL MBO Select Memory Bank 0 . Encoding: 11 1 1 0 1 0 1 0 1 1 E5H Description: PC bit 11 is set to zero on next JMP or CALL instruction. All references to program memory addresses fall within the range 0-2047. Operation: (DBF) - 0 Example: Assume program counter contains 834 Hex. SEL MBO ;SELECT MEMORY BANK 0 JMP $+20 ;JUMP TO LOCATION 58 HEX SEL MB1 Select Memory Bank 1 Encoding: 11 1 '·1 101 0 1 I F5H Description: PC bit 11 is set to one on next JMP or CALL instruction. All references to program memory addresses fall within the range 2048-4095. Operation: (DBF) - 1 .14-32 MCSI8~48 INSTRUCTION SET SEL RBO Select Register Bank 0 Encoding: 11 1 0 0 10 1 0 1 1 C5H Description: PSW bit 4 is set to zero. References to working registers 0-7 address data memory locations 0-7. This is the recommended setting for normal program execution. Operation: (BS) SEL RB1 0 Select Register Bank 1 Encoding: 11 1 0 1 10 1 0 1 1 D5H Description: PSW bit 4 is set to one. References to working registers 0-7 address data memory locations 24-31. This is the recommended setting for interrupt service routines, since locations 0-7 are left intact. The setting of PSW bit 4 in effect at the time of an interrupt is restored by the RETR instruction when the interrupt service routine is completed. Operation: (BS) - 1 Example: Assume an external interrupt has occurred, control has passed to program melTJory location 3, and PSW bit 4 was zero before the interrupt. Operation: LOC3: JNI INIT INIT: MOV R7,A SEL RB1 . MOV"R7.#OFAH SEL RBO MOVA,R7 RETR STOP TCNT Encoding: ;JUMP TO ROUTINE 'INIT' IF ;INTERRUPT INPUT IS ZERO ;MOVE ACC CONTENTS TO ;LOCATION 7 ;SELECT REG BANK 1 ;MOVE 'FA' HEX TO LOCATION 31 ;SELECT REG BANK 0 ;RESTORE ACC FROM LOCATION 7 ;RETURN - RESTORE PC AND PSW Stop Timer/Event-Counter I0 1 1 0 10 1 0 1.1 65H Description: This instruction is used to stop both time accumulation and event counting. 14·33 MCS@-48INSTRUCTION SET Example: Disable interrupt, but jump to interrupt routine after eight overflows and stop timer. Count overflows in r~gister 7. START: DIS TCNTI ;DISABLE TIMER INTERRUPT CLRA ;CLEAR ACC TO ZEROS iMOVE ZEROS TO TIMER MOVT,A MOV R7,A ;MOVEZEROSTO REG 7· STRTT ;START TIMER MAIN: JTF COUNT ;JUMP TO ROUTINE 'COUNT' ;IF TF = 1 AND CLEAR TIMER FLAG JMP MAIN ;CLOSE LOOP ;INCREMENT REG 7 COUNT: INC R7 MOVA,R7 ;MOVE REG 7 CONTENTS TO ACC JB31NT ;JUMP TO ROUTINE 'INT' IF ACC ;BIT 3 IS SET (REG 7 = 8) JMP MAIN ;OTHERWISERETURN TO ROUTINE ;MAIN ;STOP TIMER ;JUMP TO LOCATION 7 (TIMER) ;INTERRUPT ROUTINE INT: STOP TCNT JMP7H STRT CNT Encoding: Start Event Conter I0 1 0 0 I0 1 0 1 I 45H Description: The test 1 (T1) pin is enabled as the event-counter input and the counter is started. The event-counter register is incremented with each high-to-Iow transition on the T1 pin. Example: Initialize and start event counter. input. STARTC: EN TCNTI MOV A,#OFFH MOVT,A STRT CNT Assume overflow is desired with first T1 14-34 ;ENABLE COUNTER INTERRUPT ;MOVE 'FF'HEX (ONES) TO ACC ;MOVES ONES TO COUNTER ;ENABLE T1 AS COUNTER ;INPlJT AND START MCS@-48 INSTRUCTION SET STRT T Start Timer Encoding: 10 1 0 1 1 0 1 0 1 1 55H Description: Timer accumulation is initiated in the timer register. The register is incr.emented every 32 instruction cycles. The prescaler which counts the 32 cycles is cleared but the timer register is not. Example: Initialize and start timer. ;CLEAR ACC TO ZEROS ;MOVE ZEROS TO TIMER ;ENABLE TIMER INTERRUPT ;START TIMER STARTT: CLR A MOVT,A EN TCNTI STRTT SWAP A Swap Nibbles within Accumulator Encoding: 10 1 0 0 I0 1 1 1 I 47H Description: Bits 0-3 of the accumulator are swapped with bits 4-7 of the accumulator. Operation: (A 4-7)!:; (AO-3) Example: Pack bits 0-3 of locations 50-51 into location 50. ;MOVE '50' DEC TO REG 0 PCKDIG: MOV RO, #50 MOV R1, #51 ;MOVE '51' DEC TO REG 1 XCHDA,@RO ;EXCHANGE BITS 0-3 OF ACC ;AND LOCATION 50 ;SWAP BITS 0-3 AND 4-7 OF ACC SWAP A ;EXCHANGE BITS 0-3 OF ACe AND XCHDA,@R1 ;LOCATION 51 MOV@RO,A ;MOVE CONTENTS OF ACC TO ;LOCATION 50 XCH A,R r Exchange Accumulator-Register Contents Encoding: I0 0 1 0 11 r r r I 28H-2FH Description: The contents of the accumulator and the contents of working register 'r' are exchanged. Operation: . (A) !:; (Rr) r = 0-7 Example: Move PSW contents to Reg 7 without losing accumulator contents. XCHAR7: XCH A,R7 ;EXCHANGE CONTENTS OF AEG 7 ;AND ACC MOV A, PSW ;MOVE PSW CONTENTS TO ACC XCH A,R7 ;EXCHANGE CONTENTS OF REG 7 'AND ACC AGAIN 14-35 MCS@·48 INSTRUCTION SET. XCH A,@R, Exchange Accumulator and Data Memory Contents Encoding: 10 0 1 0 I 0 0 0 i 1 20H-21H Des~ription: The contents of the accumulator and the contents of the resident data memory location addressed bybits 0-5** of register 'i' are exchanged. Register 'i' contents are unaffected. Operation: (A) =; «Ri» i = 0-1 Example: Decrement contents of location 52. DEC52: MOV RO,#52 ;MOVE '52' DEC TO ADDRESS REG 0 ;EXCHANGE CONTENTS OF ACC . XCH A,@RO ;AND LOCATION 52 DECA ;DECREMENT ACC CONTENTS XCH A,@RO ;EXCHANGE CONTENTS OF ACC ;AND LOC.ATION 52 AGAIN XCHD A,@Ri Exchange Accumulator and Data Memory 4-81t Data Encoding: 10 0 1 1 1 0 0 0 i 1 30H-31H Description: This instruction exchanges bits 0-3 of the accumulator with bits 0-3 of th.e data :memory location addressed by bits 0-5** of register 'i'. Bits 4-7 of the accumulator, bits 4-7 of the data memory location, and the contents of register 'i' are unaffected. Operation: (AO-3) =; «RiO-3» i = 0-1 Example: Assume program counter contents have been stacked in locations 22-23. XCHNIB: MOV RO,#23 CLRA XCHD A,@RO XRL A,R r ;MOVE '23' DEC TO REG 0 ;CLEAR ACC TO ZEROS ;EXCHANGE BITS 0-3 OF ACC AND ;LOCATION 23 (BTS 8-11 OF PC ARE ;ZEROED, ADDRESS REFERS :TO PAGE 0) Logical XOR Accumulator With Register Mask Encoding: 11 1 0 1 11 r r r 1 D8H-DFH Description: Data in the accumulator is EXCLUSIVE ORed with the mask contained in working register 'r'. Operation: (A) - r = 0-7 (A) XOR (Rr) Example: XORREG: XRL A,R5 ;'XOR' ACC CONTENTS WITH ;MASK IN REG 5 •• 0-5 in S04SAH/S74SH 0-6 in S049AH/S749H 0-7 in S050AH 14-36 MCS®-48 INSTRUCTION SET XRL A,@Ri Logical XOR Accumulator With Memory Mask Encoding: 11 1 0 1 1 0 0 0 i 1 DOH-D1H Description: Data in the accumulator is EXCLUSIVE ORed with the mask contained in the data memory location addressed by register 'i', bits 0-5,** Operation: (A) - i =0-1 (A) XOR «Ri)) Example: XORDM: MOV R1 ,#20H XRL A,@R1 XRL A,#data ;MOVE '20' HEX TO REG 1 ;'XOR' ACC CONTENTS WITH MASK ;IN LOCATION 32 Logical XOR Accumulator With Immediate Mask I' I' Encoding: 1 0 1 10 0 1 1 1 1d7 dS dS d4 1 d3 d2 d1 dO D3H Description: This is a 2-cycle instruction. Data in the accumulator is EXCLUSIVE ORed with an immediately-specified mask. Operation: (A) - (A) XOR data Example: XORID: XOR A,#HEXTEN ;XOR CONTENTS OF ACC WITH MASK ;EQUAL VALUE OF SYMBOL 'HEXTEN' ** 0-5 in 8048AH/8748H 0-6 in 8049AH/8749H 0-7 in 8050AH 14-37 MCS®~48 Data Sheets 15 " ," ",' 8243 MCS®-48 INPUT/OUTPUT EXPANDER • 00 C to 700 C Operation PORT 4 PORT 5 PORT 2 PORT 6 PORT 7 Figure 1. 8243 Block Diagram 15-1 P50 Vee P40 P51 1'141 P52 PI42 P53 PI43 P50 cs Pel PROG Pe2 P23 Pe3 P22 P73 P21 P72 P20 P71 GNO P70 Figure 2. 8243 Pin Configuration 8243 Table 1. Pin Description Symbol Pin No. PROG Power On Initialization Function 7 Clock Input A high to low transition on PROG signifies 'that ad~ dress and contro'l are available on P20-P23, and a low to high transItion signifies that data IS available on P20-P23. CS Chip Select Input A hl'gh on CS 6 inhibits any change of output or internal status P20-P23 11-8 Four (4) bit bl-dlrectlonal port contains the address and control bits on a high to low trimsltlon of PROG Dunng a low to high transitton contains the data for a selected output port If a write operation, or the data from a selected port before the low to high transItion If a read operation. GND 12 o volt supply P40-P43 2-5 Four (4) bit bl-dlrectlOnall/O ports P50-P53 1,23-21 May be programmed to be Input P60-P63 20-17 (dunng read), low Impedance P70-P73 13-16 latched output (after write), or a tristate (after read). Data on pins P20-P23 may be directly wntten, ANDed O( ORed with prevIous data. 24 +5 volt supply VCC Initial application of power to the device forces 'input/output ports 4, 5, 6, and 7 to the tri-state and port 2 to the input mode. The PROG pin may ~e either high or low when power is applied. The first high to low transition of PROG causes device to exit power on mode The power on sequence is initiated if vee drops below 1V. P21 P20 0 0 Address Code 0 1 0 Port Port Port Port 4 5 6 7 P23 P22 0 0 0 1 0 Instruction Code Read Write ORlD ANlD Write Modes The device has three write modes. MOVD Pi, A directly writes new data into the selected port and old data is lost. ORlD Pi, A takes new data, OR's it with the old data and then writes it to the port. ANlD Pi, A takes new data, AND's it with the old data and then writes it to the port. Operation code and port address are latched from the input port 2 on the high to low transition of the PROGpin. On the lowto high transition of PROG data on port 2 is transferred to the logic block of the specified output port. After the logic manipulation IS performed, the data is latched and outputed. The old data remains latched until new valid outputs are entered. FUNCTIONAL DESCRIPTION General Operation The 8243 contains four 4-blt I/O ports which serve as an extension of the on-chip I/O and are addressed, as ports 4-7. The following operations may be performed on these ports. Read Mode All communication between the 8048 and the 8243 occurs over Port 2 (P20-P23) with timing provided by an output pulse on the PROG pin of the processor. Each transfer consists of two 4-bit nibbles: The device has one read mode. The operation code and port address are latched from the input port 2 on the high to low transition of the PROG pin. As soon as the read operation and port address are decoded, the appropriate outputs are tri-stated, and the input buffers switched on. The read operation is terminated by a low to high transition of the PROG pin. The port (4, 5, 6 or 7) that was selected is switched to the tri-stated mode while port 2 is returned to the input mode. The first containing the "op code" and port address and the second containing the actual 4-bits of data. A high to low transition of the PROG line indicates that address is present while a low to high transition indicates the presence of data. Additional 8243's may be added to the 4-bit bus and chip selected using additional output lines from the 8048/8748/ 8035. Normally, a port will be in an output (write mode) or input (read mode). If modes are changed during operation, the first read following a write should be ignored; all following reads are valid. This is to allow the external driver on the port to settle after the first read instruction removes the low impedance drive from the 8243 output. A read of any port will leave that port in a high impedance state. • • • • Transfer Accumulator to Port. Transfer Port to Accumulator. AND Accumulator to Port. OR Accumulator to Port. 15-2 8243 'NOTlCE: Stresses above those listed under "Absolute Maximum Ratings" may cause permanent damage to the device. This is a stress rating only and functional operation of the' device at these or any other conditions above those indicated in the operational sections of this specification is not implied. Exposure to absolute maximum rating conditions for extended periods may affect device reliability. ABSOLUTE MAXIMUM RATINGS· Ambient Temperature Under Bias. . . . . . .. O· C to 70· C Storage Temperature ............... -6S·C to +1S0·C Voltage on Any Pin WIth Respect to Ground .............. -0.5 V to +7V Power Dissipation ............................. 1 Watt D.C. CHARACTERISTICS Symbol (TA = o·c to 70·C. VCC = 5V Min Parameter ± 10%) Typ Max Units Test Conditions Vil Input low Voltage -O.S 0.8 V VIH Input High Voltage 2.0 VCC+O.S V VOU Output low Voltage Ports 4-7 0.45 V IOl = 4.5 mA" VOl2 Output low Voltage Port 7 1 V IOl = 20 mA VOH1 Output High Voltage Ports 4-7 2.4 Hll Input leakage Ports 4-7 -10 20 ,uA Vin = VCC to OV -10 10 0.45 ,uA Vm = VCC to OV 20 mA IOl = 0.6 mA Note 1 72 mA 4.5 mA Each Pin IIl2 Input leakage Port 2. CS. PROG VOl3 Output low Voltage Port 2 ICC VCC Supply Current VOH2 Output Voltage Port 2 IOl Sum of alilOl from 16 Outputs V 10 V IOH = 240,uA IOH = 100,uA 2.4 'See follOWing graph for addItional srnk current capability A.C. CHARACTERISTICS Symbol (TA =o·c to 70°C. Parameter VCC Min =5V ± 10%) Max Units Test Conditions tA Code Valid Before PROG SO ns tB Code Valid After PROG 60 ns 20 pF load te Data ValId Before PROG 200 ns 80 pF load to Data Valid After PROG 20 ns . 20 pF load tH Floatmg After PROG ns 20 pF load tK PROG NegatIve Pulse Width 700 tcs CS ValId Before/After PROG 50 tpo Ports 4-7 Valid After PROG tlPl Ports 4-7 Valid Before/After PROG tACC 0 lS0 ns ns 700 100 . Port 2 Valid After PROG ns 100 pF load ns 6S0 Note 1: ICC~(-40°C to 85°C EXPRESS options) 15 mA tYPIcall25 mA maximum. 15-3 80 pF load ns 80 pF load -- .::=x,......-:>~T-ESTPOINT-S<------..::x~ A C Testing Inputs are dnven al2 4V for d logIc' l' and 0 45V for a logic "0" Output liming measurements are made al 2 OV for a logic ''1' and 0 8V for a logic "0" WAVEFORMS PROG ~~~ PORT2 ______________ 'K ________________ ~ FLOAT FLOAT '~;1 OUTPUT PORT2 VALID ~'x IpO PORTS 4-7 OUTPUT VALID PREVIOUS OUTPUT VALID - "P PORTS 4-7 ',P INPUT VALID les les 8243 125 100 .. g :l 9 " 75 I- Z W II: II: " (J " Z iii 50 GUARANTEEO WORST CASE C~RRENT SINKING CAPABILITIES OF ANY 110 PORT PIN VS. TOTAL SINK CURRENT OF ALL PINS ~ 0 I- 25 10 11 12 13 MAXIMUM SINK CURRENT ON ANY PIN @ .45Y MAXIMUM IOL WORST CASE PIN,(mA) Figure 3 Example: This example shows how the use of the 20 mA sink capability of Port 7 affects the sinking capability of the other I/O lines. Sink Capability The 8243 can sink 5 mA@ .45V on each of its 161/0 lines simultaneously. If, however, all lines are not sinking simultaneously or all lines are not fully loaded., the drive capability of any individual line increases as is shown by the accompanying curve. An 8243 will drive the following loads simultaneously. For example, if only 5 of the 16 lines are to sink current at one time, the curve shows that each of those 5 lines is capable of sinking 9 mA @ .45V (if any lines are to sink 9 mA the total 10L must not exceed 45 mA or five 9 mA loads). 2 loads-20 mA@ lV (port 7 only) 8 loads-4 mA @ .45V 6 loads-3.2 mA @ .45V Is thiS within the specified limits? Example: How many pins can drive 5 TTL loads (1.6 mAl assuming remaining pins are unloaded? ,10l = (2 x 20) + (8 x 4) + (6 x 3.2) = 91.2 mAo From the curve. for 10l = 4 mA, ,10l = 93 mAo since 91.2 mA < 93 mA the loads are within specified limits. 10l =5 x 1.6 mA =8 mA dOL = 60 mA from curve # pins = 60 mA..;- 8 mA/pm = 7.5 = 7 In this case, 7 lines can sink 8 mA for a total of 56mA. This leaves 4 mA sink current capability which can be divided In any way among the remaining 8 I/O lines of the 8243. Although the 20 mA @ 1V loads are used in calculating dOL. It IS the largest current required @ .45V which determines the maximum allowable ,10l. NOTE: Al0 to 50KO pull up resistor to +5V should be added to 8243 outputs when driVing to 5V CMOS directly 15-5 inter 8243 -=CS I/O '4 I/O P5 I/O P6 I/O ., '/0 PROG TEST INPUTS 8048 8243 DATA IN P2O·P23 '2 Figure 4. Expander Interface PROG '20·'23 ~ -< I 10 X ADDRESS (4·BITSI BITS 3,2 g~ 11 DATA (4·8IT51 1 ~~~~E I OR ' AND BITS 1,0 00 01 10 > PORT ADDRESS 11, > Figure 5. Output Expander Timing PORT 1 8048 PROG~--------"------~--------------~----------------4---------------~ Figure 6. Using Multiple 8243's 15-6 inter , [pJ1Rl~[lJ Iilal ~INlfo\lRl 11' S04SAH/S035AHL/S049AH S039AHL/S050AH/S040AHL HMOS SINGLE-COMPONENT S-BIT MICROCOMPUTER • • • • • High Performance HMOS II Interval Timer/Event Counter Two Single Levellhterrupts Single 5-Volt Supply Over 96 Instructions; 90% Single Byte • • • • Reduced Pow~r C!>nsumption Compatible with 8080/8085 Peripl)erals Easily Expandable Memory and I/O Up to 1.36 ",Sec Instruction Cycle All Instructions 1 or 2 cycles The Intel MCS®·48 family are totally self-sufficient, 8-bit'parallel computers fabricated on single silicon chips using Intel's advanced N-channel silicon gate- HMOS process. The family contains 27 I/O lines, an 8-bit timer/counter, and on-board oscillator/clock circuits. For systems that require extra capability, the family can be expanded using MCS®-80/MCS®-85 peripherals. To minimize development problems and provide maximum flexibility, a logically and functionally pin-compatible version of the ROM devices with UV-erasable user-programmable EPROM program memory is available with ' minor differences. These microcomputers are designed to be efficient controllers as well as arithmetic processors. They have extensive bit handling capability as well as facilities for both binary and BCD,arithmetic. Efficient use of program memory results from an instruction set consisting mostly of single byte instructions .and no instructions over 2 bytes in length. Device RAM Standby Internal Memory I 256 x 8,BAM yes I I 128 x 8 RAM yes 64 x 8 RAM yes none I 256 x 8RAM yes 8039AHL none I 128 x 8RAM yes 8035AHl none I 64 x 8 RAM yes 8050AH 4K x 8 ROM 8049AH 2K x 8 ROM 8048AH 1K x 8 ROM 8040AHL 8048AH 8035AHL 8049AH 8039AHL 8OS0AH 8040AHL TO XTAL 1 XTAL 2 RE;SET 1 S5 INT 'EA AD PSEN P22 P21 P20 Figure 1. Block Diagram Figure 2. Logic Symbol 15-7 Figure 3. Pin Configuration inter 8048AH/8035AHL/8049AH 8039AHL/8050AH/8040AHL Table 1. Pin De$crlptlon Symbol Pin No. VSS 20 VDD 26 Pin Function Symbol RD Circuit GND potential No: 8 + 5V during 'normal operatiqn. Low power stanqby pin. + 5V VCC 40 Main power supply; during operation. PROG 25 Output strobe for 8243 I/O expander. P10-P17 Port 1 27-34 8-bit quasi-bidirectional port. P20-P23 P24-P27 Port 2 21-24 8-bit quasi-bidirectional port. 35-38 P20-P23 contain the four high order program counter bits during an external program memory fetch and serve as a 4-bit I/O expander bus for 8243. Used as a read strobe t6 external data memory. (Active low) RESET T1 WR INT 10 Input pin testable using the JT1, and JNT1 instructions. Can be designated the timer/ counter input using the STRT CNT instruction. 6 Interrupt input. Initiates an interrupt if interrupt is enabled. Interrupt is disabled after a reset. Also testable with conditional jump instruction. (Active low) interrupt must remain low for at least 3 machine cycles for proper operation. Output strobe during a bus write. (Active low) Used as write strobe to external data memory. ALE 11 Address latch enable. This signal occurs once during each cycle and is useful as a clock output. The negative edge of ALE strobes address into external data and program memory. PSEN 9 Program store enable. This output occurs only during a fetch to external program memory. (Active low) SS 5 Single step input can be used in conjunction with ALE to "single step" the processor through each instruction. (Active Low) EA 7 Input pin testable using the conditional transfer instructions JTO and JNTO. TO can be designated as a clock output using ENTO CLK instruction 39 Input which is used to initialize the processor. (Active low) (Non TTL VIH) Used during ROM verification. Contains the 8 low order program counter bits during an external program memory fetch, and receives the addressed instruction under the control of PSEN. Also contains the address and data during an external RAM data store instruction, under control of ALE, RD, and WR. 1 4 Used during power down. DBO-DB7 12-19 True bidirectional port which BUS can be written or read §y!!'chronously using the RD, WR strobes. The port can also be statically latched. TO "Function Output strobe ac\ivated during a BUS read. Can be used to enable data onto tl1e bus from an external device. Used in sync' mode External access input which forces all program memory fetches to reference external memory. Useful for emulation and debug. (Active high) Used during ROM verification (12V) 15-8 XTAL1 2 One side of'crystal input for internal oscillator. Also input for external source. (Non TTL VIH) XTAL2 3 Other side of crystal input. S04SAH/S035AHL/S049AH S039AHLlS050AH/S040AHL Table 2. Instruction Set Reglste,. Accumulator Mnemonic ADDA,A ADDA,@R ADD A, # data ADDCA, R ADDCA,@R Description Add register to A Add data memory to A Add immediate to A Add register with carry Add data memory with'carry ADDC A, # data Add immediate with carry ANLA, A And register to A ANLA,@A And data memory to A ANL A, # data And immediate to A ORLA, A Or register to A ORLA@R Or data memory to A ORLA,#data Or Immediate to A XRL A, R Exclusive or register toA XRLA,@R Exclusive or data memory to A XRL, A, # data Exclusive or immediate to A INCA Increment A DECA Decrement A CLRA Clear A CPLA Complement A DAA Decimal adjust A SWAP A Swap nibbles of A RLA Rotate A left RLCA Rotate A left th rough carry RRA Aotate A right RRCA Rotate A right through carry Mnemonic INCR INC@R DECR Byte. Cycl.. 1 1 1 1 2 1 1 2 1 1 2 2 1 1 2 1 1 2 1 1 1 2 1 1 2 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Branch Mnemonic JMPaddr JMPP@A DJNZR, addr JC addr JNCaddr JZaddr JNZ addr JTO addr JNTO addr JTl addr JNT1 addr JFO addr JFl addr JTF addr JNI addr JBb addr MOVDP, A ANLDP,A ORLDP,A Description Jump unconditional Jump indirect Decrement register and skip Jump on carry = 1 Jump on carry =0 Jump on A zero Jump on A not zero Jump on TO =1 Jump on TO =0 Jump on Tl = 1 Jump on T1 =0 Jumpon FO =1 Jump on Fl =1 Jump on timer flag Jurnp on INT =0 Jump on accumulator bit Byte. Cycle. 2 2 1 2 Description Jump to subroutine Return Retu rn and restore status Byte. Cycle. Description Clear carry Coml>lement carry Clear flag 0 • Complement flag 0 Clear flag 1 Complement flag 1 Byt.. Cycles J 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 Subroutine Mnemonic CALL addr RET RETR Input/Output Mnemonic INA, P OUTLP, A ANL P,#data ORL P,#data INS A, BUS OUTL BUS,A ANL BUS, # data ORL BUS, # data MOVDA, P Description Bytes Cycles Increment register 1 1 Increment daia memory Decrement register Description Byt.. Cycle. Input port to A 1 2 Output A to port 1 2 And immediate to port 2 2 Or immediate to port 2 2 Input BUS to A 1 2 Output A to BUS 1 2 And immediate to BUS 2 2 Or immediate to BUS 2 2 Input expander port 2 toA Output A to expander 2 port And A to expander port 2 Or A to expander port 2 2 2 2 2 Flag. Mnemonic CLR C CPLC CLR FO CPL FO CLR Fl CPLFl 15-9 8048AM/8035AHU8049AH 8039AH.U8050AH/8040AHL intel® Table 2. Instruction Set (Continued) Timer/Counter Data Moves Mnemonic MOVA, R MOVA,@R Description Move r!3gister to A Move data memory toA M0VA,#data Move immediate to A MOV R,A Move A to register MOV@R,A Move A to data memory MOV R,#data Move Immediate to register MOV @R, # data Move immediate to data memory MOVA,PSW Move PSW to A MOV PSW, A MoveAto PSW XCHA, R Exchange A and register XCHA,@R Exchange A and data memory XCHDA,@R Exchange nibble of A and register MOVXA,@R Move external data memory to A MOVX@R,A Move A to external data memory MOVPA,@A Move to A from cu rrent page MOVP3A,@ Move to A from page 3 [P)1Rl~1L~1%1I~lNIfo\lRl'V Bytes Cycles 1 1 2 2 2 2 2 2 .Mllemonlc MOVA, T MOVT,A StRTT STRT CNT STOP TCNT EN TCNTI DIS TCNTI Description Read timer/counter load timer/counter Start timer Start timer Stop timer/counter Enable timer/counter interrupt Disable timer/counter interrupt Bytas Cycles 1 1 Description Enable external interrupt Disable external interrupt Select register bank 0 Select register bank 1 Select memory bank 0 Select memory bank 1 Enable clock output onTO Bytes Cycles 1 1 Description No operation Select Idle Operation Bytes Cycles 1 1 1 Control Mnemonic EN I DISI 2 2 2 SElRBO SEl RBl SEl MBO SEl MBl ENTO ClK 2 Mnemonic NOP IDl 15-10 8048AH/8035AHl/8049AH 8039AHLl8050AH/8040AHL ABSOLUTE MAXIMUM RATINGS· 'NO neE: Stresses above those listed under "Absolute Maximum Ratings" may cause permanent damageto the device. This is a stress rating only' and functional operation of device at these or any other conditions above those indicated in the operational sections of this specification is not i,!,plied. Ambient Temperature Under Bias ... 0° C to 70° C Storage Temperature .......... -65°C to +150°C Voltage On Any Pin With Respect to Ground ..................... -0.5V to +7V Power Dissipation ..................... 1.5 Watt D.C. CHARACTERISTICS: (TA =O°C to 70°C; VCC =VDD =5V ± 10%; VSS =OV) Limits Symbol Parameter Min VIL Input Low Voltage (All Except RESET, X1, X2) VIL1 Inp~ Low Voltage (RE ET, X1, X2) VIH Input High Voltage (All Except XTAL 1, XTAL2, RESET) VIH1 Input High Voltage (X1, X2, RESET) Typ Test Conditions Device Max Unit -.5 .8 ,V All -5 .6 V All 2.0 VCC V - All 3.8 VCC V All VOL Output Low Voltage (BUS) .45 V 10L =2.0 mA All VOL1 Output Low Voltage (RD, WR, PSEN, ALE) .45 V IOL = 1.8 mA All VOL2 Output Low Voltage (PROG) .45 V IOL = 1.0 mA All VOL3 Output Low Voltage (All Other Outputs) .45 V IOL = 1.6 mA All VOH Output High Voltage (BUS) 2.4 V IOH =-400 p.A All VOH1 Output High Voltage (RD, WR, PSEN, ALE) 2.4 V IOH =-100 p.A All VOH2 Output High Voltage (All Other Outputs) 2.4 V IOH =-40 p.A All , 15-11 8048AH/8035AHLl8049AH 8039AHL/8050AH/8040AHL D.C. CHARACTER.lSTICS: (TA = O°C to 70°C; VCC = VOO = SV ± 100;",; VSS = OV) (Continued) Limits Symbol Max Unit (T1,INT) ±10 JJA VSS,;;;VIN';;;VCC All Input Leakage Current (P10·P17, P20·P27, EA, SS) -SOO ~ VSS + .4S,;;;VIN';;;VCC All 300 /LA VSS,;;;VIN,;;;3.8V All ±10 JJA VSS,,;;VIN";;VCC All 3 S mA 8048AH 8035AHL 4 7 mA 8049AH 8039AHL S 10 mA 80S0AH 8040AHL 30 65 rnA 8048AH 8035AHL 35 70 mA 8049AH 8039AHL 40 80 mA 80S0AH 8040AHL S.S V Parameter 1L1 Leak~ IU1 IU2 Input Leakage Current RESET ILO 100 100+ ICC VOO .Mln Typ Test Conditions Device Current 20 Leakage Current (BUS, TO) (High Impedance State VOO Supply Current (RAM Standby) Total Supply Current" RAM Standby Voltage' 2.2 Standby Mode Reset ,;;;VIL1 All "ICC + 100 is measured with all outputs disconnected; SS, RESET, and INT equal to VCC; EA equal to VSS· . 15·12 inter 8048AH/8035AHL/8049AH 8039AHL/8050AH/8040AHL A.C. CHARACTERISTICS: (TA = 0 0 C to 70 0 C; VCC = VOO = 5V ± 10%; VSS = OV) Parameler Symbol t Clock Period tLL ALE Pulse Width tAL Addr Setup to ALE tLA Addr Hold from ALE tCC1 Control Pulse Width (Rl5, WR) tCC2 Control Pulse Width (PSEN) tow Data Setup before WR two Data Hold after WR 11 MHz I (I) (Note 3) Min Max Unl" Condilions (Nole 1) 1/xtal freq 90.9 1000 ns (Note 3) 3.5t-170 150 ns 2t-110 70 ns (~!ote 2) ns t-40 50 7.5t-200 480 6t-200 350 ns 6.5t-200 390 ns t-50 40 tOR Data Hold (RD, PSEN) 1.5t-30 0 tRD1 RD to Data in , 6t-170 tRD2 PSEN to Data in 4.5t-170 tAW Addr Setup to WR tAD1 Addr Setup to Data (RD) 10,5t-220 730 ns tAD2 Addr Setup to Data (PSEN) 7.5t-200 460 ns tAFC1 Addr Float to RD, WR 2t-40 140 ns (Note 2) tAFC2 Addr Float to PSEN .5t-40 10 ns (Note 2) tLAFC1 ALE to Control (RD, WR) 3t-75 290 ns ns 5t-150 , ns ns 110 ns 375 ns 240 ns ns 300 tLAFC2 ALE to Control (PSEN) 1,5t-75 60 tCA1 Control to ALE (RD, WR, PROG), t-65 25 ns tCA2 Control to ALE (PSEN) 4t-70 290 ns 1.5t-80 50 ns 4t-260 100 tcp , Port Control Setup to PROG tpc Port Control Hold to PROG tpR PROG to P2 Input Valid tpF Input Data Hold from PROG top tpo tpp PROG Pulse Width tpL 8.51-120 ns 650 ns 140 ns 1,51 0 Output Data Setup 6t-290 250 ns Output Data Hold 1,5t-90 40 ns 1O.5t-250 700 ns Port 2 I/O Setup to ALE 4t-200 160 ns tLP Port 2 I/O Hold to ALE .51-30 15 tpv Port Output from ALE 4,5t+100 tOPRR TO Rep Rate 3t 270 tCY Cycle Time 15t 1.36 ns 5~0 ns 15.0 jJ.S ns Notes: 1 Control Outputs CL = 80pF BUS Outputs CL = lSOpF 2, BUS HIgh Impedance Load 20pF 15-13 3. I(t) assumes SO% duty cycle on Xl, X2, Max clock penod IS lor a 1 MHz crystal input. 8048AH/8035AHL/8049AH 8039AHL/S050AH/S040AI-IL WAVEFORMS --JtLAFC1L Jr---"'L-I__ ALE ALE 1 _ _ _- - - - ' tCA11RD PSEN Read From External Data Memory ALE J L r--- 2.4V - - - - - - , 0.4SV _ _ _ WR ~X;·~; TEST POINTS::~:~X,--_ __ ADDRESS A C testing Inputs are driven at 2 4V for a logic "1" and measurements are made at 2 OV for a logic "1" and 0 8V for a logic "0 .' o 45V for a logic "0 " Output timing Input And Output For A.C. Tests PORT 1/PORT 2 TIMING 1ST CYCLE I 2ND CYCLE ALE PSEN P24-27 P10-17 OUTPUT PCH NEW P20-23 DATA P9RT 20-23 DATA '----------c, ~r-----~---P-O-R-T-2-4_-27-,-P-O-RT--10-_-17-D-A-T-A~r-------~----~ tLP EXPANDER PORT OUTPUT PCH NEW PORT DATA I f- --------l -1+---.. tLA---·+I·--tPL~ PCH r-:- I ,-------11 I I 1 1 I r-----, ItPD T tDP OUTPUT DATA ' - -_ _ _ _ _ _ _ _ _ _- J EXPANDER PORT INPUT I I P20-23 OUTPUT f+-----tPR r----~-----, ----I·~I I Fi PCH PROG 15-14 I It) r------, I "I . I tCA 1 S04SAH/8035AHL/S049AH S039AHLlS050AH/S040AHL inter CRYSTAL OSCILLATOR MODE CERAMIC RESONATOR MODE Cl f-_ _ _ _---'_ _ _2-l XTALl ~.~._' f-_---r _ _---._ _._-2 j XTAL 1 _ C, ~:.: \ ,..,--...1----------,:-1 XTAL2 C3 ... 3 C3 XTAL2 3 C1 ' 5pF ± 1/2pF + (STRAY < 5pF) C2 ' (CRYSTAL + STRAY) < 8pF C3 ' 20pF ± 1pF + (STRAY < 5pF) Crystal series resistance should be less than 30n at 11 MHz; less than 75!l at 6 MHz; less than lOOn at 3.6 MHz. DRIVING FROM EXTERNAL SOURCE +5V 47011 p-+___-.:2:.j XTAL1 +5V TTL OPEN COLLECTOR GATES 47011 '--_...1-_~ For XTAL 1 and XTAL2 deline "high" as voltages above 1.6V and "low" as voltages below 1.6V. The duty cycle requirements lor externally driving XTAL 1 and XTAL2 using the XTAL2 circuit shown above are as follows: XTAL 1 must be high 3565% 01 the period and.XTAL2 must be high 36-65% 01 the period. Rise and fall times must be faster than 20 nS. 15-15 8048AH/8035AHL!8049AH 8039AHL!8050AH/8040AHL SUGGESTED ROM VERIFICATION ALGORITHM FOR H-MOS DEVICE ONLY INITIAL ROM DUMP CYCLE SUBSEQUENT ROM DUMP CYCLES ALE (NOTE 1) !(OUTPUT) +12V I I j I : (INPUT) EA----.J I I I I I I : A_D~D~R-ES~S--~r1r~R=OM~D~AT~A~~L---AD_D_R_E~S_S~~~------------__ DB-------L__ (INPUT) (OUTPUT) : --1r-------------i! RESET _________ (INPUT) (OUTPUT) : (INPUT) I,...:_ _ _ _ _ _ _ _ _ _ _ _ __ I -4H'--_____ i._______A_D_D_R_ES_S______ P211-P23 _____ AD_D_R_E_S_S____ ~I-------------- I (INPUT) I Al0 All NOTE: ALE is function of Xl, X2 inputs. 15-16 VCC =VDD =+ 5V VSS =OV 8748H/8035H/8749H/8039H HMOS-E SINGLE-COMPONENT 8-BIT MICROCOMPUTER • • • • • • Compatible with 8080/8085 Peripherals High Performance HMOS-E Interval Timer/Event Counter Two Single Level Interrupts Single 5-Volt Supply Over 96 Instruc~lo~s; 90% Single Byte • Easily Expandable Memory and I/O • Up to 1.35 pSec Instruction Cycle All Instructions 1 or 2 cycles The Intel S749H/S039H/S74SH/S035H are totally self-sufficient, S-bit parallel computers fabricated on single silicon chips using Intel's advanced N-channel silicon gate HMOS-E process. The family contains 27 1/0 lines, an 8-bit timer/counter, on-chip RAM and on-board oscillator/clock circuits. For systems that require extra capability, the family can be expanded using MCSiBl-SO/MCSiBl-S5 peripherals. These microcomputers are designed to be efficient controllers as well as arithmetic processors. They have extensive bit handling capability as well as facilities for both binary and BCD arithmetic. Efficient use of program memory results from an instruction set consisting mostly of single byte instructions and no instructions over 2 bytes in length. Internal Memory Device , 12S x S RAM S039H· none S035H none S749H 2Kx S EPROM 12SxS RAM S74SH 1Kx S EPROM 64xSRAM 64xSRAM 8 8748H 8035H 8749H 8039H Vee P~RT XTA~~ XTAL 2 RESET PORT 2 S5 INT EA RD PSEN WR ALE DBO DBl DB2 DB3 DB4 DBS DB6 DB7 18 Vss '--_ _-' Figure 1. Block Diagram Figure 2. Logic Symbol 15-17 T1 P27 P26 P2S P24 P17 P16 P15 P14 P13 P12 Pll Pl0 VDD PROG P23 P22 P21 P20 Figure 3.. Pin Configuration ~1F\l~Il.~M~INIAlF\lif 8748H18035H/8749H/8039H ,',I Table 1. Pin DescrlpUon Symbol Pin' No. VSS 20 VOO 26 I Function 'Circuit GNO.. · potential +5V during normal operation. P~ogrammlng power supply (+21V), VCC 40 PROG 25 P10-P17 27-34 Port 1 P20-P23 21-24 P24-P27 35-38 Port 2 OBOOB7 BUS 12-19 Main power supply; +5V during operation and programming. Output strobe for 8243 I/O expander. Program pulse (+18V) input pin during programming. 8-bit quasibidirectional port. 8-bit quasibidirectional port. P20-P23 contain the four high order program counter bits during an external program memory fetch and serve as a 4-bit I/O expander bus for 8243. True bidirectional port which can be written or read synchronously using the RO, WR strobes. The port 'clin also be static~lIy latched. Symbol Device . Pin No. (Con't) All All 8748H 8749H All All 8748H 8749H (See Note) TO 1 All All T1 39 INT 6 All. 15-18 Function Contains the 8 low order program counter bits during an external program memory fetch, and receives the addressed instruction under the control of PSEN. Also contains the address and data during an external RAM data store instruction, under. c.ontrol of ALE, RO, and WR. Input pin testable using the conditional transfer instructions JTO .and JNTO. TO can be designated as a clock output using ENTO CLK instruction Used during programming. Input pin testable using the JT1, and JNT1 instructions. Can be designated the timer/ counter input using the STRT CNT instruction. Interrupt input. Initiates an interrupt if interrupt is enabled. Interrupt is disabled after a reset. Also testable with conditional jump instruction. (Active low) interrupt must remain low for at least 3 machine cycles for proper operation. Device All 8748H 8749H All All inter 8748H/8035H/8749H/8039H Table 1. Pin Description (Continued) Symbol RD Pin No. 8 Function Output strobe activated during a BUS read. Can be used to enable data onto the bus from an external device. Symbol Device All Used as a read strobe to external data memory. (Active low) RESET WR 4 10 Input which is used to initialize the processor. (Active low) (Non TTL VIH) Ail Used during programming. 874BH 8749H Output strobe during a bus write. (Active low) All Pin No. 11 Address latch enable. ThiS signal occurs once dunng each cycle and is useful as a clock output. The negative edge of ALE strobes address into external data and program memory Device 9 Program store enable. This output occurs only during a fetch to external program memory. (Active low) ALL SS 5 Single step input can be used in conjunction with ALE to "single step" the processor through each Instruction. All EA 7 E;xternal access Input which forces all program memory fetches to reference external memory. Useful for emulation and debug. (Active high) All Used during (18V) programming 8748H 8749H Used as write strobe to external data memory. ALE Function PSEN All XTAL1 2 One side of crystal input for internal oscillator. Also input for external source. (Non TTL VI H) All XTAL2 3 Other side of crystal Input All NOTE: On the 8749H!8039H, PROG must be clamped to Vee when not programming. A diode should be used when using an 8243; otherwise, a direct connection is permissible. 15-19 inter 8748H/8035H/8749H18039H . Table 2, Instruction Set Accumulator ReglBl.,. Mnemonic ADD A, R ADDA,@R ADD A, It data AD DC A, R ADDCA,@R Mnemonic INCR INC@R DECR Description Bytes Cycles Add register.to A 1 1 Add data memory to A 1 1 Add immediate to A 2 2 Add register with carry Add data memory with carry AD DC A, It data Add immediate 2 2 with carry ANLA,R And register to A ANLA,@R And data memory to A 1 1 ANLA,It data And immedIate to A 2 2 ORLA, R Or register to A ORLA@R Or data memory to A 1 1 ORLA,ltdata Or Immediate to A 2 2 XRLA, R Exclusive or register toA XRLA,@R Exclusive or data memory to A XRL, A, It d,ata ExclusIve or 2 2 immediate to A INCA IncrementA DECA Decrement A CLRA Clear A CPLA Complement A DAA Decimal adjust A SWAP A Swap nibbles of A RLA Rotate A left RLCA Rotate A left through carry RRA Rotate A right RRCA Rotate A right through carry Branch Mnemonic JMPaddr JMPP@A DJNZ R, addr JC addr JNCaddr JZaddr JNZ addr JTO addr JNTO addr JT1 addr JNT1 addr JFO addr JF1 addr JTF addr JNI addr JBb addr Description Jump unconditional Jump indirect Decrement register and skip Jump on carry = 1 Jump on carry = 0 Jump on A zero Jump on A not zero Jump on TO=: 1 Jump on TO = Jump on T1 = 1 Jump on T1 =0 Jump on FO = 1 Jump on Fl = 1 Jump on timer flag Jump 9n INT = 0 Jump on accumulator bit g Byte. Cycles 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 Subroutine Mnemonic CALLaddr RET RETR Input/Output Mnemonic Description Bytes Cycles INA,P Input port to A 1 2 OUTL.P, A Output A to port 1 2 ANL P,ltdata And Immediate to port 2 2 ORL P, It data Or Immediate to port 2 2 INSA, BUS Input BUS to A 1 2 OUTLBUS, A Output A to BUS 1 2 ANL BUS, It data And immediate to BUS 2 2 ORL BUS, It data Or immediate to BUS 2 2 MOVDA, P Input expander port 1 2 to Pi MOVDP, A Output A to expander 1 2 port ANLD P,A And A to expander port 1 2 ORLD P,A Or A to expander port 1 2 Description Bytes Cyc'" Increment register 1 1 1 Increment data memory 1 Decrement register Description Jump to subroutine Return Return and restore status ' Bytel Cycles Description Clear carry Complement carry Clear flag 0 Complement flag 0 Clear flag 1 Complement flag 1 Bytes Cyc'" 1 1 2 ·1 2 2 2 Flagl Mnemonic CLRC CPLC CLR FO CPLFO 'CLR F1 CPLF1 15-20 inter ~1P.l~LO~OINlfA\IRlW 8748H/8035HI8749H.t8039H Table 2. Inltructlon Set (Continued) DetaM_ Dncrlptlon Move register to A Move data memory toA MOV A. # data Move immediate to A MOVR.A Move A to register Move A to data MOV@R.A memory MOV R.#data Move immediate to register MOV @R. # data Move immediate to data memory MOVA.PSW MovePSWtoA MOVPSW.A Move A to PSW Exchange A and XCHA. R register XCHA.@R Exchange A and data memory XCHDA.@R Exchange nibble of A and register MOVXA.@R Move external data memory to A MOVX@R.A Move A to external . data memory MOVPA.@A Move to A from current page MOVP3A.@A Move to A from page 3 Mnemonic MOVA,R MOVA.@R Timer/Counter Byt.s Cycles 1 1 2 2 2 2 2 2 Mnemonic MOVA. T MOVT.A STRTT STRTCNT STOP TCNT EN TCNTI DIS TCNTI Dncrlptlon Read timer/counter Load timer/counter Start timer Start counter Stop timer/counter Enable timer/counter interrupt Disable timer/counter interrupt Bytes Cycl.. 1 1 Description Enable external interrupt Disable external interrupt Select register bank 0 Select register bank 1 Select memory bank 0 Select memory bank 1 Enable clock output onTO Bytes Cycles 1 1 Description No operation Bytes Cycles 1 1 Control Mnemonic ENI ,,1 0151 SELRBO SELRB1 SELMBO SEL MB1 ENTOCLK 2 2 2 '1 ,2 Mnemonic NOP 15-21 . 8T48H/8035H/8749H/8,039H ABSOLUTE MAXIMUM RATINGS·' .Ambient Temperature Under Bias ••• ooe to 70 0 e Storage Temperature ....••.... -65°e to +150oe . Voltage On Any Pin With Respect to Ground ............•.•..•... -O.5Vto +7V Power Dissipation .•...• : . • . . . . . . . • • .• 1.0 Watt "NO fleE: Stresses abov~ those listed under "Abso. lute Maximum Ratings" maypause permanent "amage to the device. This is a stress rating only and functional operation of device at these or any other .conditions above those indicated in the operational sections of this specification is not implied. D.C. CHARACTERISTICS: (TA = 0° C to 70 Q e; Vee = VDD = 5V ± 10°1p; VSS = OV) Limits Symbol Parameter Min VIL Input Low Voltage (All Except RESET, X1, X2) VIL1 VIH Typ Unit -.5 .8 V All Input Low Voltage (RESET, X1, X2) -.5 .6 V All Input High Voltage (All Except XTAL 1, XTAL2, RESET) 2.0 Vee V All VIH1 Input High Voltage (X1, X2, RESET) 3.8 Vee V All VOL Output Low Voltage (BUS) .45 V IOL = 2.0 mA All VOL1 Output Low Voltage (RD, WR, PSEN, ALE) .45 V IOL =1.8 mA All VOL2 Output Low Voltage (PROG) .45 V IOL = 1.0 mA All VOL3 Output Low Voltage (All Other Outputs) .45 V IOL = 1.6 mA All VOH Output High Voltage (BUS) 2.4 V IOH = -400 IlA All VOH1 Output High Voltage (RD, WR, PSEN, ALE) 2.4 V IOH = -100yA All VOH2 Output High Voltage (All Other Outputs) 2.4 V IOH = -40 IlA All 15·22 Test Conditions Device Max I inter 8748H/8035H/8749H/8039H D.C. CHARACTERISTICS: (TA =O°C to 70°C; VCC =VOO =5V ± 10%; VSS =OV) (Continued) Limits Max Unit 1L1 Leakage Current (T1, INT) ±10 pA VSS,,;;VIN";;VCC All ILI1 Input Leakage Current (P10-P17, P20-P27, EA,85) -500 pA VSS + .45,,;;VIN";;VCC All -300 pA VSS,,;;VIN,,;;3.8V All VSS,,;;VIN";;VCC !)ymbol Parameter Input Leakage Current RESET ·ILl2 ILO Leakage Current (BUS, TO) (High Impedance State) 100 + ICC Total Supply Current" *Iec + Min Typ -10 Test Conditions Device ,. ±10 pA 80 100 rnA 8035H 95 110 rnA 8039H 80 100 rnA 8748H 95 110 rnA 8749H IDD is measured with all outputs disconnected; SS, RESET, and INT equal to Vee; EA equal to VSS. 15-23 All 8748H/8035H/8749H/8039H A.C. CHARACTERISTICS: (TA Symbol =0°8 10 70°C;, VCC =VOO =5V ± 10%; VSS =OV), Parameter t Clock Period , tLL ALE Pulse Width tAL Addr Setup to ALE tLA Addr. Hold from ALE tCC1 Control Pulse WidtlJ (RO. WR) tCC2 Control Pulse Width (PSEN) tow Data Setup before WR two Data Hold after WR 11 MHz f(t) (Note 3) Min Max Unit Conditions (Note 1) 1/xlal freq 90.9 1000 ns (Note 3) 3.5t-170 150' ns 2t-110 70 ns t-40 50 ns 7.5t-200 480 ns 6t-2oo 350 ns 6.5t-200 390 ns t-50 40 ns 0 (Note 2) tOR Data Hold (RD. PSEN,) 1.5t-30 110 ns tRD1 RD to Data in 6t-170 375 ns tRD2 PSEN to Data in 4.5t-170 240 ns tAW Addr Setup to WR tAD1 Addr Setup to Data (RD) 10.5t-g2,0 730 ns tAD2 Addr Setup to Data (PSEN) 7.5t-200 460 ns tAFC1 Addr Float to RD. WR 2t-40 140 ns (Note 2) tAFC2 Addr Float to PSEN .5t-40 10 ns (Note 2) tLAFC1 ALE to Control (RD. WR) 3t-75 200 ns 5t-150 ns 300 tLAFC2 ALE to Control (PSEN) 1.5t-75 60 ns tCA1 Control to ALE (RD. WR. PROG) 1-65 25 ns tCA2 Control to ALE (PSEN) 41-70 290 ns tcp Port Control Setup to PROG 1.5t-80 50 ns tpc Port Control Hold to PROG 4t-260 100 tpR PROG to P2 Input Valid tpF Input Data Hold from PROG 8.5t-120 ns 650 ns 140 ns 1.5t 0 tDP Output Data Setup 6t-290 250 ns tpD Output Data Hold 1.5t-90 40 ns tpp PROG Pulse Width 10.5t-250 700 ns tpL Port 2 1/0 Setup to ALE 4t-200 160 ns tLP Port 2 1/0 Hold to ALE .5t-30 15 tpv Port Output from .ALE 4.5t+100 tOPRR TO Rep Rate 3t 270 tCY Cycle Time 15t 1.36 ns 510 ns 15.0 j.lS ns Notes: 1. Control Outputs CL = 80pF BUS Outputs CL = 150pF 2. BUS High Impedance Load 20pF 15-24 3. f(t) assumes 50% duty cycle on Xl, X2. Max clock period is for a 1 MHz crystal input. inter 8748H/8035H/8749H/8039H WAVEFORMS l ALE ICAl 1-- Read From External Data Memory ALE J L 2.4V - - - - - - - , ,--_ __ ... 2.0X X 2.0~TEST POINTS -'0.8. '-._ __ WR 0.45V-----'. . O.S'" A.C. testing Inputs are driven at 2 4V for a logic "1" and 0.45V for a logic "0." Output timing measurements are made at 2 OV for a logiC "1" and 0.8V for a logic "0," Write To External Data Memory Input And Output For A.C. Tests PORT 1/PORT 2 TIMING ALE PSEN P20-23 OUTPUT I PCH NEW P20-23 DATA I ~---------~I P<;lRT 20-23 DATA P24-27 -+------~------------------7-----~--~ Pl0-17 PORT 24-27. PORT 10-17 DATA OUTPUT NEW PORT DATA I ---1. ILP EXPANDER PORT OUTPUT r- ---1..'-L':... ---·+I"·-IPL~ PCH I rp-O-RT-2-0--2-3-D-A-TA--;', 'PORT CONTROL IDP T -I' OUTPUT DATA INPUT 1 1-+-14 r-------~ PCH r~--~ I I-ICP+IPC~ PROG I I I, I'PF I I _ I P R _ - - - I _ I f1 IPORT CONTROL I 1 I !-ICAl IIPD ~--------------~ EXPANDER PORT - - - - - - - - - - - - - - -_____-;1 i 1\. 15-25 PCH I 'PP I intJ 8748H/8036H/8749H/8039H CERAMIC RESONATOR MODE CRYSTAL OSCILLATOR MODE C1 C1 . 2 - - - - r - - - - . - - - - - - i XTAL 1 ~ ~ 'e'o"f~, -=- -=- I-{_ _ _ _ _-r-_ _2-j XTAL1 C1 = C2 = 33pF ± 5% 1-11 ~HZ I XTAL2 l - - - - ' - - - - J - - - - , 1 XTAL2 C3 C3 3 3 ,C1 = 5pF ± 1/2pF + (STRAY < 5pF) C2 = (CRYSTAL + STRAY) < 8pF C3 = 20pF ± 1pF + (STRAY < 5pF) Crystal series resistance should be lessl than 30!! at 11 MHz; less than 7S!! at 16 MHz; less than 180!! at 3.6 MHz. DRIVING FROM EXTERNAL SOURCE +5V 47011 2 ~--t-----i XTAL 1 +5V' TTL OpeN COLLeCTOR GATES 47011 '-----'----:;;-i3 XTAL2 For XTAL 1 and XTAL2 define "high" as voltages above 1.6V and "low" as voltages below 1.6V. The duty cycle requirements for externally dnving XTAL1 and XTAL2 uSing the circuit shown above are as follows:XTAL1 must be high 3S'6S% of the period andXTAL2 must be high 36-6S% of the period. Rise and fall times must be faster than 20 nS. PROGRAMMING, VERIFYING, AND ERASING THE 8749H (8748H) EPROM Programming Verification In brief, the programmrng processconsists of: activating the program mode, applying an address, latching the address, applying data, and applying a programming pulse. Each word is programmed completely before moving on to the nexJ and is followed by a verification step. The following is a list of the pins used for programming and a description of their functions: Pin, XTAL 1 XTAL 2 Reset Test 0 EA BUS P20-P22 VDD PROG Function Clock Input (3 to 4.0 MHz) WARNING: An attempt to program a missocketed 8749H (8748H) will result In severe damage to the part. An indication of a properly socketed part IS the appearance of the ALE clock output The lack of thiS clock may be used to disable the programmer The ProgramlVerify sequence IS' 1 VOO = SV, Clock applied or Internal oscillator operatIng. RESET =OV, TEST 0 =SV, EA =SV, BUS and PROG'floatlng P10 and P11 must be lied to ground. 2, Insert 8749H (8748H) In programming socket. 3. TEST 0 = OV (select program mode) 4 EA = 18V (activate progral)1 mode) S. Address applied to BUS and P20-22 6. RESET = SV (Iatcll address) 7 Data applied to BUS 8. VOO = 21V (programming power) 9. PROG = VCC or float followed by one SOms pulse to 18V 1I1itialization and Address Latching ,Selection of Program or Verify Mode Activation of Progrl\mNerify Modes Address and Data Input Data Output During Verify Address Input Programl1)ing Power Supply Program Pulse Input 10 11. 12 13, VOO= SV TEST 0 = SV (venfy mode) Read and venfy data on BUS TEST 0 = OV 14, RESET" OV and repeat from step S 1S. Programmer should be at conditions of step 1 when 8749H (8748H) IS removed from socket. 15-26 8748H/8035H/8749H/8039H A.C. TIMING SPECIFICATION FOR PROGRAMMING 8748H/8749H ONLY: (TA =25°e ± 5°e; Vee =5V ± 5%; Voo =21 ± .5V) Symbol Parameter Min Max Unit tAW Address Setup Time to ~I 4tCY tWA Address Hold Time After ~I 4tCY tow Data in Setup Time to PROGI 4tCY two Data in Hold Time After PROGI 4tCY tPH RESEi Hold Time to Verify 4tCY tVOOW VOO Hold Time Before PROGI 0 1.0 ms tVOOH VOO Hold Time After PROGI 0 1.0 ms tpw Program Pulse Width 50 60 ms tTW Test 0 Setup Time for Program Mode 4tCY tWT Test 0 Hold Time After Program Mode 4tCY too Test 0 to Data Out Delay tww l1ES"E'f Pulse Width to Latch Address t r • tf VOO and PROG Rise and Fall Times 4tCY . 0.5 100 j.!s 5 j.!s CPU Operation Cycle Time 3.75 tRE RESET Setup Time before EAt 4tCY IS , 4tCY tCY NOTE: If Test 0 Test Conditions high. too can be triggered by RESET! D.C. TIMING SPECIFICATION FOR PROGRAMMING 8748H/8749H ONLY: (TA = 25°C ± 5°C; Vee" 5V ± 5%; VOO" 21 ± .5V) Symbol Min Max Unit VOOH VOO Program Voltage High Level Parameter 20.5 21.5 V VOOL VOO Voltage Low Level 4.75 5.25 V VPH PROG Program Voltage High Level 17.5 18.5 .V VPL PROG Voltage Low Level 4.0 VCC V VEAH EA Program or Verify Voltage High Level ,17.5 18.5 V 'DO VOO High Voltage Supply Current 20.0 mA 'pROG PROG High Voltage Supply Current 1.0 mA lEA EA High Voltage Supply Current 1.0 mA 15-27 Test Conditions 8748H/8035H/8749Hf8039H WAVEFORMS COMBINATION PROGRAM/VERIFY MODE (EPROM'S ONLY) VEAH_ !~tRE)lr--------------,-------------------------------------------I EA Vee L --'PROGRAM ---~----I---VERIFY -----j----PROGRAMl==-tTW~-I' 1 TO Vee VIL 1 i--c -- tww _ _ I r----------------------+----------~ Vee RESET VILl ~ tAWr--~twA r-~D-AT~A~T~O~BE~~ DBO-DB7 ~ - - __ - wchart-Unnumbered Poll 18-17 RUPI~-44 NO "AM" .-0 "SI" 4-1 ·'RBE" .... O "SER"..,.O "SES" ... 1 "SI" 4--1 "NS" = NS + 1 ..SES" .... O ..SER" .... O "TBF""'O Figure 18-7d. SIU AUTO Mode Receive Flowchart-Supervisory Command 18-18 RUPI"'-44 BAD I COMMAND NR(P) = NS(S) NS(P) = NR(S) + "AM" "NS" ~ 1, 1 = 8 "ABE" ..... ", "TBF" ..... \II Ns~Ns+1 "SES"'" e "SER".... \II "51" .... 1 Figlclr.e 18-7e. SIU AUTO Mode Receive Flowchart...,.1 Command: Prior Transmitted I-Field Confirmed, Current Received I-Field in Sequence 18-19 BAD I COMMAND NoIP' ~ Ns(S, NsIP' - NoIS, "AM" = 1, "Na" = • "RBE"..-(t "SES" ... . "SER" ... . "SI" ... 1 Figure 18-7f. SIU AUTO Mode Receive Flowchart":"l Command: Prior Transmitted I·Field Not Confirmed, Current Received I·Field'Jn Sequence 18-20 BAD I.cOMMAND NA(P) NS(S) + 1 NA(P) *- NS(S) NS(P) ~ NR(S) "AM" = 1, "NB" = 0 *" "AM" ... , .. SES" ...... 1 "SER ........ O ·'RSE" .... O "SI" .... 1 Figure 18-1g. $IU AUTO Mode Receive Flowchli/Ft-I Command: Sequence Error Send, Current Received I-Field in Sequence 18-21 RUP1 1loI;'44 ~AD I COMMAND NR(P) ~ Ns(S) NS(P) ¢ NA(S) + 1 "AM" = 1 "Na" = 0 "TBF" ..... " Ns=Ns+1 "SES" ... , "SER"-..1 "SI" ..... 1 Figure 18-7h. SIU A,UTO Mode Receive Flowchart-I Command: Prior Transmitted I-Field Confirmed Sequence Error Receive 18-22 BAD I COMMAND NA(P) = NS(S) ~::), :: ~~(S) "NB" = 0 "BOV" .... 1 "AM" .... , "AM" .... , "RBE"., "RBE" ... , "51" ... 1 51 .... 1 Figure 18-7i. SIU AUTO Mode Receive Flowchart-I Command: Prior Transmitted I·Field Not " Confirmed, Sequence Error Receive 18-23 BAD ,I COMMAND + 1 1, "NB" = NR(P) ~ NS(S) ~~l~l :: ~=l~l "AM" = 0 "AM" ....... "RBE"", "SES" ..... 1 "SER".-1 "SI" .... 1 Figure 18-7j. SIU SU10 Mode Receive Flowchart-I Command: Sequence Error Send and Sequence Error Receive 18-24 RUPI"'-44 -0 YES X MIT I FRAME X MIT X MIT FRAME FRAME RR Figure 18-8. SIU AUTO Mode Transmit Flowchart 18-25 RNR LOAD I·FIELD INTO XMITBUFFER PROCESS INFORMATION OR SET "RBP" Figure 18-9. AUtO Mode Response to "SI" 18-26 -----1 NO 1 1 YES I ABORT, SHORT FRAME OR INVALID I BAD ,I RECEIVE MESSAGE CTAL FIELD ~RCB. I FIELD -.REC BUF, seT BOV ON OVERRUN - - - i1 RBE 0 (ABORT FROM CPU) TEST cRe Figure 18-10. SIU FLEXIBLE Mode Receive Flowchart 18-27 RU PI 1'...44 Figure 18-11. FLEXIBLE Mode Response to Recei.ve "SI" r - - ,I I * - TRANSMIT MESSAGE USING TCB FOR CONTROL FIELD -;-BF--=-'- - - ~UT-OFF • LOOP) + CTS·LOOP [ABORT FROM PRIMARY] (ABORT FROM CPU) CLEAR "TBF" ----, I I I I I '}..:..~!.,.1-~----::::::::::;:J:;:'-=-::::: ______ J CLEAR "RTS" SET "SI" TRANSMIT ABORT SEQUENCE Figure 18-1/!. SIU ,FLIiXIBLE Mode Transmit Flowchart 18-29 RUPI""-44 XMIT == 1, PENDING BUFFULL BUFEMPTY CTRL FIELO ....TCB l-fIELD ... XMIT aUF SET "TBF" SET "RTS" Figure 18-13. FLEXIBLE Mode Response to Transmit "sr' 8044 to get its transmit buffedoaded with new information after an acknowledge. .3) The 8044 CPU can clear R TS. This will prevent a response from being sent, or abort it if it is already in progress. A system using external RTS/CTS handshaking could use a one-shot to delay RTS or CTS, thereby giving the CPU more time to disable the response. 18.9 MORE DETAILS ON SIU HARDWARE The SIU divides functionally into two sections-a bit processor (BIP) and a byte processor (BYP)-sharing some common timing and control logic. As shown in Figure 18-14, the BIP operates between the serial port pins and the SIU bus, and performs all functions .necessary to transmit/receive a byte of data to/from the serial data stream. These operations include shifting, NRZI encoding/decoding, zero insertion/deletion, and FCS generation/checking. The BYP manipulates bytes of data to perform message formatting, and other transmitting and receiving functions. It operates between the SIU bus (SIB) and the 8044'5 internal bus (lB). The interface between the SIU and the CPU involves an interrupt and some locations in on-chip RAM space which are managed by the BYP. The maximum possible data rate for the serial port is limited to 1/2 the internal clock rate. This limit is imposed by both the maximum rate ofDMA to the on-chip 'RAM, and by the requirements of synchronizing to an external clock. The internal clock rate for an 8044 running on a 12 MHz crystal is 6 MHz. Thus the maximum 8044 serial data rate is 3 MHz. This data rate drops down to 2.4 MHz when time is allowed for external clock synchronization. adjustment is made if the transition occurs at the count of 8. In this manner the counter locks in on the point at which transitions in the data stream occur at the count of 8, and a clock pulse is generated when the count overflows to O. In order to perform NRZI decoding, the NRZI decoder compares each bit of input data to the previous bit. There are no clock delays in going through the NRZI decoder. The zero insert/delete circuitry (ZID) performs zero insertion/deletion, and also detects flags, GA's (GoAhead's), and aborts (same as GA's) in the data stream. The pattern 1111110 is detected as an early GA, so that the GA may be turned into a flag for loop mode transmission. The shut-off detector monitors the receive data stream for a sequence of eight zeros, which is a shut-off command for loop tnode transmissions. The shut-off detector is a three-bit counter which is cleared whenever a one is found in the receive data stream. Note that the ZID logic could not be used for this purpose, because the receive data must be monitored even when the ZID is being used 'for transmission. As an example of the operation of the bit processor, the following sequence occurs in relation to the receive data: I) RXD is sampled by SCLK, and then synchronized to the internal processor clock (IPC). 2) If the NRZI mode is selected, the incoming data is NRZI decoded. 18.9.1 The Bit Processor In the asynchronous (self clocked) modes the clock is extracted from the data stream using the on-chip digital phase-locked-loop (DPLL). The DPLL requires a clock input at 16 times the data tate. This 16 X clock may originate from SCLK, Timer I Overflow, or PH2 (one half the oscillator frequency). The extra divide by-two described above allows these sources to be treated alternatively as 32 X clocks. The DPLL is a free-running four-bit counter running off the 16 X clock. When a transition is detected in the receive data stream, a count is dropped (by suppressing the carry-in) if the current count value is greater than 8. • A count is added (by injecting a carry into the second stage rather than the first) if the count is less than 8. No 18-31 3) When receiving other than the flag pattern, the ZID deletes the '0' after 5 consecutive 'I's (during transmission this zero is inserted). The ZID locates the byte boundary for the rest of the circuitry. The ZID deletes the 'O's by preventing the SR (shift register) from receiving a clocking pulse. 4) The FCS (which is a function of the data between the flags-not including the flags) is initialized and started at the detection of the byte boundary at the end of the opening flag. The FCS is computed each bit boundary until the closing flag is detected. Note that the received FCS has gone through the ZID during transmission. 18.9.2 The Byte Processor Figure 18-15 is a block diagram of the byte processor (BYP). The BYP contains the registers and controllers necessary to perform the data manipulations associated with SDLC communications. The BYP registers may be read or written by the CPU over the 8044's internal bus INTERRUPT IB 1 RAM r - ---- ------- ~I SHARED REGISTERS '-- BYP CPU I------------:s;u, I h ( BIP L _________________ ~ SIB I I I I I I I I I/O/ RXD OATA/TXD _________ J Figure 18-14. The Bit and Byte Processors (IB), using standard 8044 hardware register operations. The 8044 register select PLA controls these operations. Three of the BYP registers connect to the IB through the IBS, a sub-bus which also connects to the CPU interrupt control registers. Simultaneous access of a register by both the IB and the SIB is prevented by timing. In particular, RAM access is restricted to alternate internal processor cycles for the CPU and the SIU, in such a way that collisions do not occur. As an example of the operation of the byte processor, the following sequence occurs in relation to the receive data: I) Assuming that there is an address field in the frame, the BYP takes the station address from the register file into temporary storage. After the opening flag; the next field (the address field) is compared to the station address in the temporary storage. If a match occurs, the operation continues. 2) Assuming that there is a control field in the frame, the BYP takes the next byte and loads it into the RCB register. The RCB register has the logic to update the NSNR register (increment receive count, set SES and SER flags, etc.). 3) Assuming that there is an information field, the next byte is dumped into RAM at the RBS locati!ln. The DMA CNT (RBLat the opening flag) is loaded from the DMA CNT register into ,the RB register and decremented. The RFL is then loaded into the RB register, incremented, and stored back into the register file. ' 18-32 rr--- 7 -----------' I I I I I I I I I I I I I I I I I I I I I I I RAM I I I I SIS BYP TIMING AND IS SHARED REGISTERS CONTROL I I I I SIP L _________ ~ ____ I ~~ Figure 18-15. The Byte Processor 4) This process continues until the D MA CNT reaches zero, or until a closing flag is received. Upon either event, the BYP updates the status, and, if the CRC is good, the NSNR register. 18.1~ DIAGNOSTICS An SIU test mode has been provided, so that the on-chip CPU can perform limited diagnostics on the SID. The test mode utilizes the output latches for P3.0 and P3.1 (pins 10 and 11). These port 3 pins are not useful as out-put ports, since the pins are taken up by the serial port functions. Figure 18-16 shows the signal routing associated with the SIU test mode. Writing a 0 to P3.! enables the serial test mode (P3.! is set to 1 by reset). In test mode the P3.0 bit is mapped 18-33 into the received data stream, and the 'write port :3' control signal is mapped into the SCLK path in place ofTl. Thus, in test mode, the CPU c~n send a serial data stream to the 8IU by writing to P3.0. The transmit data stream can be monitored by reading P3.!. Each sucessive bit is transmitted from the SIU by writing to any bit in Port 3, which generates SCLK. In test mode, the P3.0 and P3.1 pins are placed in a high voltage, high impedance state. When the CPU reads P3.0 and P3.1 the logic level applied to the pin will be returned. III the test mode, when the CPU reads 3.1, the transmit data value will be returned, not the voltage on the pin. The transmit data remains constant for a bit time. Writing to P3.0 will result in the signal being outputted for a short period of time. However, since the signal is not latched, P3.0 will quickly return to a high voltage, high impedance state. CPU BUS PIN 15 SClKI Til TIMER 1 OYF P35 SYS ClK SIUSERIAL DATA CLOCK ." .a" c:: Ci .... .... . ~ ~ (XI ~ 0> I '" ~ !" 5!! c: i i!: 0 a.. I r1- :II c "1J SOU ~ RECEIVE DATA STREAM CD READ PORT 3 WRITE PORT 3 PIN11 DATAl TXDI P31 SOU TRANSMIT DATA STREAM "1 l.. oIIo~ RUPI"'-44 The serial test mode is disabled by writing a 1 to P3.1. Care must be taken that a 0 is never written to P3.1 in the course of normal operation, since this causes the test mode to be entered. opening flag, followed by the station address, a control field indicating that this is a supervisory frame with an RNR command, and then a closing flag. Each byte of the frame is transmitted by writing that byte into the A register and then calling the subroutine XMIT8. Two additional SCLKs are generated to guarantee that the last bits in the frame have been clocked into the SIU. Finally the CPU reads the status register (STS). If the operation has proceeded correctly, the status will be 072H. If it is not, the program jumps to the ERROR loop and terminates. Figure 18-17 is an example of a simple program segment that can be imbedded into the user's diagnostic program. That example shows how to put the 8044 into "Loop-back mode" to test the basic transmitting and receiving functions of the SIU. Loop-back mode is functionally equivalent to a hardwire connection between pins 10 and lion the 8044. In this example, the 8044 CPU plays the role of the primary station. The SIU is in the AUTO mode. The CPU sends the SIU a supervisory frame with the poll bit set and an RNR command. The SIU responds with a supervisory frame with the poll bit set and an RR command. The operation proceeds as follows: ~nterrupts are disabled, and the self test mode is enabled by writing a zero to P3.1. This estaElishes P3.0 as the data path from the CPU to the SIU. CTS (clear-tosend) is enabled by writing a zero to P1.7. The station address is initialized by writing 08AH into the STAD (station address register). The SIU is configured for receive operation in the clocked mode and in AUTO mode. The CPU then transmits a supervisory frame. This frame consists of an ~ The SIU generates an SI (SIU interrupt) to indicate that it has received a frame. The CPU clears this interrupt, and then begins to monitor the data stream that is being generated by the SIU in response to what it has received. As each bit arrives (via P3.1), it is moved into the accumulator, and the CPU compares the byte in the accumulator with 07EH, which is the opening flag. When a match occurs, the CPU identifies this as byte boundary, and thereafter processes the information byte-by-byte. The CPU calls the RCV8 subroutine to get each byte into the accumulator. The CPU performs compare operations on (successively) the station address, the control field (which contains the RR response), and the closing flag. If any of these do not compare, the program jumps to the ERROR loop. If no error is found, the program jumps to the DONE lo?p. 18-35 RUPI"'-44 • MeS-51 MACRO A;:;S,":HDLER LOC C11t.J DATA LINE 1 '0000 7sc'eoo 0003, C281 0005 C2fi7 0007 7'CE8A " 3 INlT 4 5 • MOV BT5 ••001-1 CLR CLR P3 1 PI 7 BTAD. MOV 7 8 9 E".b·h ulf test ",ode CONFIOVRE: RECEIVE OPERATION ODOA 7'0861!t 10 MOV 0000: 75e'l01 0010 75C8e2 11 12 MOV SMD. MOV 5TS. 'OC2H .. 13 14 741£ 120066 748A 120066 001D' 7495 00lF 1200~6 0022 747E 0024 120066 0027 D280 0029 0280 002B E5C8 002D B4722A 17 18 SEND 19 20 21 22 23 24 . "7 28 CAL.L MDV 9E9-0, A • • SAH NR(9)-!5. SERoo() TBF-I, RBE';'l. AM-I STATI~ WITH THE POLL A. CALL XMlTS MDY CALL MOV A: 'Oq~ XMIT8 A• •7EH MOV CJNE 2' 30 ,. *01101 .7EH XMITB HOV CALL SETB SETB 2. 31 32 33 NS(S)-3, NFCS-l NSNR • •6AH TRANSMIT /It SUPERVISORY FRAME FROM THE PRIMARY SIT SET AND A RNA COMI1AND ,. 0013 0015 00lS 001A Enab!.· eTS 1"1tl.11:r.. addl' ••• ISAH RNR SUP FRAME with P/F-l. ReCltlVe XMIT8 P3 0 ,P3 0 A, STS A. '72H. t,.. SCL.~ ' . to Inltlate recelV. action O.n .... t • • • J NRCPl-4 clOSing flag ERROR PREPARE TO RECEIYE RUP I '5 RESPO~E TO PR lMARY 'S RNA 14 0030 C2CC 0032 7400 0034 1BOC 0036 0038 00310, 0038 003£ 0041 0043 D280 A2Bl 13 847£03 020046 D8F3 02005A 3. 37 38 39 40 41 42 43 44 45 4. RECY OLR "00 Cha" 51 Cha" ACC T"\I 12 h •• " MOV LOOK FOR THE OPENINQ FLAG: WFLAGI SETS 5ClK P3 C. P3 1 A CJNE ,,"P DJNZ .1I1P' A, 101EH. WFlQl CNTINV R3. WFLAGI ERROR CALL. C.JNE MOV WFLGI ° RRC Tl"anSlll1tted data 0049 B4BAOE 47 48 49 50 51 004C 1200'C 004F 84BI08 52 CALL RCYS A. IOSAH. RCVS 53 CJNE A. 10BIH. ERROR 54 CALL CJ~E RCVS A. 107EH. DONE JHP DONE ERROR JHP ERROR MOV SETB MOV RRC 0"'" RO. lOB P3 0 C. P3 t A RO. O£TBIT 0046 12005C 0052 12005C 005' 847£02 00510, SOFE OOSC 7808 005E D2BO 0060 A2B1 0062 13 0063 DBF9 0065 22 CNTINU . s. 57 58 59 .0 ., .2 .3 .4 RCVS QET8IT .5 •• .7 Oet 51U's TranSMitted add"e.s 'ield ERROR ERROR InitIalize the bit counte" SCLK Transmi tted data RET .8 •• 0066 7B090068 13 70 71 XMIT8 MOV RO • • 9 72 l3 RRC A OOb9 0801 73 74 OObB 22 75 DJNZ II RO, RET Initialize the bIt count." Put the blt to be t"ans'lIltt.d In the Ca""y When all bits hav. been sllnt return 7b OObC 4004 77 006E C2&0 0070 8OF6 79 Ll JC l2 CLR P3 0 ..IMP L3 SETB ..IMP P3 0 L3 78 0072 0280 0074 SOFe! 90 91 92 93 94 L2 .n' I' the carry bit POT't P3 0 eh. c 1 •• ,. port P3 0 Figure 18-17. Loop-Back Mode Software 18-36 11 set. !tet 8044 -Application Examples 19 CHAPTER 19 8044 APPLICATION EXAMPLES 19.0 8044 APPLICATIONS EXAMPLES 19.1 INTERFACING THE 8044 TO A MICROPROCESSOR The 8044 is designed to serve as an intelligent controller for remote peripherals. However, ii'can also be used as an intelligent HOLC/SOLCfrontend fora microprocessor, capable of extensively off-loading link control functions for the CPU. In some applications, the 8044 can even be used for communications preprocessing, in addition to data link control. system with an 8237A OMA controller and an 8259A intenupt controller. DMA Channel One transfers a block of memory to the tri-state latch, while Channel Zero transfers a block of data from the latch to 8088's memory. The 8044's Interrupt 0 signal vectors the CPU into a routine which reads from the internal RAM and writes to the latch. The 8044's Interrupt I signal causes the chip to read from the latch and write to its on-chip data RAM. Both DMA requests and acknowledges are active low. Initially, when the power is applied, a reset pulse coming from the 8284A initializes the SR flip-flops. In this initialization state, the 8044's transmit interrupt and the 8088's transmit DMA request are active; however, the software keeps these signals disabled until either of the two processors are ready to transmit. The software leaves the receive signals enabled, unless the receive buffers are full. In this way either the 8088 or the 8044 are always ready to receive, but they must enable the transmit signal when they have prepared a block to transmit. After a block has been transmitted or received, the DMA and interrupt signals return to the initial state. This section describes a sample hardware interface for attaching the 8044 to an 8088. It is general enough to be extended to other microprocessors such as the 8086 or the 80186. OVERVIEW A sample interface is shown in Figure 19-1. Transmission occurs when the 8088 loads a 64 byte block of memory with some known data. The 8088 then enables the 8237A to OMA this data to the 8044. When the 8044 has received all of the data from the 8237 A, it &ends the data in a SOLC frame. The frame is captured by the Spectron Datascope@* which displays it ,on. a CRT in hex format. ', The receive and transmit buffer sizes for the blocks of data sent between the 8044 and the 8088 have a maximum fixed length. In this case the buffer size was 64· bytes. The buffer size must be less than 192 bytes to enable 8044 to buffer the data in its on-chip RAM. This design allows blocks of data that are less than 64 bytes, and accommodates networks that allow frames of varying size. The first byte transftlrred between the 8088 and the 8044 is 'the byte count to follow; thus the 8044 knows how many bytes to receive before it transmits the SDLC frame. However, when the 8044 sends data to the 8088's memory, the 8237 A will not know if the 8044 will send less than the count the 8237A was programmed for. To solve this problem, the 8237A is operated in the single mode. The 8044 uses an I/O !:lit to generate an interrupt request to the 8259A. In the 8088's interrupt routine, the 8237A's receive DMA channel is disabled, thus allowing blocks of data less than ,64 bytes to be received. In reception, the Datascope sends an SDLC information frame to the 8044. The 8044 receives the SDLC frame, buffers it, and sends it to the 8088's memory. In this example the 8044 is being operated in the NON-AUTO mode; therefore, it does not need to be polled by a primary station in order to transmit. THE INTERFACE' The 8044 does not have a parallel slave port. The 8044's 32 I/O lines can be configured as a local microprocessor bus master. In this configuration, the 8644 can expand the ROM and RAM memory, control peripherals, and communicate with a microprocessor. The 8044, like the 8051, does not have a Ready line, so there is no way to put the 8044 in wait state. The clock on the 8044 cannot be stopped. Dual port RAM could still be used, however, software arbitration would be the only way to prevent collisions. Another way to interface the 8044 with another CPU is to put a FIFO or queue between the two processors, and this was the method chosen for this design. THE SOFTWARE The software for the 8044 and the 8088 is shown in Table 19-1. The 8088 software was written in PL/M86, and the- 8044 software was written in assembly language. Figure 19-2 shows the schematic of the 8044/8Q88 interface. It involves two 8 bit tri-state latches, two SR flipflops, and some logic gates (6 TTL packs). The circuitry implements a one byte FIFO. RS422 transceivers are used, which can be connected to a multidrop,link. Figure 19-3 shows the 8088 and support circuitry; the memory and decoders are not shown. It is a b/lSic 8088 Min Mode The 8044 software begins by initializing the stack, interrupt priorities, and triggering types for the interrupts. At ,this point, the SIU parameter registers are initialized. The receive and transmit buffer starting addresses and lengths are loaded for the on-chip 0 MA. This 0 MA is for the serial port. The serial station address and the transmit control bytes are loaded too. January 1985 *Datascope is a trademark of Spectron Inc. 19-1 I-----~--~-------~-I I I I I I I I I I I I I I I I I I I L_~_~____ _~ DATASCOPE, Figure 19-1. Block Diagram of 8088/8044 Interface Test Once the initialization has taken place, the SIU interrupt is enabled, and the external interrupt which receives bytes from the 8088 is enabl~. Setting the 8044's Receive Buffer Empty (RBE) bit el\ables the receiver. If this bit is.reset, no serial data can be received. The 8044 then waits in a loop for either RECEIVE DMA interrupt or the SERIALINT interrupt. The 'RECEIVE DMA interrupt occurs when the 8237 A is transferring a block of data to the 8044. The first time this interrupt occurs; the 8044 reads the latch and loads the count value into the R2 register. On subsequent interrupts, the 8044 reads the latch, loads the data into the transmit buffer, and decrements R2. When R2 reaches zero, the interrupt routine sends the data in an SDLC frame, and disables the RECEIVE DMA interrupt. After the frame has been transmitted; a serial interrupt is generated. The SERIAL INT routine detects that a frame has been transmitted and ,re-enllbles the RECEIVE DMA interrupt. Thus, while the frame is being transmitted through the SIU, the 8237A is inhibited from sending data to the 8044'5 transmit buffer. The TRANSMIT DMA routine sends a' block of data from the 8044's receive buffer to the 8088's memory. Normally this.interrupt·rernains disable,d. Howeyet, if a serial interrupt' occurs, 'and the SERIAL INT routine detects that a frame has been received, it caUs the SEND subroutine. The SEND subroutine loads the number of bytes which were received in the frame ihto the receive buffer, Register R I 'points to the receive buff- . er and R2 is loaded with the count. The TRANSMIT DMA interrupt is enabled, and immediately upon returning from the SERIAL INT routine, the interrupt is acknowledged. Each time the TRANSMIT DMA interrupt occurs, a byte is read from the receive buffer, wtitten to the latch, and R2 is decremented. When R2 reaches 0, the TRANSMIJ' DMA interrupt is di,sabled,_ the SIU receiver is re-enabled, and the 8044 interrupts the 8088. The 8088 software simply transmits a blOCk of data and receives a block of data, then stops. The software begins by initializing the 8237 A, and the 8259A. It then loads a block of memory with some data and enables the 8237 A to transmit the data. In the meantime the 8088 waits in a loop. After, a block of data is received from the 8044, the , 8088 is interrupted, and it shuts off the 8237A receive DMA. CONCLUSION For the software shown in Table 19-1, the transfer rat!! from the 8088's rnemory to the 8044 was measured at 75K bytes/sec. This transfer rate lafgely depends upon the number of instructions in tbe' 8044's interrupt service routine. Fewer instructions result in a higher transfer rate. " I " There are many ways of interfacing the 8044 locally to another, microprocessor: FIFO's, dual port RAM with software arbitration, and 8255's are just a few. Alternative approaches, \vhich 'may be more optimal for Certain applications, are certainly possible.' . 19-2 OREQ1 OREQa OACKl ." cQ c ~ .... cp ~ CII ..... ~ i.... A POINTER TO THE TRANSMIT ; BUFFER STARTING ADDRESS ; PUT THE FIRST BYTE INTO ; R2 FOR THE COUNT L2: RET! L1: MOV RO, #106 MOVX MOV RET! A,@DPTR R2,A 72 0076 EO 0077 FA 0078 32 0079 0003 0003 020079 0079 0079 007A 007B 007C E7 FO 09 DA08 007E 0080 0082 0084 C2A8 C294 D294 D2CE 0086 32 0087 0023 0023 020087 0087 0087 30CE06 008A 30CFOB 008D 020056 0090 0093 0095 0097 20CBC3 1158 C2CC 32 0098 C2CC 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98' 99 100 101 102 103 104 105 106 107 108 109 110 III 112 113 114 LOLTMPSET ORG LJMP ORG ,; READ THE LATCH ; PUT IT IN TRANSMIT BUFFER ; AFTER READING BYTES, $ 0003H TRANSMILDMA LOLTMP TRANSMILDMA L3: MOV MOVX INC DJNZ A,@RI @DPTR,A RI R2, L3 ; READ BYTE OUT OF THE RECEIVE BUFFER ; WRITE IT TO THE LATCH CLR CLR SETB SETB IE. 0 PI. 4 PI. 4 RBE ; DISABLE INTERRUPT ; CAUSE 8088 INTERRUPT TO TERMINATE DMA ; WHEN ALL BYTES HAVE BEEN SENT ; ENABLE RECEIVER AGAIN RET! . LOLTMPSET ORG LJMP ORG $ 0023H SERIALINT LOLTMP SERIALINT: JNB JNB LJMP RBE,RCV TBF,XMIT ERROR ; WAS A FRAME RECEIVED ; WAS A FRAME TRANSMITTED ; IF NEITHE~ ERROR RCV: JB CALL CLR RET! BOV, ERROR SEND SI ; IF BUFFER OVER~UN THEN ERROR ; SEND THE fRAME TO THE 8088 XMIT: CLR SI 19-~ RUPI™-44 009A D2AA 009C 32 115 116 117 liS SETB RETI EXI END SYMBOL TABLE LISTING NAME BOV . ERROR EXO EXI FIRSLBYTE IE INIT IP Ll L2 L3 LOCTMP PI RBE RBL RBS RCV RECEIVE_DMA RFL RTS SEND SERIALINT SI SMD SP STAD TBF TBL .TBS TCB TCON THI TMOD TRANSMILDMA XMIT TYPE B C B B B o C o C C C C o B o o C C o B C C B o o o B o o o o D o ADDR ADDR ADDR ADDR ADDR ADDR ADDR ADDR ADDR ADDR ADDR ADDR ADDR ADDR ADDR AD DR ADDR ADDR ADDR ADDR ADDR ADDR ADDR ADDR ADDR ADDR ADDR AD DR ADDR ADDR ADDR AODR ADDR ADDR C C ~DDR ATTRIBUTES VALUE 00CSH.3 0056H OOASH.O OOASH.2 0020H.0 OOASH 0026H OOBSH 0074H 0073H OOS6H 00S7H 0090H OOCSH.6 OOCBH OOCCH 0090H 0063H OOCDH 00CSH.5 005SH OOS7H OOCSH.4 ,OOC9H OOSlH OOCEH OOCSH.7 OODBH OODCH OODAH OOSSH OOSDH 00S9H 0079H 009SH A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A REGISTER ·BANK(S) USED: 0, TARGET MACHINE(S): 8044 ASSEMBLY COMPLETE, NO ERRORS FOUND 19-7 Table 19-2. PL/M-86 Compiler Rupi/8088 Interface Example SERIES-III PL/M-86 VI 0 COMPILATION OF MdDULE RUPI_88 OBJECT MODULE PLACED IN ·FI·R88.0BJ COMPILER INVOKED BY: PLM86 86 ·FI R88.SRC SDEBUG STITLE ('RUPI/8088 INTERFACE EXAMPLE') RUPI_88: DO, DECLARE 2 LIT TRUE FALSE LITERALLY LIT LIT RECV_BUFFER(64) XM IT _BUFFER (64 ) BYTE, BYTE, BYTE, BYTE, I WAIT 'LITERALLY' , 'OlH'; 'OOH', 1* 8237 PORTS*I MASTER_CLEAR_37 COMMAND_37 ALL_MASK_37 SINGLE_MASK_37 STATUS 37 REGUEST_REG _37 MODE_REG_37 CLEAR _BYTE_PTR _37 LIT LIT LIT LIT LIT LIT LIT LIT 'OFFDDH', 'OFFD8H', 'OFFDFH', 'OFFDAH'. 'OFFD8H', 'OFFD9H', 'OFFDBH' , 'OFFDCH' , CHO_ADDR CHO_COUNT CHl_ADDR CH130UNT CH2_ADDR CH2_COUNT CH3_ADDR CH3_COUNT LIT LIT LIT LIT LIT LIT LIT LIT 'OFFDOH', 'OFFDIH' , 'OFFD2H', 'OFFD3H', 'OFFD4H', 'OFFD5H', 'OFFD6H', 'OFFD7H'., 1* 8237 BIT ASSIGNMENTS *1 CHO_SEL CHI_SEL CH2_SEL CH3_SEL WRITE XFER READ_XFER DEMAND_MODE SINGLE MODE BLOCK MODE SET_MASK LIT LIT LIT LIT LIT LIT LIT LIT LIT LIT 'OOH' , 'OlH', '02H', '03H', '04H', 'OSH', 'OOH" , '40H', 'BOH', '04H', SEJECT 1* 8259 PORTS *1 STATUS_POLL_59 ICWl_59 OCWI_59 OCW2_59 OCW3_59 ICW2_59 ICW3_59 ICW4_59 'OFFEOH', 'OFFEOH', 'OFFEIH', 'OFFEOH', 'OFFEOH', 'OFFEIH' , 'OFFEIH', 'OFFEIH', LIT LIT LIT LIT LIT LIT LIT LIT 1* INTERRUPT SERVICE ROUTINE *1 PROCEDURE 3 4 5 6 2 2 2 INTERRUPT 32. OUTPUT (SINGLE_MASK_37)=40H, WAIT=FALSE, END, 19-8 7 DISABLE. 1* INITIALIZE 8237 *1 B 9 10 11 12 13 14 15 '16 17 18 19 20 21 I I 1 1 1 I 1 I 1 I 'I I 1 I OUTPUTCM~ST~R_CLEAR_37) OUTPUTCCOMMAND 37) OUTPUTCALL_"AS~37) OUTPUTCMODE_REQ_37) OUTPUT CMODE_REQ_37) OUTPUT CCLEAR_BYTE_PTR_37) OUTPUTCCHO_ADDR) OUTPUTCCHO_ADDR) -OJ -OOH; -40Hi OUTPUTCCHO_COU~T) -64; OUTPUT CCHO_CqUNT) OUTPUT CCHI_ADDR) =00. -40Hi ~~~~~~:~~!:~~~:i) " -0, -040H, -OFH. -CSINQLE_MODE OR WRITE_XFER OR CHO_SEL). -CSINQLE_MODE OR READ_XFER OR CHI_SEL). -40Hi -64; OUTPUTCCHI_COUNT) -00, 1* INITIALIZE 8259 *1 22 OUTPUT ( ICWI_59) 23 24 25 OUTPUT< ICW2_59) OUTPUT< ICW4_59) OUTPUT (OCWI_59) $E,JECT CALL - 26 27 28 29 30 =13H. I*SINQLE MODE. EDQE TRIQQERED INPUT. 8086 INTERRUPT TYPE*I =20H. I*INTERRUPT TYPE 32*1 -03H. I*AUTO-EOI*I -OFEH. I*ENABLE INTERRUPT LEVEL 0*1 SET$I~TERRUPT (32,OFF_RECV_DMA). I*LOAD INTERRUPT VECTOR LOCATION*/ XMIT_BUFFER(0)=64. I*THE FIRST BYTE IN THE BLOCK OF DATA IS THE NUMBER OF BYTES TO BE TRANSFERED. NOT INCLUDINQ THE FIRST BYTE*/ , DO 1= I TO 64. 1* FILL UP THE XMIT_BUFFER WITH DATA *1 'XMIT_BVFFERC J )-1' END. 1 2 2 31 OUTPUTCALL_MASK_37)-OFCH. 32 ENABLE, 33 34 35 WAIT-TRUE. DO WHILE WAIT. END, I I 2 I*ENABLE CHANNEL 1 AND 2 *1 1* A BLOCK OF DATA WILL BE TRANSFERRED TO THE RUPI, WHEN THE RUPI RECEIVES A BLOCK OF DATA IT WILL SEND IT TO THE 8088 MEMORY AND INTERRUPT THE 8088. THE INTERRUPT SERVICE ROUTINE WILL SHUT OFF THE DMA CONTROLLER AND SET 'WAIT' FALSE *1 36 37 38 DO WHILE I, END. I 2 END. MODULE INFORMATION: CODE AREA SIZE CONSTANT AREA SIZE VARIABLE AREA SIZE MAXIMUM STACK SIZE· 124 LINES, READ o PROQRAM WARNINQ8 o PROQRAM ERROR8 00D7H OOOOH 0082H OOIEH 215D OD 130D 30P END OF PL/M-B6 COMPILATION 19-9 A HIGH PERFORMANCE NETWORK USING THE 8044 19.2.1 Introduction This section describes the design of an SOLC data link using the 8044 (RUPI) to implement a primary station and a secondary station. The design was implemented and tested. The following discussion assumes that the reader understands the 8044 and SOLe. This section is divided into two parts. First the data link design example is discussed. Second the software modules used to implement the data link are described. To help the reader understand the discussion of the software, flow charts and software listings are displayed in 'Appendix A-and Appendix B, respectively. Application Description This particular data link design example uses a two wire half-duplex multidrop topology as showri in figure 19-4. In an SOLC multidrop topology the primary station communicates with each secondary station. The secondary stations communicate only to the primary. Because of this hierarchial architecture, the logical topology for an SOLC multidrop is a star as shown in figure 19-5. Although the physical topology of this data link is multidrop, the easiest way to understand the information flow is to think of the logical (star) topology. The term data link in this case refers to the logical communication pathways between the primary station and the seconc\ary stations. The data links are shown in figure 19-5 as two way arrows. The application example uses dumb async terminals to interface to the SOLC network. Each secondary station has an async terminal connected to it. The secondary stations are in effect protocol converters which allows any async terminal to communicate with any other async terminal on the network. The secondary stations use an 8044 with a UART to convert SOLC to async. Figure 19-6 displays a block diagram of the data link. The primary station, controls the data link. In addition to data link control the primary provides a higher level layer which a path control function or networking layer. The primary serves as a message exchange or switch. It receives information from one secondary station and retransmits it to another secondary station. Thus a virtual end to end connection is made between any two secondary stations on the network. is ,Three separate software modules were written for this network. The first module is a Secondary Station Oriver (SSO) which provides an SOLC data link interface and a user interface. This module is a general purpose driver which requires application software to run it. The uSer interface to the driver provides four functions: OPEN. CLOSE, TRANSMIT, and SIU_RECV. Using these four functions properly will allow any application software to communicate over this SOLC data link without knowing the details of SOLC. The secondary station driver uses the 8044's AUTO mode. The second module is 'an example of application software which is liIiked to the secondary station driver. This module drives the 8251A, buffers data, and interfaces with the secondary station driver's user interface. The third module is a primary station, which is a standalone program (I.e., it is not linked to any other module). The primary station uses the 8044'5 NONAUTO or FLEXIBLE mode. In addition to controlling the data link it acts as a message switch. Each time a secondary station transmits a frame, it places ,the destination address of the frame in the first byte of the information or I field. When the primary station receives a frame, it removes the first byte in the I field and retransmits the frame to the secondary station whose address matches this byte. This network provides two complete layers of the OSI (Open Systems Interconnection) -reference model: the , physical layer and the data link layer. The physical layer implementation uses the RS-422 electrical interface. The mechanical medium consists of ribbon cable and connectors. The data link layer is defined by SOLe. SOLC's use of acknowledgements and frame numbering guarantees that messages will be received in the same order in which they were sent. It also guarantees message integrity over the data link. However this network will not guarantee secondary to secondary message delivery, since there are acknowledgements between secondary stations. 19.2.2 Hardware The schematic of the hardware is given in figure \9-7 . The 8251A is used as an async communications controller, in support of the 8044. TxROY and RxROY on the 825 IA are both tied to the two available external interrupts of the 8044 since the secondary station driver is totally interrupt driven. The 8044 buffers the data and some variables in a 2016 (2K x 8 static RAM). The 8254 programmable interval timer is employed as a programmable baud rate generator and system clock driver for the 8251A. The third output from the 8254 could be used as an external baud rate generator for the 8044. The 2732A shown in the diagram was not used since the software for both the primary and secondary stations used far less than the 4 Kbytes provided on the 8744. For the async interface. the standard RS-232 PRIMARY STATION SECONDARY STATION SECONDARY STATION SECONDARY STATION Figure 19-4. SOLC Multidrop Topology ·mechanical and electrical interface was used. For the SOLe channel, a standard two wire three state RS-422 driver is used. A DIP switch connected to one of the available ports on the 8044 allows the baud rate, parity, and stop bits to be changed on the async inter- . face. The primary station hardware does not use the USART, 8254, nor the RS-232 drivers. 19.2.3 SOLe Basic Repertoire The SOLe commands and responses implemented in the data link include the SOLe Basic Repertoire as defined in the IBM SOLe General Information manual. Table 19-3 shows the commands and responses that the primary and the secondary station in this data link design recognize and send. SECONDARY STATION SECONDARY STATION PRIMARY STATION SECONDARY STATION SECONDARY STATION Figure 19-5. SOLC Logical Topology 19-11 > O:z ~Q ~~ ,....---'--....., frl:ii I/) > a:z..-_ _ _ _..... ~Q ~ ~~ L!J zl- [!] .. ...I 0< zi!!: >::0 a: C>
I- 0: < ::0 a: Q. Figure 19-6. Block Diagram of the Data Link Application Example 19-12 : : rJ : ~;~ ~·T;lll ~, 6 : iii L 9 -: -~ -1:11 ~ 1 ,I, --- ~ II 'YI' • . , ~ I '-!" 1 ~ ~ ~ gggggggg , ,I' "'I' "I" I I' •" ,; S -- .. " " 8 "l Figure 19-7. Schematic of Async/SDLC Secondary Station Protocol Converter 19-13 Table 19-3. Data Link Commands and Responses Implemented for This Design PRIMARY STATION Unnumbered Supervisory Information Responses Recognized Commands Sent UA OM FRMR -RD SNRM DISC RR RNR RR RNR I I SECONDARY STATION Unnumbered CommanGis Recognized Responses Sent SNRM . DISC -TEST UA OM FRMR -RD -TEST Supervisory RR RNR REJ RR RNR Information 1 I - not included in the SDLC Basic Repertoire The term command specifically means all frames which the primary station transmits and the secondary stations receive. Response refers to frames which the secondary stations transmit and the primary station receives. Number of Outstanding Frames This particular data link design only allows one outstanding frame before it must receive an acknowledgement. Immediate acknowledgement allows the secondary station drivers to use the AUTO mode. In addition, one outstanding frame uses less memory for buffering, and the software becomes easier to manage. 19.2.4 Secondary Station Driver using AUTO mode The 8044 secondary station driver (SSD) was written as a general purpose SDLC driver. It was written to be linked to an application module. The application software implements the actual application in addition to interfacing to the SSD. The main application could be, a ·printer or plotter, a medical intrument, or a terminal. The SSD is independent of the main application, it just provides the SDLC communications. Existing 8051 applications could add qigh performance SDLC communications capability by linking the SSD to the existing software and providing additional software to be able to communicate with/ the SSD. Data Link Interface and User Interface States The SSD has two software interfaces: a data link interface and a user interface as show in Figure 19:8. The data link interface is the part of the software which controls the SDLC communications. It handles link access, command recognition/response, acknowledgements, and error recovery. The user interface provides four functions: OPEN, CLOSE, TRANSMIT, and SIU RECV. These are the onl~ four functions which the application software has to interface in order to com~ municate using SDLC. These four functions are common to many 110 drivers like floppy and hard disks, keyboard/CRT, and async communication drivers. The data link and the user interface each have their own states. Each interface can only be in one state at any time. The SSD uses the states of these two interfaces to help synchronize the application module to the data link. There are three states which the secondary station data link interface can be in: Logical Disconnect State (L_D_S). Frame Reject State (FRMR_S), and the Information Transfer State (1_ T _S). The Logical Disconnect State is when a station is physically connected to the channel but either the primary or secondary have not agreed to enter the Information Transfer State. Both the primary and the secondary stations synchronize to enter into the Information Transfer State. Only when the secondary station is in the 1_T _S is it able to transfer data or information to the primary. The Frame Reject State (FRMR_S) indicates that the secondary station has lost software synchronization with the primary or encountered some kind of error condition. When the secondary station is in the FRMR_S, the primary station must reset the secondary to resynchronize. The user interface has two states, open or closed. In the closed state the user program does not want to communicate over the network. The communications channel is closed and not available for use. The secondary station tells the primary this by responding to all commands with DM. The primary continues to poll the secondary in Case it wants to enter the 1_T _S state. When the user program hegins communication over the data link it goes into the open state. It does this by calling the OPEN procedure. When the user interface is in the open state it may transfer information to the primary. 19-14 SECONDARY STATION SECONDARY STATION DRIVER MODULE APPLICATION MODULE DATA LINK INTERFACE SSD INTERFACE " ~ ~ .. USER INTERFACE I' USER STATES SSD INTERFACE PROCEDURES 1. OPEN 2. CLOSED DATA LINK STATES 1. LOGICAL DISCONNECT STATE 2. INFORMATION TRANSFER STATE 3. FRAME REJECT STATE OPEN CLOSE TRANSMIT SIU RECV Figure 19-8. Secondary Station Software Modules 19-15 Secondary Stations Commands, Responses and - A command can not be recognized by the secondary station. - There is a buffer overrun. - The Nr that was received from the primary station is invalid. ' State Transitions Table 19-4 shows the commands which the secondary station recognizes and the responses it generates. The first row in table 19-4 displays commands the secondary station recognizes and each column shows the potential responses with respect to secondary station. For example, if the secondary is in the Logical Disconnect State it will only respond with DM, unless it receives a SNRM command and the user state is open. If this is the case, then the response will be UA and the secondary station will move into the I_T_S. Figure 19-9 shows the state diagram of the secondary station. When power is first applied to the secondary station, it goes into the Logical Disconnect State. As mentioned above, the ,_T _S is entered when the secondary station receives a SNRM command and the user state is open. The secondary responds with UA to let the primary know that it has accepted the SNRM and is entering the I_T_S. The I_T_S can go into either the L_D_S or the FRMR_S. The ,_T _S goes into the L_D_S if the primary sends the secondary DISC. The secondary has to respond with UA, and then goes into the L_D_S. If the user interface changes 'from open to close state, then the secondary sends RD. This causes the primary to send a DISC. The FRMR_S is entered when a secondary station is in the I~ T _S and either one of the following conditions occurs. The secondary station cannot 'eave the FRMR_S until it receives a SNRM or a DISC command. ' Software description of the SSD To aid in following the description of the software, the reader may either look at the flow charts which are given for each procedure, or read the PLlM-51 listing provided in Appendix A. A block diagram of the software structure of th~ SSD is given in figure 19-10. A complete module is identified by the dotted box, and a procedure is identified by the solid box. Therefore the SIU _RECV procedure is not included in the SSD module, it exists in the' application software. Two or more procedures connected by a solid line means the procedure above calls the procedure below. Transmit, Power_on_D, Close, and Open are all called by the application software. Procedures without any solid lines connected above are interrupt procedures. The only interrupt procedure in the SSD module is the SIU _INT. The entire SSD module is interrupt driven. Its design allows the application program could handle real time events or just dedicate more CPU time to ,the application program. The SIU _INT is the only interrupt pro- Table 19·4 . Secondary Station Responses to Primary Station Commands Data Link States Information transfer state I RR I RR RNR RD FRMR I RR RNR RD FRMR Primary Station Commands RNR SNRM I RR RNR RD FRMR DISC RD RD UA TEST UA Test Logical disconnect state DM, DM DM DM DM DM UA Frame reject state FRMR FRMR FRMR FRMR UA 19-16 UA DISC UA ~~~ER ____________~ Figure 19-9. State Diagram of Secondary Station ,19-17 1---------------------1 r-- 1 1 1 III l- I I- e (1)1 u III 1 I- I Z Z 0 ...-- u ~ I-! I r- '-- .--III l- 1 e I I I I- (I) ~ I :I! ...I '-- ~ r- - III z ! Q. ILl ~ :I! t- '--- I (I) ILl '--- 0 I- I >< ::) ~ I :I! 0 '-- u '--- I ~ :I! ...I I- r--- I I '--- I I ----- --_..-:_-----, .--Ii! ~ i r-I > L.... I ::)' iii '-- I I I I >< L 1 I I I I I r-- j 1 I I - ~ I 1 '--- Z iii I I j I Q ! I z z ::) U I- I CD ::) Q I I -I II: :I! ILl I I Q ILl ILl z~ r-Q t-- I I ~ (I) '-- r-- - (I) 0 .-!-I i L---------.....:----l l- j (I) z e~ I- L...- 1._._._.- _._._._. Figure 19-10. Secondary Station Driver 19-18 For the second case, if the STATION_STATE is in the 1_T _S but the SIU left the AUTO mode, then the CPU must determine why the AUTO mode was exited, and generate a response to the primary. There are four reasons for the SIU to automatically leave the AUTO mode. The following is a list of these reasons, and the responses given by the SSD based on each reason. cedure in the SSD. It is automatically entered when an SIU interrupt occurs. This particular interrupt can be the lowest priority interrupt in the system. SSD Initialization Upon reset the application software is entered first. Tl:le application software initializies its own variables then calls Power_On_D which is the SSD's initialization routine. The SSD's initialization sets up the transmit and receive data buffer pointers (TBS and RBS), the receive buffer length (RBL), and loads the State variables. The STATION_STATE begins in the L_ D_S state, and the USER_STATE begins in the closed state. Finally Power_On_D initializes XMIT_ BUFFER_EMPTY which is a bit flag. This flag serves as a semaphore between the SSD and the application software to indicate the status of the on chip transmit buffer. The SSD does not set the station address. It is the application software's responsibility to do this. After initialization, the SSD is ready to respond to all of the primary stations commands. Each time a frame is received with a matching station address and a good CRC, the ~IU _INT procedure is entered. I. 1.1e SIU has received a command field it does not recognize. Response: If the CPU recognizes the command, it generates the appropriate response. If neither the SIU nor the CPU recognize the command, then a FRMR response is sent. 2. The SIU has received a Sequence Error Sent (SES= I in NSNR register). Nr(P) -# Ns(S)+ I, and Nr(P) Ns(S). Response: Send FRMR. * 3. A buffer overrun has occured. BOV=I in STS register. Response: Send FRMR. 4. An I frame with data was received while RPB= I. Response: Go back into AUTO mode and send an AUTO mode response. SIU_INT Procedure In addition to the above reasons, there is one condition where the CPU forces the SIU out of the AUTO mode. This is discussed in the SSD's User Interface Procedures section in the CLOSED procedure description. The first thing the SIU_INT procedure clears the serial interrupt _bit (SI) in the STS register. If the SIU_ INT procedure returns with this bit set, another SI interrupt will occur. Finally, case three is when the STATION_STATE is in the 1_T _S and the AUtO mode. The CPU first looks at the TBF bit. If this bit is 0 then the interrupt may have been caused by a frame which was transmitted and acknowledged. Therefore the XMIT_ BUFFER_EMPTY flag is set again indicating that the application software can transmit another frame. The SIU _INT procedure is branches three independent cases. The first case i~ entered if the STATION_STATE is not in the I_T_S. If this is true, then the SIU is not in the AUTO mode, and the CPU will have to respond to the primary on its own. (Remember that the AUTO mode is entered when the STATION_STATE enters into I_T_S.) If the STATION_STATE is in the I_T_S, then either the SIU has just left the AUTO mode, or is still in the AUTO mode. This is the second and third case respectively. In the first case, if the STA TION_STATE is not in the 1_T _S, then it must be in either the L_D _S or the FRMR_S. In either case a separate procedure is called based on which state the station is in. The In_ Disconnect_State procedure sends to the primary a DM response, unless it received a SNRM command and the Uf?ER_STATE equals open. In that case the SIU sends an UA and enters into the 1_T _So The In_FRMR_ State procedure· will send the. primary the FRMR response unless it received either a DISC or an SNRM. If the primary's command was a DISC, then the secondary will send an UA and enter into the L_D_S. If the primary's command was a SNRM, then the secondarywill send an UA, enter into the 1_T _S, and clear NSNR register. The other reason this section of code could be entered is if a valid I frame was received. When a good I frame is received the RBE bit equals O. This means that the receiver is disabled. If the primary were to poll the 8044 while RBE=O, it would time out since no response would given. Time outs reduce network throughput. To improve network performance, the CPU first sets RBP, then sets Rim. Now when the primary polls the 8044 an immediate RNR response is given. At this point the SSD calls the application software procedureSIU_RECV and passes the length of the data as a parameter. The SIU _RECV procedure reads the data out of the receive buffer then returns to the SSD module. Now that the receive information has been transfered, RBP can be cleared. 19-19 Command_Oecode Procedure The Command_Decode procedure is called from the SIU _INT procedure when the STATION_STATE = 1_T _S and the SIU left the AUTO mode as a result , C·FIELD OF THE REJECTED COMMAND, AS RECEIVED I r THIS STATION'S PRESENT Ns l , THIS SlATION'S PRESENT Nr , o o I HIGH·ORDER ~ , W X Y Z '0 o o o 1 RECEIVED DISAGREES WITH tRANSMITTED Ns BUFFER OVERRUN (I·FIELD IS too LONG) PROHIBITED I·FIELD RECEIVED INVALID OR NONIMPLEMENTED COMMAND Figure 19-1,1 . Information Field of the FRMR Response, 'as T~ansmltted of not being able to recognize the receive control byte. Commands which the SIU' AUTO mode does not recognize are handled here. The commands recogniz· ed in this procedure are: SNRM, DISC, and TEST. Any other command received will generate a Frame Reject with the nonimplemented command bit set in the third data byte of the FRMR frame. Any additional unnumbered frame commands which the .secondary station is going to implement, should be implemented in this procedure. " If a SNRM is received the command_decode procedure calls the SNRM_Response procedure. The SNRM_ 'Response procedure sets 'the STATION_STATE = I_ T S, clears the NSNR register and responds with an UA frame. If DISC is received, the command~deCode procedure sets ,the STATIqN_STATE = L_D_S, and responds with an UA frame. WheJ) a TEST frame is received, and there 15 no buffer overrun, the command_decode procedure responds with a T~ST - frame retransmitting the same, data it received. However if a TEST frame is received and there is a buffefover· rlln, the!! a, TEST frame will b,e sent withQut any data, instead of a ~RMR with the b}lffer overrun bit set. a Frame Reject Procedures, There are two procedures which handle the FRMR state: XMIT _FRMR and IN_FRMR_ST ATE. XMIT':'" FRMR is entered when. the secondary station first goes into the FRMR state. The frame reject response frame contains the FRMR'resporise in the'command field'plus three' additional data bytes in the I field. Figure 19-11 displays the format for the three data byte in the I field of a FRMR response. The XMIT _FRMR procedure sets up the Frame Reject response frame based on the parameter REASON which is passed to it. Each place in the SSD code that calls the XMIT _FRMR procedure, passes the REASON that this procedure was called, which in turn is communicated to the primary station. The XMIT_FRMR procedure uses three bytes of internal RAM which it initializes for the correct response. The'TBS and TBL registers are then changed to point to the FRMR buffer so that when a response is sent these three bytes will be.included in the I field. The IN_FRMR_STATE procedure i$ called by the SIU_INT procedure when the STATION_STATE already is in the FRMR state and a response is required. fhe IN_FRMR_STATE procedure will only allow two commands to remove the secondary station from the FRMR state: SNRM and DISC. Any other command which is received while in the FRMR state will result a FRMR response frame. XMIT _UNNUMBERED Procedure This is a general purpose transmit procedure, used only in the FLEXIBLE mode, which sends unnumbered responses to the primary. It-accepts the control byte as a parameter, and also expects·the TBL register to be set before the procedure·is called. This proeedure waits until·the frame has been transmitted before returning. If this procedure returned before the transmit interrupt was.generated, the SIU::'IN'f routine would be entered. The SIU _INT rQutine would not be able to distinguish this condition. 19-20 SSD's User Interface Procedures -- OPEN, ~LOSE, TRA,NSMIT, SIU_~ECV -- are discussed in the , following' s~ction. The OPEN procedure is the simplest of all, it changes the USER STATE to OPEN S then returns. This lets the SSD know that the user wants to open the channel for communications. When rhe 'SSD receives a SNRM command, it checks the USER_STATE. If the USER_STATE is open, then the SSD will respond with an UA, and the STATION_STATE enters the I..,-T_S. ' The' CLOSE procedure is also simple, it changes the USER_STATE to CLOSED_S and sets the AM bit to O. Note that when the CPU sets the AM bit to 0 it puts the SIU out of the AUTO mode. This event is asynchronous to the events on the network. As a result an I frame can be lost. This is what can happen. TRANSMIT procedure is called, the SSD expects the STATION_STATE to be in the I_T_S. If it isn't, the SSD refuses to transmit the data. The TRANSMIT procedure first checks to see if the USER_STATE is open, if not the USER_STATE_CLOSED parameter is passed back to the application module. The next thing TRANSMIT checks is the STATION_STATE. If this is not open, then TRANSMIT passes back LINK_ DISCONNECTED. This means that the USER_ STATE is open, but the SSD hasn't received a SNRM commmand from the primary yet. Therefore, the application software should wait awhile and try again. Based on network performance, one knows the maximum amount of time it will take for a station to be polled. If the application software waits this length of time and tries again but still gets a LINK_ DISCONNECTED parameter passed back, higher level recovery must be implemented. I. AM is set to 0 by the CLOSE Procedure. 2. An I frame is received and a SI interrupt occurs. 3. The SIU_INT procedure enters case 2. (STATION_STATE = I_T_S, and AM = 0) 4. Case 2 detects that the USER_STATE = CLOSED_S, sends a RD response and ignores ! th,e fact that an I frame was received. Therefore it is advised to never call the CLOSE procedure or take the stu out of the AUTO mode when it is receiving I frames or an I (rame will be lost. For both the TRANSMIT and SIU _RECV procedures, it is the application software's job to put data into the transmit buffer, and take data out of the receive buffer. The SSD does not transfer data in or out of its transmit or receive bllffers because it does not know what kind of buffering the application software is implementing. What the SSD does do is notify the application software when the transmit buffer is empty, XMIT _BUFFER'_EMPTY = 1, and when the receive buffer is full. One of the functions that the SSD performs to synchronize the application software to ihe SDLC data link. However some oUhe synchronization must. also b~ done by the application software. Remember that the S,SD does not want to hang up the application software -waiting for some event to occur on the SDLC data link, therefore the SSD ,always returns to the application software as soon as possible. For example, when the application software calls the OPEN procedure; the SSD returns immediately. The application softWare thinks that the SDLC channel is now open and it can transmit. This is not the case. For the channel to be open, the SSD must receive a SNRM from the primary and respond with a UA. How~ver, the SSD does not want to hang up the application software waiting for a SNRM' from the primary before returnlrtg from the OPEN procedure. When the Before loading the 'transmit buffer and calling the TRANSMIT procedure, the application software must check to see that XMIT _BUFFER:"'EMPTY = I. This flag tells the application software that it can write new data into the transmit buffer and call the TRANSMIT procedure. After the application software has verified that XMIT _BUFFER_EMPTY = 1, it fills the transmit buffer with the data and calls the TRANSMIT procedure passing the length of the buffer as a parameter. The TRANSMIT procedure checks for three reasons why it might not be able to transmit the frame. I f any of these three reasons are true, the TRANSMIT procedure returns a parameter explaining why it couldn't send the frame. If the application software receives one of these responses, it must rectify the problem and try again. Assuming these three conditions are false, then the SSD clears XMIT _BUFFER_ EMPTY, attempts to send the data and returns the parameter DA TA_ TRANSMITTED. XMIT_ BUFFER_EMPTY will not be set to 1 again until the data has been transmitted and acknowledged. The SIU_RECV procedure must be incorporated into the application software module. When a valid I frame is received by the SIU, it calls the SIU_RECV procedure and passes the length ofthe received data as a parameter. The SIU_RECV procedure must remove all of the data from the receive buffer before returning to the SIU_INT procedure. Linking up to the SSD Figure 19-12 shows necessary parts to include in a PLlM-51 application program that will be linked to the SSD module. RL51 is used to link and locate the SSD and application modules. The command line used to do this is: 19-21 RL51 S:;D,obj,filename.obj,PLM~,l.PB TO filename & RAMSIZE(192) $registe~bank(O) , user$mod: do; $include (reg44.dcl) declare' lit buffer'_length siu_xmit-.:.buffer (buffer_iength) siu_recv _buffer (buffer_length) , xmit_buffe~_empty literally 'literally' , '60', , Iii byte' external idata, oyte bit , external, external; /* external. procedures */ external; close: procedure end close; external using I; open: procedure end open; external using I; /* local procedures After the secondary station PO~e~s up,' it enters the 'terminal 'mode', whicll accepts data from the tetmimll. l:Iowever, before any.'data is 'seI),t, 'the user must confi~ure t~(,': station. The station aiidr,ess and destin,ation address must be set, and the station must be placed online. To configure the station the ESC character is entered at the terminal which puts the protocol converter into the 'configure mode'. Figure 20-13 showS the menu which appears'on the terminal screenl ( I) 8044 Secondary Statioll power_on_d: procedure end power_on_d; transmit: procedure (xmit_buffer_length) ,byte declare xmit_buffer _length end transmit; dress, set th<; destinatio,n, ad4re~s" and go, qnline and offline. Setting the; station address sets the, byte in the STAD reiister. The destination addres~,is the first byte in the I field. Going online or offline results in either calling the OPE~ or CLOSE procedure, respectively. .; external; byte; \ 2345- Set the Station Address Set the Destination Address Go Online Go Offline Return to terminal mode Enter option _ Figure 19-13. Menu for the Protocol Converter */ ' siu_recv: procedure (length) public declare length byte, , using \; - Figure 19-12. Applications Module Link Information , , PUM·51 and Register B~nks The 8044 has four register banks. PL/M-51 assumes that an interrupt procedure never uses the same bank as the procedure it interrupts. The USING attribute of a procedure, or the $REGISTERBANK control, can be used to ensure that. The SSD module uses the, $REGISTERBANK(l) attribute. Some procedures are modified witl;! tile USING attribute based on the register bank level of the calling' procedure. 19.2.5 APPLICATION MODULE; Async to SDLC protocol converter One of the purposes of this application module ino demonstrate how to interface software to the SSD. Another purpose is to implement and test a pratical application. This application software perform& 1/0 \Yith an async terminal ,through a USART, bufferl< data, and also performs 1/0 with the SSD. In addition, it allows the user on the async terminal to: set the statiol;l ad- In the terminal mode data is buffered up in the secondary station. A Line Feed character 'LF' tells the'secondary station to send an I frame. If more 'than 60 bytes are buffered in the secondary'station when a 'LF' is received, the applications software packetizes the data into 60 bytes or less per frame. If a LF is entered when the station is offline, an error message comes on the screen which says 'Unable to Oet Online'. The secondary station also does error checking on the async interface for Parity, Framing Error, and Overrun ErrQr. If one of these errors are detected, an error message is displayed on the terminal 'screen. , , Buffering There are two separate buffers in the )application module: a transmit buffer and a receive buffer. THe transmit buffer receives data from the USART, and sends data to the SSD. The receive buffer receives data from the SSD, and transmits data to the USART. Each buffer 'is a 256 byte software FIFO. If the tranmsit FIFO becomes full and no 'LF' character 'is received, the secondary,sta~ion auwmatically begins sending the ~ta. In addition, the application mOQule will shut 'ofr't,he terII).i!1al's trllnsmitter, using CTS until the :fIFO has been partially emptied. A plock diagram of the buffer" ing for the protQcol converter is given ,in Fi!\~re' 19-14. Application Module Sbftware' ,-' l' '1 i ,,' , ;-:,', I ,..~ I .- " A block diagr~fIl. of fhe, apllli~tion mo~ul~ sQft~a!e is given in, Figure.-,l 9-15 ., T.her~, are .three il)terruJlt MULTIDROP SOLe DATALINK W", II:N i;;; Nil: II: W II: W IL IL IL IL ~ ~ III W III , !:: > :; iii Ul Z () W II: .... .... C> C II: 1 C Ul oW III III CD~ co :; Ul OW CD~ II: ..J ~~ II: W I- !lE Ul W I- > 111CD N '" W > Si Ul C II: --~I 6 0 IL W' 1-; IL ii: )(, ii: () Z > Ul C , I ..J C ()~ z:; >11: UlW CI- C ..J C W II: :; II: Z () ,Figure 19-14. '" N l- iii w, WN 11:" i:;: .... 11: ~\ - ro~; 7 ,~ t4~ Block Diagram of Secondary Station Protocol Converter Illustrating Buffering 19-23 routines in this module: USART _RE<;:V_INT, USART XMIT_INT, and TIMER_O_INT. , The fir~ two are for servicing theUSART. TIMER OINT is used if the TRANSMIT pro-. cedure j;:;- the SSD is called and does not return with the DATA TRANSMITTED parameter. TIMER OINT employs Timer 0 to wait a finite amount of time before tring to transmit again. The highest priority interrupt is USART_RECV _INT. The main program and all the procedures it calls use register bank 0, USART _XMIT _INT and TIMER_O_INT and FIFO R OUT use bank I, while USART_ RECV n~T allii all the procedures it calls use register bank 2~ . on the 8251A is activated,and this interrupt procedure is entered. The routine reads the USART status register to determine if there ,are any errors in the character received. If there are, the character is discarded and the ERROR procedure is called wllich prints the type of error on the screen. If there are no errors, the received character is checked to see if it's an ESC. If it)s an ESC, the MENU procedure is called which allows the user to change the configuration. If neither one of these two conditions exits the received character is inserted into the transmit FIFO. The received character mayor may not be echoed back to the terminal based on the dip switch settings. Transmit FIFO Power_On Procedure The Power_On procedure initializes all of the chips in the system including the 8044. The 8044 is initialized to use the 'on-chip DPLL with NRZI coding, PreFrame Sync, and Timer 1 auto reload at a baud rate of 62.5 Kbps. The 8254 and the .8251A are initialized next based on the DIP switch values attached to port 1 on the 8044. Variables and pointers are initialized, then the SSD's Power-Up Procedure, Power_On_ D, is called. Finally the interrupt system is enabled and the main program is entered. Main Program The main program is a simple loop which waits for a frame transmit command. A frame transmit command is indicated when the variable SEND_DATA is greater than O. The value of SEND _DATA equals the number of 'LF' characters in the transmit FIFO, hence it also indicates the number of ,frames pending transmission. Each time a frame is sent, SEND_DATA is decremented by one. Thus when SEND_DATA is greater than 0, the main program falls down into the next loop which polls the XMIT _BUFFER_EMPTY bit. When XMIT_BUFFER_EMPTY equals I, the SIU XMIT BUFFER can be loaded. The first byte in th;-buffer ~loaded with the destination address while the rest of the buffer is loaded with the data. Bytes are removed from the transmit FIFO and placed into the SIU XMIT BUFFER until one of three things hapPe"n: I. a7 LF, character is read out of the FIFO, 2. the number of bytes loaded equals the size of the SIU_XMIT_BUFFER, or 3. the transmit FIFO is empty. After the SIU XMIT BUFFER is filled, the SSD TRANSMIT procedurels called and the results from the procedure are checked. Any result other than DAT A TRANSMITTED will result in several retries within :0inite amount of time. If all the retries fail then the LINK_DISC procedure is called which sends a message to the terminal, 'Unable to Get Online'. USART _RECV _I NT Procedure When the 8251A receives a character,the RxRDY pin The transmit FIFO consists of two procedures: FIFO_ T IN and FIFO_T_OUT. FIFO_T_IN inserts a character into the FIFO,and FIFO_ T _OUT removes a character from the FIFO. The FIFO itself is an array of 256 bytes called FIFO_ T. There are two pointers used as indexes in the array to address the characters: IN PTR T and OUT_PTR_T. IN_PTR_T points to the location in the array which willstore the next byte of data inserted. OUT _PTR_ T points to the next byte of data removed from the array. Both IN PTR T and OUT PTR T are declared as byte;. TheFIFO_T_ IN Procedme receives a character from the USART _RECV _INT procedure and stores it in the array location pointed to by IN_PTR_T, then IN PTR T is incremented. Similarly, when FIFO_ TOUT ;-; called by the main program, to load the XMIT BUFFER, the byte in the array pointed to byOUT_PTR_T is read, then OUT_PTR'--..T is incremented. Since IN_PTR_ T and OUT _PTR_ T are always incremented, they must be able to roll over when they hit the top of the 256 byte address space. This is done automatically by having both IN_PTR_ T and OUT PTR T declared as bytes. Each character inserted intOthe transmit FIFO is tested to see if it's a .LF. If it is a LF, the variable SEND_DATA is incremented which lets the main program know that it is time to send an I frame. Similarily each character removed from the FIFO is tested. SEND _DATA is decremented for every LF character removed from the FIFO. sm IN PTR T and OUT PTR T are also used to indic-;Ue ho;-many bytes ;;:e in the FIFO, and whether it is full or empty. When a character is placed into the FIFO and IN PTR T is incremented, the FIFO is full ifINPTR-T eQualS OUT_PTR_T. When a character is r~d from the FIFO and OUT _PTR_ T is incremented, the FIFO is empty if OUT _PTR_ T equals IN_PTR_ T. If the FIFO.is neither full nor empty, then it is in use. A byte called BUFFER--,STATUS T is used to indicate one of these three conditions. The application module uses the buffer statu~ information to control the flow of data into and out of the FIFO. When the transmit FIFO is empty, the main program must stop loading bytes into the SIU_ 19-24 r--~-------~--------------------MAIN PROGRAM I I -=::J -I 1 11---_ _ _ _ _ _ _ _---, FIFO_T_OUT "11 C c iiJ .... 'P .... ~ OJ .... 'P I\:) U'! FIFO_T ...,!N 0' :D 0 C -0 ~ c -I! iii' J,. co 1 I iii 3 - 0 I C 1 1/1 CD I I I ~ (/) 0 = :e co II) iiJ I I J [ TIMER_O_INT] I I 1 I I FIFO_R_OUT I : 1_______________________________________________ .....1 I • object code file at compile time, which lists the addresses of each secondary station on the network. XMIT_BUFFER. Just before the FIFO is full, the async input must be shut off using CTS. Also if the FIFO is full and SEND_DATA=O, then SEND_ DATA must be incremented to automatically send the data without a LF. Remote Station Database The,primary station keeps a record of each secondary station on the network. This, is called the Remote Station Database (RSD). The RSD in this software is an array of structures, which can be found in the listing and also in Figure 19-16. Each RSD stores the necessary information about that secondary ,station, Receive FIFO Th~ receive FIFO operates in a similiar fashion as the transmit FIFO does. Data is inserted into the receive FIFO from the SIU _RECV procedure. The SIU_ RECV procedure is called by the SIU _INT procedure when a valid I frame is received. The SIU_RECV procedure mearly polls the receive FIFO status to see if it's full before transfering each byte from the SIU_ RECV _BUFFER into the receive FIFO. If the receive FIFO is full, the SIU _RECV procedure remains polling the FIFO status until it can insert the rest of the data. In the meantime, the SIU AUTO mode is responding to all polls from the primary with a RNR supervisory frame. The USART_XMIT _INT interrupt procedure removes data from the receive FIFO and transmits it to the terminal. The USART transmit interrupt remains enabled while the receive FIFO has data in it. When the receive FIFO becomes empty, the USART transmit interrupt is disabled. To add additional secondary stations to the network, one simply adjusts the NUMBER_OF _STATIONS declaration, and adds the additional addresses to the SECONDARY _ADDRESSES table. The number of RSDs is automatically allocated at compile time, and the primary automatically polls each station whose address is in the SECONDARY _ADDRESSES table. Memory for the RSDs resides in external RAM. Based on memory requirements for each RSD, the maximum number of stations can be easily buffered in external' RAM. (254 secondary stations is the maximum number SDLC will address on the datalink; i.e. 8 bit address, FF H is the broadcast address, and 0 is the nul address. Each RSD uses 70 bytes of RAM. 70 x 254 = 17,780.) The station state, in the RSD structure, maintain the status of the secondary. If this byte indicates that the secondary is in the DISCONNECT _S, then the primary tries to put the station in the 1_T _S by sending a SNRM. If the response is ali VA then the station state changes into the 1_T _So Any other frame received results in the station state remaining in the DISCONNECT_S. When the RSD indicates that the station state is in the 1_T _S, the primary will send either a I, RR, or RNR command, depending on the local and remote buffer status. When the station state equals GO_ TO--"DISC the primary will send a DISC command. If the response is an VA frame, the station state will change to DISCONNECT _S, else the station state will remain in GO_TO _DISC. The station state is set to GO_TO_DISC when one of the following responses occur: 19.2.6 PRIMARY STATION The primary station is responsible for cQntrolling the data link. It issues commands to the secondary stations and receives responses from them. The primary station controls link access, link level error recovery, and the flow of information. Secondaries can only transmit when polled by the primary. Most primary stations are either micro/minicomputers, or front end processors to a mainframe compu~er. The example primary station in this design is standalone. It is possible for the 8044 to be used as an intelligent front end processor for a microprocessor, implementing the primary station fUnctions. This latter type of design would extensively off-load link control functions for the microprocessor. The code listed in this paper can be used as the basis for this primary station design. Additional software is required to interface to the microprocessor. A hardware design example for interfacing the 8044 to a microprocessor can be found in the applications section of this handbook. I. A receive buffer overrun in the primary. 2. An I frame is received and Nr(P) t-Ns(S). 3. An I fral\1e or a Supervisory frame is received and Ns(P) + 1 f. Nr(S) 'and Ns(P) t-Nr(S). The primary station must know the addresses of all the stations which will be on the network. The software for this primary needs to know this before it is compiled, however a more flexible system would down load these parameters. From the listing of the software it can be seen thai the variable NUMBER_OF _STATIONS is a literal declaration, which is 2 in this design example. There were three stations tested o'n this data link, two secondaries and one ,primary. Following the NUMBER_ OF _STATIONS declaration is a table, loaded into the 19-26 4. A FRMR response is received. 5. An RD response is received. 6. An unknown response is received. The send count (Ns) and receive count (Nr) are also maintained in the RSD. Each time an I frame is sent by the primary and acknowledged by the secondary, Ns is incremented. Nr is incremented each time a valid I frame is received, BUFFER_STATUS indicates the status of the secondary stations buffer. If a RR response is received, BUFFER_STATUS is set to BUFFER_ several procedures. The POWER_ON procedure begins by initializing the SIU's DMA and enabling the receiver. Then each RSD is initialized. The DPLL and the timers are set, and finally the TIMER 0 interrupt is enabled. READY. If a RNR response is received, BUFFER_ STATUS is set to BUFFER_NOT_READY. Buffering The buffering for the primary station is as follows: within each. RSD is a 64 byte array buffer which is initially empty. When the primary receives an I frame, it looks for a match between the first byte of the I frame and the addresses of the secondaries on the network. If a match exits, the primary places the data in the RSD buffer of the destination station. The INFO_L.ENGTH in the RSD indicates how many bytes are in the buffer. If INFO LENGTH equals O,then the buffer is empty. The Primary can buffer only one I frame per station. If a second I frame is received while the addressed secondary's RSD buffer is full, the primary cannot receive any more I frames. At this point the primary continues to poll the secondaries using RNR supervisory frame. The main program consists of an iterative do loop· within a do forever loop. The iterative do loop polls each secondary station once through the do loop. The variable STATION NUMBER is the counter for the iterative do statem~ which is also used as an index to the array of RSD structures. The primary station issues one command and receives one response from every secondary station each time through the loop. The first statement in the loop loads the secondary station address, indexed by STATION_NUMBER into the array of the RSD structures. Now when the primary sends a command it will have the secondary's address in the addre~s field of the frame. The automatic address recognition feature is used by the primary to recognize the response from the secondary. Primary Station Software Next the main program determines the secondary stations state. Based on this state, the primary knows what command to send. If the station is in the DISCONNECT _S, the primary calls the SNRM_P A block diagram of the primary station software is shown in Figure 19-17. The primary station software consists of a main program, one interrupt routine, and RSD. . STATION-ADDRESS STATION-STATE NS NR BUFFER-STATUS INFO-LENGTH DATA (0) OATA (63) Figure 19-16. Remote Station Database Structure 19-27 procedure to try apd ,puUhe secondary in the 1_'I' ~ S. If the station state is in the GO 'I' 0 DISC state the DISC_P is calJerJ, to try and p~t th;5econdary i~ the L_D _So If the secondary is in neither one of the above two states, then it is in the I 'I' S. When the secondary is in the 1_'I' _S, the primarycould send one of three commands: I, RR, or RNR. If'the RSD's buffer has data in it, indicated by INFO _LENG'I'H being greater than zero, and the secondary's BUFFER_S'I'A'I'US equals BUFFER_READY, then an I frame will be sent. Else if RPB=O, a RR supervisory frame will be sent. If neither one of these cases is true, then an RNR will be sent. 'I'he last statement in the main program checks the RPB bit. If set to one, the BUFFER_'I'RANSFER procedure is calJed, which transfers the data from the SIU receive buffer to the appropriate RSD buffer. Receive Time Out Each time a frame is transmitted, the primary sets a receive time out timer; 'I'imer O. If a response is nOt received within a certain time, the primary returns to the main program and continues polling the rest of the stations. 'I'he minimum length of time the primary should wait for a response can be calculated as the sum of -the following parameters. I. propagation time to the secondary station 2. clear-to-send time at the secondary station's DCE 3. appropriate time for secondary station processing 4. propagation time from the secondary station 5. maximum frame length time 'I'he clear-to-send time and the propagation time are negligible for a local network at low bit rates. However, the turnaround time and the maximum frame length time are significant factors. Using the 8044 secondaries in the AU'I'O mode minhnizes turnaround time. 'I'he maximum frame length time comes from the fact the 8044 does not generate an interrupt from a received frame until it has been completely received, and the CRC is verified as correct. 'I'his means that the time-out is bit rate dependent. Ns and Nr check Procedures Each time an I frame or supervisory frame is received, the Nr field in the control byte must be checked. Since this 'data link onlyalJows one outstanding frame, a valid Nr would satisfy either one of two equations; Ns(P) + 1 = Nr(S) the I frame previously sent by the primary is acknowledged, Ns(P) = Nr(S) the I frame previously sent is not acknowledged. If either one of these two cases is}rue, the CHECK_NR procedure returns a parameter of 'I' RUE; otherwise a FALSE parameter is returned. If an acknowledgement is Jeceived,the Ns byte in the RSD structure is incremented, and the Information buffer may be cleared. Otherwise the information buffer remains full. MAIN PROGRAM BUFFER TRANSFER \TIMER_O_INT! Figure 19-17. Block Diagram of Primary Station Software Structure 19-28 When an I frame is received, the Ns field has to be checked also. If Nr(P) = Ns(S), then the procedure returns TRUE, otherwise a FALSE is returned. Receive Procedure The receive procedure is called when a supervisory or information frame is sent, and a response is received before the time-out period. The RECEIVE procedure can be broken down into three parts. The first part is entered if an I frame is received. When an I frame is received, Ns, Nr and buffer overrun are checked. If there is a buffer overrun, or there is an error in either Ns or Nr, then the station state is set to GO_TO_ DISC. Otherwise Nr in the RSD is incremented, the receive field length is saved, and the RPB bit is set. By incrementing the Nr field, the I frame just received is acknowledged the next time the primary polls the secondary with an I frame or a supervisory frame. Setting RBP protects the received data, and also tells the main program that there is data to transfer to one of the RSD buffers. If a supervisory frame is received, the Nr field is checked. If a FALSE is returned, then the station state is set to GO_TO_DISC. If the supervisory frame received was an RNR, buffer status is set to not ready. If the response is not an I frame, nor a supervisory frame, then it must be an Unnumbered frame. The only~ Unnumbered frames the primary recognizes are UA, DM, and FRMR. In any event, the station state is set to GO TO DISC. However if the frame received is a FRMR;-Nr in the second data byte of the I field is checked to see if the secondary acknowledged an I frame received before it went into the FRMR state. I f this is not done and the secondary ackoowledged an I frame which the primary did not recognize, the primary transmits, the I frame when the secondary returns to the I_T_So In this case, the secondary would receive duplicate I frames. 19-29 APPENDIX A 8044 SOFTWARE FLOWCHARTS 1g.:30 POWER-ON-D PROCEDURE' USER-STATE = CLOSED-S STATION-STATION = DISCONNECT-S TBS = SIU-XMIT-BUFFER'STARTING ADDRESS RBS = SIU-RECV-BUFFER STARTING ADDRESS RBL = BUFFER LENGTH ENABLE SIU RECEIVER: RBE XMIT-BUFFER-EMPTY =1 =1 RE.TURN CLOSE PROCEDURE RETURN OPEN PROCEDURE USER STATE = OPEN_S RETURN Figure 19-18. Secondary Station Driver Flow Chart 19-31 XMIT-UNNUMBERED PROCEDU~E TRANSMIT PROCEDURE STATUS = USER-STATE-CLOSE STATUS = LINK_DISCONNECTED = STATUS ')VERFLOW XMIT-BUFFER-EMPTY TBL = 0 = XMIT-BUFFER-LENGTH I-FRAME:-LENGTH STATUS = = XMIT-BUFFER-LENG:rH DATA-TRANSMITTED Figure 19-19_ Secondary Station Driver Flow Chart 19-32 XMIT-FRMR PROCEDURE FRMR-BUFFER (2) = REASON STATION-STATE = FRMR-S N v SEND FRMR FRAME Figure 19-20_ Secondary Station Driver Flow Chart 19-33 IN·DISCONNECT·STATE PROCEDURE N SNRM·RESPONSE PROCEDURE Figure 19-21. Secondary Station Driver Flow Chart 19-34 RUPI™.44 IN-FRMR-STATE PROCEDURE y y Figure 19-22. Secondary Station Driver Flow Chart 19-35 COMMAND DeCODE PROCEDURE Figure 19-23. Secondary Station Driver Flow Chart 19-36 SIU·INT PROCEDURE N :!! c: Y IQ iil .... Y cp CALL COMMAND·DECODE N .". en (II n 0 :::J 11---------, Y XMIT·BUFFER·EMPTY 1 = CALL CI. XmJ~~~~~BERED 1 I» .... -< -l -= ::D N C "CJ en I» 0 :::J CALL XMIT·FRMR 0 ~. ...~ ~" 0 ':r I» ~ •I CALL COMMAND DECODE t .". MAIN PROGRAM LOAD DESTINATION ADDRESS IN FIRST BYTE OF SIU-XMIT BUFFER LOAD INFORMATION INTO SIU XMIT-BUFFER SIU BUFFER LENGTH OR FIFO-T EMPTY Y OUTPUT MESSAGE TO TERMINAL 'UNABLE TO GET ON LINE' Figure 19-25~ Application Module Flow Chart 19-38 RUPI TIt·44 USART·RECV·INT INTERRUPT PROCEDURE N Figure 19-26. Application Module Flow Chart ~1g:.39 OUTPUT MENU . TO TERMINAL MENU PROCEDURE CALL OUTPUT-MESSAGE 'ENTER THE STATION ADDRESS:~_ CALL GET -HEX SHIFT TO LEFT BY FOUR' LOAD ADDRESS INTO STAD CALL OUTPUT-MESSAGE 'THE NEW STATION ADDRESS:_~ N', CALL OUTPUT-MESSAGE 'ENTER THE DESTINATION ADDRESS: .. __ CALL GET-HEX SHIFT TO LEFT BY FOUR LOAD ADDRESS INTO DESTINATION-ADDRESS CALL OUT-MESSAGE 'THE NEW DESTINATION ADDRESS RETURN RETURN Figure 19-27. Application Module Flow Chart J 9.:40 IS:~ ERROR PROCEDUR,E Y. RESET ERROR FLAGS ON USART Figure 19-28 Application Module Flow Chart 19-41 FIFO-T-OUT PROCEDURE Figure 19-29 _ Application Module Flow Chart 19--42 FIFO·T·IN PROCEDURE N RETURN Figure 19-30. Application Module Flow Chart 19-43 SIU·RECV PROCEDURE Figure 19-31. Application Module Flow Chart 19-44 POWER ON I INITIALIZE SIU REGISTERS I I FOR EACH STATION INITIALIZE RSD RECORDS '1. STATION-ADDRESS 2. STATION-STATE DISCONNECT 3. BUFFER-STATE = BUFFER-NOT-READV 4. INFO-LENGTH = 0 = I I RETURN I Figure 19-32. Primary Station Flow Charts 19-45 ADDRESS NEXT STATION SET STAD PRIMARY STATION MAIN PROGRAM CALL SEND-SNRM CALL SEND-DISC Y Y Y CALL XMIT I T S (T-I-FRAME) t-------~ CALL XMIT·I-T·S (T-RR) Y Y CALL BUFFER·TRANSFER Figure 19-33. Primary Station Flow Charts 19-46 SEND·SNRM PROCEDURE N SEND·DISC PROCEDURE ~ N STATION·STATE = DISCONNECT!S BUFFER·STATUS = BUFFER·NOT·READY Figure 19-34. Primary Station Flow Charts 19-47 XMIT·I·T·S PROCEDURE BUILD CONTROL FIELD USING EITHER I, RR, RNR AND NR AND/OR NS CALL RECEIVE y XMIT PROCEDURE Figure 19-35. Primary Station Flow Charts 19-48 BUFFER-TRANSFER PROCEDURE MOVE DATA FROM SIU·RECV·BUFFER TO RSD BUFFER Figure 19-36. Primary Station Flow Charts 19-49 CHECK_NR PROCEDURE CHECK-IllS PROCEDURE F;igure 19-37. Primary Station Flow Charts 19-50 , REMOTE BUFFER·STATUS = BUFFER·READY Y "11 cO c iil ... tco '"0 :::!. <. . .
: 18 19 20 21 22 23 24 2 2 2 2 2 2 25 IDATA, OPEN: PROCEDURE PUBLIC USING 21 1 " PUBLIC PUBLIC, BIT PUBLIC, 2 2 1 :I ~60'. LIT BYTE BYTE PROCEDVRE PUBLIC USINg 0, USER_STATE-CLOSED_S, STATION_STATE-DISCONNECT _9; TDS-. SIU_XI"IIT_BUFFSHO), RBa-. SIU_RECV_BUFFER(O); RBL-DUFFER_LENGTH, RBE"l, /* En.ble the SIU'. receiv.,. *1 XI1I TJlUFFERJ;I1PTY-l, END POWER_ON_Di 26 2 27 2 2B 2 30 2 32 2 34 3 TRANSMIT: PROtEDURE eXMIT JUFFERJ-ENGTH) BYTE DECLARE XI1IT _BUFFER_LENOTH I StATUS PUBLIC USING 01 BYTE, BYTE AUXILIARY,. BYTE AUXILIARY; IF USER_STATE-CLOSEO_S THEN STATUS-USER_STATE_CLOSED. ELSE IF STATION_STATE-DISCONNECT_S THEN STATUS-LINKJHSCONNECTED, ELSE IF XI1IT _BUFFER.J-ENOTH>BUFFER_LENQTH THEN STATUS-tlVERFLOW; ELSE 00, 19-54 09/20/B3 PAgE 2 20: 35 XI'IIT JlUFFERj: .... TY.OI TBL.XIIITJlUFFER_LENOTH, 36 3 3 37 3 38 39 40 41 42 3 3 3 2 1 TBF-l, STATUB-D"T"_TRANSI'\ITTEDI ENDI RETURN STATUSI END TR"NSI'fITI 43 2 XI'IIT _UNNUtIBERED: PROCEDURE (CONTROL_BYTE) I 44 2 45 41> 47 48 49 50 2 2 2 3 3 2 51 2 53 2 2 54 5' 57 5B 5' 1>0 I_FRN1EJ.ENQT"X"ITJlUFFER~ENOTHi DECLARE CONTROL_BYTE BYTE, TCB.CDNTRDL_BYTE, TBF-IJ RTB-l, DO WHILE NOT 81, END, 81-01 2 3 3 3 2 _II...RESPONSE: PROCEDURE , STATION_STATE-I_T_9; NSNRaGl IF (RCB AND 10H) <> 0 Respond if polled THEN DO, TBL-o; CALL XI'IIT_UNNUf18EREDCUA)J '* *' END, IF XMITJlUFFER-.EI'IPTY-O /* I' lin I fI ........ , tb.n .... ,to". it THEN DOJ 62 63 64 65 1* Sto". hngtb in ca •• station ,~ ...... t btl FRM. SNAM .tc END XIIIT _UNNUI'\BEREDI 52 3 3 3 2 _I, h,t p.ndlng 1or.ns.i5sian *' TBL-I.,FRAI1EJ-ENQTH, TBF-l, ENOl END SNRI'I...RESPDNSE, 66 XI'IIT_FRI1R: PROCEDURE (REASON) 67 2 6B 2 69 2 TCB-FRI1R. 70 71 72 2 2 TB&-. FRI'IR_BUFFER(O) , 73 74 75 2 3 3 2 2~: ~7 DECLARE REASON BYTE, TBL-3, FRI'IR_8UFFER (0)-RC8; SIHP nibb Ie, in NSNR FRMR __ UFFER(I)-CSHL(NSNR AND OEH).4) OR DO CASE REASON, FRMRJiUFFER(2)-OlH, UNASSIQNED_C '* *' '* SHRC
0 THEN DO. TBF-S, Rn-l, DO WHILE~NOT SII ENOl SI-o. END, IF (UBER_STATE-OPEN_S) AND «RCB AND O£FH).SNRM}) THEN CALL 9NR"-"ESPONBE, ELSE IF (RCB AND lQH) <> 0 THEN DO. TBL-o, CALL XMIT _lJNNUfII8ERED( DI1); ENOl END IN_DISCONNECT_STATEI IN_FRMR_STATE: PROCEDURE. 1* Called bV StU_tNT when .. freen. ba. be.n l'ec:eived when in 10he FMMR .'hte *1 IF (RCB AND-OEFH)-SNRM THEN DO, CAL.L SNRMJESPONSE. T8S" SIU_XMIT_BUFFER(O), ENDI 1* Restore tl'ansllIlt buttl.,. 9tal't address *1 ELSE IF (RCB AND OEFH)-DISC THEN DO. STATION_STATE-DISCONNECT _5i 1* RUltor. tT'ansmlt buffe.,. start address */ IF (RCB AND 10H)<> 0 THEN DO, TBL-Oi CALL XI'1IT_UNNUMBERED(UA), T8S-, SIU_XMIT_BUFFER(O)J ENOl END; ELSE DO, 1* Recuve contT'ol bvt. ill somethIng other than DISC IF (RCB AND 10H) <> 0 THEN 00, TDF=l, RTS.. l, 19-56 or SNRM *1 09/li!O/e~ PAGE 4 intJ PL'I'I-51 COMPILER 120 121 122 123 5 5 4 3 20- 24: 47 0fP/20/B3 DO WHILE NOT SII END, ENOl EN'" END IN_FRfItR_STATEI 124 COMMAND_DECODE: P~OCEDURE 125 2 126 2 IF (RCB AND OEFtO-SNRM T~N CALL SN~M_RESPONSE' ELSE: IF (RCB AND OEFH)-DISC THEN 001 128 2 130 131 3 3 133 134 135 136 4 4 4 3 137 2 13'1 3 141 4 9T AT ION_ST ATE-D1 SCONNECT _So IF (RCB AND 10H)OO THEN DOl TBL-OJ CALL XMIT_UNNUr1BERED(UA)I ENOl ENOl ELSE IF (ReB AND OEFH) -TEST THEN DOl IF (ReB AND lOH)O 1* Re9pond i f polled *1 THEN DOl FOR BOY-I, SEND THE TEST RESPONSE WITHOUT AN I FIELQ IF (BOVat) '* *' THEN DO. 143 144 145 146 147 148 149 5 I~ 5 5 5 5 5 5 5 5 152 4 154 155 5 5 5 TBL-O, CALL XMIT_UNNUP1BEREDCTEST OR lOH)1 END. ELSE DOl 1* If no BOV • • •nd received I Ueld back to primal'W *1 TBL-RFL. TSS=RBSI • CALL XMIT_UNNUMBEREDCTEST OR lOH)J T88-. SIU_XI'IIT_BUFFER(O), Resto1'. TBS '* END, 1* If an I 'rame .... s pending • • ltt It up again 156 IF XMIT _BUFFER-.EMPTY*O THEN,DOJ. TBL'" I _FRAl'IE_LENQTH. TBF-lj ENP, END, 4 157 158 159 3 160 2 162 3 163 3 IF XI'1IT _BUFFER_EI1PTY • THEN TaL ... O. 165 3 TBF ... 1. 3 ELSE IF (RCB AND 01H) • 0 1* Kicked out of the AUTO mode becaus. an I f1'a.e was "eceiv.d whlltt RPB • 1 *1 THEN DO, AM ... 1; 1 1* Send an AUTO mod. ,..sponse *1 19-57 *' *' PAGE intJ PL/t'fI-~l 20: 24: 47 CDMPIl.. ER I .... 167 3 3 168 2 09/20/83 PAO£ 09/20/93 PAGE RTS" 11 ENOl 169 PROCE~RE 170 2 171 2 DECLARE 172 173 2 2 81-0, 175 3 StU_INT INTERRUPT 41 BYTE AUXILIARY, IF STATION_STAfE<> I_T_9 1* Mu-.t be in NON-AUTO mode *1 THEN DO. 177 178 179 18Q lSI IS2 183 IS4 IF RBE-O 1* Received II 'T'ame? , Give response THEN DO. *' DO CASE STATION_STATE, CALL IN-PISCONNECT_STATE. CAL.L IN_FRMR_STATEI ENOl RBE-!I ENOl 5 5 5 4 4 3 3 RETURN, ENOl 1* If the program " •• ch •• this point. STATION_STATE-I_T_S which m•• ns the SIU eithe" w.s. or shl1 h 1n the AUTO MODE *1 IS5 2 IS7 3 IF (RCB AND OEFH)-DISC THEN CALL COMMAND-PECODE. 189 3 EL.SE IF USER_STATE-CL.Q9ED_S I'll 192 193 194 4 4 4 3 196 3 19S 4 200 201 202 203 204 4 4 3 3 3 205 206 3 3 208 3 IF AM-O THEN DO. THEN DOl TaL-Oj CALL XMIT_UNNUMBERED(REGJ>ISC); END. ELSE IF SES=t THEN CALL XMITJ'RMReSES_ERR). ELSE IF BOV=1 THEN Dill 1* DON'T SEND FRMR IF A TEST WAS RECEIVED*I ELS~ IF (RCB AND OEFH)-TEST THEN CALL COMMAND_DECODE. ELSE CALL XHIT_FRMR(BUFF_OVERRUN)I ENOl CALL COMMAND_DECODE. RBE=l. END. ELSE DO. 1* MUST STILL BE IN AUTO MODE *1 IF TBF=O THEN XMITJUFFER~MPTyaL 1* TMANSMITTED A FRAME *1 IF RBE=O THEN DCh COMPILER PL/I't-~l 210 4 211 4 212 4 213 4 4 3 I 214 215 216 :il17 20· 24: 47 RUPI-44 Secondartj Station Driver RBP-L 1* RNR STATE *1 RBE=l. 1* RE-ENABLE RECEIVER *1 CALL SIU.-RECV{RFU, RSP-O, 1* RR STATE *1 ENOl ENDJ END SlU_INTI END MAIN*"IJD. WAANINOS' 4 IS THE HIGHEST USED INTERRUPT MODULE INFORMATION: CODE SIZE CONSTANT SIZE DIRECT VARIABLE SIZE INDIRECT VARIABLE SIZE BIT SIZE BIT-ADDRESSABLE SIZE AUXILIARy VARIABLE SIZE MAXIMUM STACK SIZE REGISTER-BANKeS) USED: 460 LINES READ o PROQRAM ERROR e5) END ,OF PL/M-51 COMPILATION eSTATlC+OVERLAYABLE) • 02BFH 6550 = OOOOH 00 3FH+02H 63D+ 3CH+00H 60D+ OlH+OOH 1D+ OOH+OOH 00+ '"' 0006H 60 ,. 0017H 230 o 2D 00 OD 00 1 2, 19-58 .. inter PL/~-51 COMPILER IBIS-II PLlI1-~l Applic.Uon Moduh' A.... nc:/SDLC PT'otocol convertltl' VI 0 CDf1PILER INVOKED BY' .TITLE .debug : 412: pl .. 18 '0-:53 '1 : 412- unot • • "e ('AppUc.Uon Module S,..gi.te"b.nk (0) 5 u •• "tmod: dOl .NOLIST DECLARE LIT TRUE FALSE FOREVER ESC LF CR BS BEL EMPTY INUSE FULL USER_STATESLOSED LINK_DISCONNECTED OVERFLOW DATA_TRANSI1ITTED LITERALLV LIT LIT LIT LIT LIT LIT LIT LIT LIT LIT LIT LIT LIT LIT LIT 'LITERALLY', 'OFFH'. 'OOH'. 'WHILE 1 '. LIT '60', 'IBH'. 'OAH', 'ODH', '08H'. '07H', 'OOH', 'OJH'. '02H'. ·OOH'. '01H', '02H', '03H', 1* BUFFERS *1 BUFFER_LENGTH SIU~MIT _BUFFER (BUFFER_LENGTH) BYTE SIU _RECV _BUFFER (BUFFER_LENGTH) BYTE FIFO_THiZ36) BYTE AUXILIARY. " AUXILIARY. IN_PTR_T BYTE AUXILIARY, OUT_PTR_T BYTE BUFFER_STATUS_T BYTE AUXILIARY, FIFO_R(256) BVTI:: AUXILIARY. IN_PTR_R BYTE AUXILIARY. AUXILIARY, OUTJ'TRJI BYTE AUXILIARY, BUFFER_STATUS_R BYTE LENGTH CHAR I USARTS"D DESTINATION_ADDRESS SEND_DATA RESULT ERR_I'IESSAOE_INDEX ERR_"ESSAGEJ'TR BYTE BYTE BYTE BYTE BYTE BYTE BYTE BYTE WORD EXTERNAL lDATA. EXTERNAL, AUXILIARY. AUXILIARY. AUXILIARY. AUXILIARY. AUXILIARY. AUXILIARY. AUXILIARY. AUXILIARX· AUXILIARY. PARITY(*) BYTE CONSTANT (LF. CR. 'PaT'itl,l ET'T'oT' Detected'.LF.CR.OOH). FRAME<*) BYTE CONSTANT (LF. CR. 'FTamlng ETT'OT' Detected '. LF, CR. OOH). 19-59 09/19/83 PAGE inter PL/H-51 COMPILER Application Moduli. A• .,nc/SDLC Prottlcol conv.,,'hT lB,50.,53 09/19/83 PAQE OVEft_RVN(*) BVTE CONSTANT(LF.CR. 'Overrun E,,1'o," D.t.ct.d',t..F.CR,O), LINKC.) BYTE CONSTANT(LF, CR. 'Unable to O.t Onlln.',LF.CA.OOH), DEST..ADDR(') BYTE CONSTANT(CR. ~F. ~F. 'Ent ... th. d •• UnatiDn .dd" •••. _'I 8S. BS. 0)' D..ADDR..AC~(*' BYTE CONSTANT O 1* Th.n conhnue to .end the 1I •••• g. *1 THEN DOl USART ..,DATA - ~S9AgE(ERRJ1ESSAQE_INDEXlI ERRJlESSAQE_INDEX-ERR_MESSAQE_I NDEX + 11 ENOl 1* If! m•••• , . h don. T' • • ,.t ERROR_fLAG and .hut off! inte"rupt If FIFO is empty *1 ERROR_FLAQ-O. IF BUFFER_STATUSJ '. EMPTY THEN EXt_OJ END. ELSE 00; 4 4 ENOl END USART_XMIT _INTJ 120 SIU_RECV. PROCEDURE (LENGTH) PUBLIC USING I. I'll 2 122 2 DECLARE LENGTH I 123 124 125 126 127 3 4 4 3 3 DO X-O TO L.ENOTH-l; DO WHIL.E BUFFER_STATUSJ-FUL.LJ 1* Check to Ie. if! flfo BYTE. BYTE AUXILIARY, lSi full *1 ENOl CALL FIFO..,R_IN(SIU_RECV_BUFFER( I», ENOl 12B 129 FIFO_T_IN: PROCEDURE (CHAR) USING 2; 130 :I DECLARE CHAR 131 132 133 :I 2 FIFO_T< IN_PTR_T)-CHAR. IN_PTR_T-IN_PTR_T+l; IF CHAR-LF THEN SEND_DATA.SEND_D~TA+l. 2 135 2 137 :1 139 140 '141 3 3 3 143 144 3 1 BYTE. IF BUFFER_STATUS_T-EMPTY THEN BUFFER_BTATUS_T-INUSEi , ELSE IF «BUFFER_STATUS_T-INUSE) AND (IN_PTR_T+20-0UTJTR_T» THEN DO, 1* Stop recephon u.i.ng CTS *1 USART_BTATUS. UBART_CMD-UBART_CHD AND NOT<2OH)1 BUFFER_STATUS_T-FUL.LI IF SEND_DATA=-O THEN SEND_DATA=11 I*If th. buffe" is full and no LF ha1i b~~n received then •• nd d_t. *1 END. 19-64 PLllt-a! CDIII'ILER 145 146 147 148 149 "a 2 a Ul " 153 154 ISS ISO a ua lB' 50. 53 FIFD_T _OUT: PROCEDURE BVTE BVTE CHNI-FIFD_TCOUT _PTR_T). OUT JTR_T-ouT_PTR_T+ll IF OUTJlTR_T-IN_PTR_T /* Th.n FIFO_T is .,.ptv *1 THEN DO. 3 3 3 3 3 EA-OI BUFFER_STATUS_T-EMPTY, BEND_DATA-OI EA-l1 END. ELSE IF «8UFFER_STATUS_T-FUL.L) AND (OUTJTR_T-eO-IN_PTR_T» THEN DOl lSI! 159 100 161 143 160 3 USART_STATUS. USART_CIIDooUSART_CIID DR 20H. BUFFER_BTATUS_T-INUSE. 3 3 2 2 1 IF (CHAA""-" AND SENDJ)ATA>O) THEN SEND.JlATA-SEND_DATA-l, RETURN. CHAR. END FIFO_T _OUTI 145 a ERROR: PROCEDVRE (STATUS) USINO 2. 144 2 DECLARE STATUS 167 2 169 2 171 2 IF (STATUS AND OSH)<>O THEN EARJEBSAOE_PTR-. PARITY. ELSE IF (STATUS AND 10H)<>0 THEN ERR_HESSAOE_PTR•. OVER_RUN. EL§ IF (STATUS AND 20M) <>0 THEN ERRJlESSAOEJTR-. FRAIIE. 173 2 17. 175 176 2 2 2 177 " 179 a leo BYTE. ERR_IlESSAQE_'NDEX - 0, ERROR_FL.AQ-1. £h-1, 1* Tu,," on T. Int_r:rupt */ END ERRoR; 178 181 182 Ie:! III. END. 2 2 2 2 3 LINK_DISC: PROCEDURE , DECLARE MESBMEJTR WORD MESSAQE BASED .J BYTE EX I_STORE BIT, EX l_STORE_EXl 1 EXt-O, AUX ILlAJlv. IlESSABEJTR ( 1 ) AUXILIARY. IYTE CONSTANT, 1* Shut off •• Vnc trAns",lt int."rupt *1 f1ESSAGE_PTR-. lIM!.. ~-O, DO WHILE (t1ESSME(.J)<>O), 19-65 0'l/19/B3 PAQE 7 inter PL/I'I-51 Cot1PILEft 195 196 197 lBB 199 190 191 Applic.tian l'Iadul.: AI1Jnc/SDLC Pl'otoco'l converta,. 4 '* w.it DO WHILE (UBART_STATUS AND OlH)-o1 4 END, 3 3 3 USART"pAT A-MESSAGE (J); ,J-,J+IJ ENOl EXt-EXt_STORE; :I 1* R.,to,. ••• ."nc tranl.it int.",.upt *1 1 END LINKJ)ISC. 192 193 :I :I co: 194 195 196 3 3 DO WHILE (uSART _STATUS AND OIH) - 0; :I USARTJ)ATAIitCHAR. 197 'aT' TxRDY Dn PROCEDURE (CHAR) USING 21 DECLARE CHAR BYTE, ENDI END COl 199 2 199 200 201 3 3 2 202 CI. PROCEDURE BYTE USING 21 DO WHILE (USART_STATUS AND Oal:H) - 01 END. RETURN USART 3IATA. END ell 203' 2 204 2 DECLARE CHAR I 205 2 LO: 206 207 3 3 209 3 210 211 2 :I 213 2 OET,JiEX: PROCEDURE BYTE USINQ 21 BYTE BYTE AUXILIARV, AUXILIARY; CHAR-CII DO 1"'0 TO Hh IF CHAR-HEX_TABLE( I) THEN OOTO Lt. ENDI LL CALL COIHEX_TABLE(J)), IF 1-16 THEN GOTO LO; 214 215 216 RETURN I, END OET -HEX; 2 2 217 2 219 219 220 3 3 3 OUTPUT 3IESSAQE: PROCEDUREIM£SSAOEJ'TR) USING 2. DECLARE MESSAOE_PTR WORD. MESSAOE BASED MESSAGE_PTR 11) BYTE CONS'ANT. I BYTE AUX ILIARY, 00 WHILE PlESSAGE ( t) <> OJ CALL CO U1ESSAQE II )). X-X+11 19-66 USA~T *1 inter Ap,Uc.Uon Moduh PL/I"I-:U COMPILER 221 3 222 ENOl END OUTPUT _MESSAGEJ 223 2 224 2 :1:15 A'Vnc/SDLC Protocol conv.T't.r 2 226 2 :127 228 3 3 230 3 231 :132 :I 2 I'ENU' PROCEDURE USING 2; DECLARE I BYTE CHAR BYTE STATION_ADDRESS BYTE AUXIL.IARY, AUXILIARY, AUXILIARYI START: CALL. OUTPUT_I'tESSAQE(. SIGN_ON), MO: CHAR-el, DO 1-0 TO 41 IF CHAR-MENU_CHAR ( I ) THEN OOTO M1. ENOl H1 CALL co (t'IENU_CHAR( I » j IF 1=5 THEN OCTO I'IOJ DO CASE I, 234 3 :135 :136 4 4 237 4 STATION_ADDRESS-SHLCGET _HEX. 4), :138 4 STATION_~ODRESS.(STATION_ADDRESS 239 4 BTAD-STAT I ON_ADDRESS, 240 4 CALL OUTPUTJlESSAGE( S_ADDR_AtK), 241 242 4 4 CALL CO(HEX_TABLECSHRCSTATION_ADDREBS. 4})}, 243 244 4 4 ENOl 245 4 DO, 246 4 247 4 DESTINATIONjlDDRESS-SHL{GET_HEX.4). 248 4 DESTINATION_ADDRESS-(DESTINATIONJ'DDRESS OR GET_HEX ), 249 4 CALL OUTPUT_MESSAOE( D-.ADDR_ACK). DO; CALL OUTPUT_I'IESSAOEL STAT_ADDRl. OR GET_HEX» CALL. COCHEX_TABLECOFH AND STATION_ADDRESS», CALL OUTPUT_MESSAGE(. ADDR_ACK_FIN), CALL OUTPUTJ1ESSAOE L DEST _ADDR) , 19-67 lS.50 53 09/19/83 PAGE 9 inter PL/M-:U COMPILER Applic.tian Module: 250 251 4 4 252 253 4 4 END, 254 2" 256 257 4 4 4 4 DO. 258 259 260 261 4 4 4 4 262 3 263 3 A.~nc/SDL.C ProtQc,ol· conve,.teT' 18 50 53 09119/93 CALL. COCHEX_TABLECSHRCDESTINATIDN_ADDRESS, 4»), CALL COCHEX_TABLECOFH AND DESTINATION_ADDRESS», CALL OUTPUT_MESSAGE(, ADDR.-ACK.JIN)j CALL OUTPUT_HESSAGEC FIN); CALL OPENl ENOl DO. CALL OUTPUT_MESSAGE( FIN), CALL. CL.oSEI END. CALL OUTPUT_MESSAGE( FIN), END. F* DO CASE *1 264 26. 2 266 2 USART_RECV_INT' PROCEDURE INTERRUPT 0 USING 21 DECLARE CHAR STATUS BYTE BYTE 267 268 269 2 2 2 CHAR-UBARr _DATAl ST ATUS-UBART _ST ATUB AND 39H. 271 2 ELSE IF CHAR-ESC 273 274 27' 3 3 ELSE 001 .277 3 AUXILIARY. AUXILIARY, IF STATUS<>O THEN CALL ERROR(STATUSh THEN CALL MENU. 3 CALL FIFO_T _IN(CHAR), IF ECHO-O THEN CALL CO(CHAR)' END. 278 END UBARr _RECV _INT. 279 BEGIN CALL POWER_ON. 280 281 2 2 283 4, 284 285 286 287 4 3 3 4 DO FOREVERJ IF SEND_DATA>O THEN DO. DO WHILE NOT(XMIT_BUFFER_EMPTY)J I-Walt until SIU_XHIT_BUFF.,. is .mpt\l *1 END. LENGTH. CHAR '11"1. SIU_XHI T _BUFFER (0 )-DESTINATION_ADDRESSJ DO WHILE «CHAR<>LF) AND (LENGTH EMPTY)}I 19:-68 PAOE 10 lB. ~O· PL/I1-S1 COI1P ILER 2BB 4 289 4 4 290 291 3 293 294 3 3 296 297 298 299 4 4 4 4 300 S 301 302 303 304 5 4 4 30. 307 308 309 310 311 5 5 312 313 " PAQE END, 1* If thlt line entered .t thlt terllinel is IT •• tel" then BUFFERJ.ENOTH ch.,.. 'lend the Hrst BUFFERJ.ENOTH che"" thltn •• nd thlt " •• t, .ince thlt SIU buff.,. i . onlv BUFFER_LENQTH bVt •• *1 Ll 1-0. U •• 1 to caunt thlt numb.", of unsucc •• 'ul t".-naml t. *1 '* RETRY' '* ,.g. *' RESUL.T-TRANSI'IIT(LENQTH)J Send thlt ••• IF RESULT<>DATA_TRANSI1ITTED THEN DO, /* Wait 50 ..... e for link to connect thltn tl'lJ .g.1" WAIT-1, *' THO-3CH, TLO-OAFHI TRO-I, DO WHILE WAIT, ENOl TRo-O, I-}+11 IF 1>100 THEN DO. S /* W.dt :J site to gltt on line .1 •• •• nd 1t1'roT' ,. •••• g. to t.,..in.1 end trV egein CALL LINK_DISC. OOTO L1. END. S OOTO RETRY, 4 ENOl 4 3 1 09/19/83 CHAR-FIFO_T _OUTI SIU_XI1IT,JIUFFER (LENQTH I-CHAR, LENOTH-LENQTH+ 11 4 292 '? END, END. END USER_MOD. WARNINOS 2 IS THE HIGflEST USED INTERRUPT I10DULE INFORI1ATlON CODE SIZE CONSTANT SIZE DIRECT VARIABLE SIZE INDIRECT VARIABLE SIZE BIT SIZE BIT-ADDRESSABLE SIZE AUXILIARY VARIABLE SIZE I1AXlI1UI1 STACK SIZE REGoISTER-BANK(S) USED 713 L.INES READ PROGRAI1 ERROR (S I END OF PL/I1-~1 COI1PILATION (STATIC+OVERLAYABLE) 1714D 01CFH 463D OOH+05H 00+ 5D OOH+OOH OD+ 00 Oii!H+OIH aD+ ID OOH+OOH 00+ OD - 021FH 543D • 002SH 40D eo 06B2H - o 1 " o 19-69 *1 11 PL/M-.'51 COMPILER RUPI-44 Pr:t.mar", Stahon ISIS-II PL/M-51 VI 0 COMPILER INVOKED BY F2 PLM51 20 41 13 F2 PNOTE SRC $TITLE ('RUPI-44 Prlmar\l Statlon') $DEBUG $REGISTERBANK(O) MAIN$MOD DO. 1* To save paper the RUPI regl'OteT'S aT'~ not 11St.d, but thl'J 15 the steteflll!nt used to 1nc lude Uem _INCLUDE ( 92 REG44 DeL) *1 $NOLIST DECLARE LIT TRUE FALSE FOREVER LITERALLY 'LITE;RALLY', LIT LIT LIT 'OFFH', 'OOH', 'WHILE 1', 1* SOLC COMMANDS AND RESPONSES *1 6 LIT LIT LIT LIT LIT LIT LIT LIT LIT LIT DECLARE SNRM UA DISC OM FRMR R~Q_OISC UP TEST RR RNR '93H', '13H', '53H', 'IFH'. '97H', '53H', '33H', 'OF3H', 'ItH'. 'tSH'. 1* REMOTE STATION BUFFER STATUS *1 BUFFER_READY BUFFER_NOr _READY LIT LIT '0', '1', 1* STATION STATES *1 DISCONNECT 5 GO_TO_DISCI_T_S LIT LIT LIT 'OOH', 'OtH', '02H', 1* LOGICALLY DISCONNECTED STATE*I 1* INFORMATION TRANSFER 1* PARAMETERS PASSED TO XMIT_I_T_S *1 T_I_FRAME LIT 'OOH', T _RR LIT 'OlH', T_RNR LIT '02H', 1* SECONDARY STATION IDENTIFICATION *1 NUMBER_OF _STATIONS LIT '2', SECONDARY _ADDRESSES (NUMBER_OF _STAT IONS) BYTE CONSTANT (55H, 43H), 19-70 ~TATE *1 09/26/83' PAGE P1./1I-5. CDllPIL.ER RuPJ-44 ,,.i.. ,.,, 't.tiDn 20' 47.3 RBOI_EII_DI' JlTATIONII STIIUCTURI 18T...TJON......IIDRISS IYTI!. STATlON_STATI IVTI!. NIl BYTE. NIl IYTE. MFFER_STAT\III IVTE. INFII....-TM IlATAI . . , /* Tit • • IYTE. IYTEI '.'UI .f tit • • • cond.", .,.tions AUXILIMY. *' I . YMIA8LES BT...TION___ IYTE RECYJIELD",,-TM aYTI BIT, ..... IT AUXILIMY. AUXlLIMV • I. BUFFERS *1 SIII~"ITJlUFFERI.41 IYTE IYTI!, SIII..,RECYJlIJFI'EJI 1.41 7 2 • a 9 2 IllATA. POWER_ON: PROCIDURE , DECLME I BYTE AUXILiARY. •0 /I 11 .2 a 12 T_, SIII_X,"ITJlIJFI'EJIIOI, RIS-, SIII..,RECIIJlIIFFf;RIOI • RL. . . , ,/. 64 aV'e ".c.lve &tu'f.,. . , RIE-I, En.".* , ... SIU', "eceiv.... .3 3 -DO I- 0 TO NUI1IER_DI' JlTATJ_ •• \4 3 3 3 3 ".6.7 •• .9 20 II 2 22 12 2 24 ABOI iI, STIITJON..AJIDIIESS-SEC_V"""O_ _ I I ,. :::::' rU:;~:'J;!=::="~~~::EII/)V. RSDC I INFO,..LENOTH-(h J SA'ID-54H. , . Ulin, DP1...... NAZI. PFS. TIteR , • • _21M, THI~. TCON-4OH, IE_. ,. v•• t,..."'0 END POWER_ON; as 2 26 a 27 2 12 as *' 3 a al 23 '* X"IT' PROCEDURE ICONTROLJlYTEI. DECLME CONTROLJlVTE TClaCONTROLJlYTI!. TBF-li BYTE. ~. 15 K", • • / ••,. ,..c •• ve 'i •• out iftt.",.upt . , "v".'" ./ 09/a./83 PoIIQE a flL/M-51 COMPILER 2. 30 31 32 RUPI-44 PrlmaT'1.,J Stat10n 20"47.'1{3" RTS=l, DO WHILE NOT SI. END. 81=0. 2 3 3 2 END XMIT. 33 34 35 36 2 2 1 TIMER_O_INT PROCEDURE INTERRUPT 1 WAIT=O. END TIMER_O_INT, 37 2 TIME_OUT 38 2 DECLARE 3. 3 DO 1=0 TO 3. 40 41 42 43 44 45 3 3 3 3 4 4 47 48 4. 1* Tlme_out returns true 1f there wasn/t: a frame 'l"ecelved w1thln 200 mse-c, If,there was' a frame rece1ved, ,I./llthln' 200 msec then tlme_out return5 false PROCEDURE BYTE, BYTE USING ,1'. *1 AUXILIARY, WAIT=!. THO=3CH. TLO==OAFH, TRO=l, DO WHILE WAIT, IF 91=1 THEN GOTO T _01, END, END. 2 RETURN TRUE, 50 SI=O, RETURN FALSE. 51 END TIME_OUT, 52 53 2 54 55 56 2 2 57 3 3 3 3 2 5. 60 61 62 SEND_DISC PROCEDURE. TBL=O, CALL XMITWISC), IF TIME_DUT=FALSE THEN IP RCB=UA OR RC8=DM THEN DO. 2 RSD (STAT ION_NUMBER ) BUFFER_STATUS-BUFFER_NOT _READY, RSD (STATION_NUMBER) STAT ION_STATE=DISCONNECT _Sf END, RBE;;1. 63 END SEND _D I Be, 6. SEND_SNRM 6. PROCEDURE, TBL=O, 19-~2 , 09/26/83" PAGE PL/M-51 COMPILER 66 67 ~ 2 69 70 3 3 71 3 72 73 3 2 20 47 13 09/~6/B3 CALL XHIT SHRCRCS. 5» THEN RETURN FALSE. RETURN TRUE. 89 90 2 91 2 92 2 RECEIVE PROCEDURE DECLARE BYTE AUXILIARV. 1* If an RNR was recelved bufler_status wlll be changed 1n the 5uperV1SOl"V frame decode ~ection futher down 1n thu, proc&'dUf'e. anlj othe,: r.spons. m.ans the l"emote stations bul'fe.,. is .,..ady *1 93 2 IF tRCa AND 01H)=O THEN DO. 97 98 4 4 1* I Frame Recelved *1 IF CCHECK_NS... TRUE AND BOV=O AND CHECK_NR=TRUE) THEN DOl RSOCSTATION_NUMBER) NR=(CRSD(STATlON_NUMBER) NR""l) ANO 07H). RBP=l, 19-73 PAGE intJ PL/M-51 COMP1LER 20· 47 13 Prlmary: Station ~UPI-44 09/26/83 RECV _F IELD_LENGTH=RFL-l. ENOl 101 :3 102 103 3 2: 105 3 ELSE RSDCSTATION_NUMJiER) STATION_STATE=...GO_TO_DISCI END I ELSE IF (RCB AND 03H)=OlH THEN DO. 1* SuperV1SOrlj frame "eceived *1 IF CHECK_NR=FAl,.SE THEN RSI)(STATION....NUMBER). STATION_STATE=OO_TO_DISC, ELSE IF «RCB AND OFH)"'05H) 1* then'RNR *1 THEN RSD (STAT ION_NUMBER) BUFFr:':R _STATUS-SUFFER _NOT _READY. END. 107 109 110 111 3 3 113 110 115 116 117 0 0 3 3 lie 2 4 119 END. RSD (STAT ION_NUMBER) STAT ION_STATE=GO_TO_DISC. END, RBE-l, END RECEIVE. 120 2 12i 2 DECLARE TEMP BYTE. IF TEMP=T _I_FRAME THEN DO, 1* Tran~ml t I frame *1 1* Transfer the stat1tm" buHler Into Internal ram *1 122 12' 125 126 1* Unnumbereli f"jlme or unknown h'.me recltlved *1 IF RCB=FRMR THEN DO. 1* 141 FRMR was T'~celved check NT for an acknowledged I frame *1 RCO-SIU_RECV_BUFFER( 1) I I=CHECK_NR; ELSE DO. DO TEMP=O TO RSD(STATION_NUMBER), INFO_LENGTH-i. SIU_XMIT _BUFFER (TEMP )=RSP (STATION_NUMBER) DATA CTEMP ). 4 4 4 ENOl 1* Bui Id the I fram. control held *1 127 3 129 129 130 3 TBL=RSO(STATION_NUMBER). INFO...,LENGTH. 3 3 CALL XMIT =SIU_RECV_BUFFEh(,J>. END, 3 163 END BUFFER_TRANSFER; 164 BEGIN· CALL POWER_ON. 165 2 166 167 168 3 3 DO FOREVER. DO STATION_NUMBER=O TO NUMBER_OF _STATIONS-1. STAD=RSD( STAT ION_NUMBER) STAT ION_ADDRESS, IF RSD(STATl'ON_NUMBER) STATION_STATE'" DISCONNECT_S THEN CAL.L. SEND_SNRM. ELSE IF RSD(STATION_NUMBER) STATION_STATE'"' GO_TO_DISC THEN CALL SEND _0 I se. ELSE IF «RSDfSTATION_NUMBER) INPO_LENGTH)O) AND (RSO(STATION_NUMBER) BUFFER_STATUS=BUFFER_REAOY» THEN CALL XMIT_I_T_SCT_I_FRAME). ELSE IF RBP""O THEN CAL.L XMIT_I_T_S vee + 5V power supply during operation and program verification, PORTO Port 0 is an S-bit open drain bidirectional 110 port, It Is also the multiplexed low-order address and data bus when using external'memory, It Is used for data output during program verification. Port 0 can sink/source eight LS TIL loads. ' PORT 1 Port 1 is an 8-bit quasi-bidirectional 1/0 port. It is used for the low-order address byte during program verification. Port 1 can sink/source four LS TIL loads. In non-loop mode two of the 1/0 lines serve alternate functions: -FiTS (Pl.6). Request-to-Send output. A low indicates that the RUPI-44 1$ ready to transmit. -C'rn (P1,7) Clear-to·Send Input. A low indicates that a receiving station is ready to receive. ", ," ~ . -SCLK T1 {Pill). In addition to 110, this ,pih~prqvides In~ to counter, 1 or serves as SCLK (serlal:cIOQk) Input . -WR (P3.6). l'he write control signal latcHes the data ~e from Port 0 into the External Data Memory. -RO (P3,7). The read control signal enables External Data Memory ,to. Port O. RST A high on this pin fortwo machine cycles while the oscillator is running resets the device. A small external pulldown reSistor ("S.2KCl) from ~ST to V58 perniits power-on reset when a capacitor ("'IOpf) is also connected from this pin toVcc ' ALEIPROG Provides Address Latch Enable output used for latQhing the address Into external 'mElmory during normal operation, It is activitated ellery six OSCillator periods except during an external data memory access, If also receives the program pulse input for programming the EPROM version. " PORT 2 Port 2 is an 8-bit quasi-bidirection 110 port. It also emits the high-order address byte when accessing external memory. It is 4sed for the high-order address and the control signals during program verification. Port 2 can sink/source four LS TIL loads. - PSEN The Program Store Enable output is a control signal that enables the external Program',Memory to the bus during external fetch oper!ltions. It ill acUvll-ted every six osciilator periods, except dl,lring external, data memory accesses. Remains high during i"ternal program execution. PORT 3 Port 3 is 8-bit quasi-bidirectional 1/0 port. It also contains the interrupt, timer, serial port and RD and WR pins that are used by ,various options, The output latch corresponding to a secondary function must be programmed to a one (1) for that function to operate. Port 3 can sink/source four LS TIL load!,!, EAtvPP When held at a TIL high level, the RUPI-44 executes instructions from the internal ROM when the PC is less than 4096, When held at a TIL low level, the RUPI-44 fetches all instructions from external Program Memory. The pin also receives the 21V EPROM programming supply voltage on the S744, . In addition to 1/0, some of the pins also serve alternate functions as follows: -1/0 RxD (P3.0). In point-to-polnt or multipoint configura- ' tions, this pin controls the direction of pin P3.1. Serves as Receive Data Input In loop and diagnostic modes. -DATA TxD (P3.1) In polnt-to-point or multipoint con- • figurations, this pin functions as data inputloutput. In loop mode, It serves as'transmit pin. A '0' written to this pin enables diagnostic mode, -iN'fO ,(P3.2). Interrupt 0 Input or gate control Input for ' . counter O. -iiii'R (P3.3). Interrupt 1 Input or gate control Input for counter 1. - TO(P3.4). Input to counter O. XTAL 1 an 21)-;2 , Input to the oscillator's high gain amplifier. Required when a crystal Is ulled. Connect to VSS when external s~urce is used on XTAL 2, ' XTAL2 Output from the oscillator's amplifier. Input to the Internal timing cirCUitry. A crystal or external source-can be used, ' inter 8044AH/8344AH , vcc PI1[ PU[ 3 POI AOI PI1 [ • J PO 2 A02 P03 A03 PIO ~{' ~ DATA 110 ~ T)(O~ RXO __ - INTO~ INT' ..... TO-., LL :t ~ f n-. SCLK ~ WR.- &:! A5 ..... 0 G.. ADO P151 6 RTS 7 m P161 PI71 8 RST VPO[ 110 RXO P30 • OATA TXO P3 II INTO P321 "'2 INT1 P331 t3 TO pul T1 PHI 15 1 P2.5 AI3 iVA iiii PHI IS PH AI2 P371 17 J P2,3 All XTAl21 18 P22 AIO " 20 P21 AI P2.0 AI SClK :E~ 37 s pul z PO.O XTAl' 10 VSS I 3' "po 7 A07 A04I 10" 13<. 876. 3' Ii 30 JALE ,VPP PROG : jiffi A15 lP2I " " '" Figure 2. Logic Symbol ]P05 " I AD. ADS' 3' At< Figure 3. Pin Configuration FREQUENCE REFERENCE r-I I I I OSCIL LATOR & TIMING 4096 BYTES PROGRAM MEMORY (8044 & 8744) 192 BYTES DUAL PORT RAM SIU (SERIAL INTERFACE UNIT) I ,I I I I I I I I L .. INTERRUPTS TWO 16-BIT TIMER EVENT COUNTERS '-_..,.....,...._...1 I--~- INTERRUPTS I I I --l CONTROL PARALLEL PORTS ADDRESS DATA BUS AND 110 PINS Figure 4. Block Diagram 2(}-3 COUNTERS DATA 110 HDLC/SDLC SERIAL COMMUNICATIONS .8044AH/8344AH Functional Description General The Internal Data RAM address space is 0 to 255. Four 8-Register Banks occupy loCations 0 through 31. The stack can be located anywhere in the Internal Data RAM address space. ·In addition, 128 bit locations of the on-chip RAM are accessible through Direct Addressing. These bits reside in Internal Data RAM at byte locations.32 through 47. Currently locations 0 through 191 of the Internal Data RAM address space are filled with on-chip RAM. The 8044 integrates the powerful 8051 microcontroller with an intelligent Serial Communication Controller to provide a single-chip solution which will efficiently implement a distributed processing or distributed control system. The microcontroller is a self-sufficient unit containing ROM, RAM, ALU, and its own peripherals. The 8044's architecture and instruction set are identical to the 8051 'so The 8044 replaces the 8051 's serial interface with an intelligent SDLC/HDLC Serial Interface Unit (SIU). 64 more bytes of RAM have been added to the 8051 RAM array. The SIU can communicate at bit rates up to 2.4 M bps. The SIU works concurrently with the Microcontroller so that there is no throughput loss in either unit. Since the SIU possesses its own intelligence, the CPU is off-loaded from many of the communications tasks, thus dedicating more of its computing power to controlling local peripherals or some external process. SPECIAL FUNCTION REGISTERS ,--"---, 25s INDIRECT ~cPRESS- The mlcrocontroller is a stand-alone highperformance single-chip computer intended for use in sophisticated real-time application such as instrumentation, industrial control, and intelligent computer peripherals. • • • { 191 248 F8H FOH E8H EOH D8H DOH C8H COH E~ 1 ADDRESS· ABLE BITS IN SFRs (128 BITS) 98H 90H 88H -=~12::.8=13~5_-",12~8 80H 127 ,... ADDRESS· ABLE BITS IN SFRs (128 BITS) The major features of the microcontroller are: • • D RAM ~ The Microcontroller • • • • • • • 255 8-bit CPU on-chip oscillator 4K bytes of ROM 192 bytes of RAM 32 I/O lines 64K address space for external Data Memory 64K address space for external Program Memory two fully-programmable 16-bit timer/counters a five-source interrupt structure with two priority levels bit addres.sability for Boolean processing 1 ,.,sec instruction cycle time for 60% of the instructions 2 ,.,sec instruction cycle time for 40% of the instructions .4 ,.,sec cycle time for 8 by 8 bit unsigned Multiply/Divide DIRECT ADDRESSING ~ b-=:d 127 120 REGISTERS __ -.-_~A INTERNAL DATA RAM SPECIAL FUNCTION REGISTERS Figure 5. Internal Data Memory Address Space Parallel 1/0 The 8044 has 32 general-purpose 110 lines which are arranged into four groups of eight lines. Each group is called a port. Hence there are four ports; Port 0, Port 1, Port 2, and Port 3. Up to five lines from 1 and Port 2 are dedicated to supporting the serial channel when the SIU is invoked. Due to the nature of the serial port, two of Port 3's 110 lines (P3.0 and P3.1) do not have latched outputs. This is true whether or not the serial channel is used. Internal Data Memory Functionally the Internal Data Memory is the most flexible of the address spaces. The Internal Data Memory space is subdivided into a 256-byte Internal Data RAM address space and a 128-byte SpeCial Function Register address space as shown in Figure 5. 20-4 8044AH/8344AH Table 1. MCS®-51 Instruction Set Description LOGICAL OPERATIONS (CONTINUED) ARITHMETIC OPERATIONS Mnemonic ADD A,Rn ADD A,direct ADD A,@Ri ADD A,#data ADDC A,Rn ADDC A,direct ADDC A,@Ri ADDC A,#data SUBB A,Rn SUBB A,direct SUBB A,@Ri SUBB A,#data INC INC INC INC INC DEC DEC DEC DEC A Rn direct @Ri DPTR A Rn direct @RI MUL DIV DA AB AB A Mnemonic A,@Ri ORL Description Byte Cyc Add register to Accumulator 1 1 Add direct byte to Accumulator 2 1 Add indirect RAM to Accumulator 1 1 Add immediate data to Accumulator 2 1 Add register to Accumulator with Carry 1 1 Add direct byte to A with Carry flag 2 1 Add indirect RAM to A with Carry flag 1 1 Add immediate data to A with Carry flag 1 2 Subtract register from A 1 1 with Borrow Subtract direct byte from A with Borrow 2 1 Subtract indirect RAM from A with Borrow 1 1 Subtract immed data from A with Borrow 2 1 I ncrement Accumulator 1 1 Increment register 1 1 Increment direct byte 1 2 Increment indirect RAM 1 1 I ncrement Data POinter 1 2 Decrement Accumulator 1 1 Decrement register 1 1 Decrement direct byte 1 2 Decrement indirect RAM 1 1. MultiplyA&B 1 4 DIvide A by B 1 4 Decimal Adjust 1 Accumulator 1 ANL A,dlrect ANL A,@Ri ANL A,#data ANL direct,A ANL dlrect,#data ORL A,Rn ORL A,direct A,#data ORL direct,/!. ORL direct;#data XRL A,Rn XRL' A,direct XRL A,@RI XRL A,#data XRL dlrect,A XRL dlrect,#data CLR CPL A A RL RLC A A RR A RRC A SWAP A DATA TRANSFER Mnemonic MOV A,Rn LOGICAL OPERATIONS Mnemonic A,Rn ANL ORL Destination Byte Cyc OR indirect RAM to Accumulator OR immediate data to Accumulator 2 OR Accumulator to direct byte 2 OR immediate data to direct byte 3 2 Exclusive-OR register to Accumulator Exclusive-OR direct 2 byte to Accumulator Exclusive-OR indirect RAMtoA 1 Exclusive-OR Immediate data to A 2 Exclusive-OR Accumulator to direct byte 2 Exclusive-OR Immediate data to direct 3 2 Clear Accumulator Complement Accumulator Rotate Accumulator Left Rotate A Left through the Carry flag Rotate AccumtJiator Right Rotate A Right through Carry flag Swap nibbles within the Accumulator Destination Byte Cyc AND register to Accumulator 1 1 AND direct byte to Accumulator 1 2 AND indirect RAM to Accumulator 1 1 AND Immediate data to Accumulator 1 2 AND Accumulator to direct byte 2 1 AND immediate data to 3 direct byte 2 OR register to Accumulator 1 1 OR direct byte to Accumulator 1 2 20-5, MOV A,dlrect MOV A,@Ri MOV A,#data MOV Rn,/!. MOV Rn,direct MOV Rn,#data MOV direct,A MOV direct,Rn MOV direct,direct MOV direct,@Ri Byte Cyc Description Move register to Accumulator Move direct byte to Accumulator 2 Move Indirect RAM to Accumulator Mov immediate data to Accumulator 2 Move Accumulator to register' Move direct. byte to register 2 2 Move immediate data to register 2 Move Accumulator to direct byte 2 Move register to direct byte 2 2 Move direct byte to 2 3 direct Move indirect RAM to direct byte 2 2 intJ 8044AH/8344AH ~[Q)~~[f>!l©~ ~[f>!lIF©rRl!i¥ll~uij©[f>!l Table 1. (Cont.) DATA TRANSFER (CONTINUED) PROGRAM AND MACHINE CONTROL Mnemonic direct,#data MOV Mnemonic ACALL addr11 Description Byte Cyc Move immediate data to direct byte 2 3 @Ri,A Move Accumulator to· MOV indirect RAM MOV @Ri,direct Move direct byte to Indirect RAM 2 2 @Ri,#data Move immediate data to MOV indirect RAM 2 DPTR,#data16 Load Data POinter with MOV a 16-bit constant 2 3 MOVC A,@A+DPTR Move Code byte relative to DPTRtoA 2 MOVC A,@A+PC Move Code byte relative to PCtoA 2 MOVX A,@RI Move External RAM (8bit addr) to A 2 Move External RAM (16MOVX A;@DPTR bit addr) to A 2 Move A to External RAM MOVX @Ri,A (8-bit addr) 2 MOVX @DPTR,A Move A to External R'AM (16-bit addr) 2 PUSH direct Push direct byte onto stack 2 2 direct Pop direct byte from POP stack 2 2 A,Rn XCH Exchange register with Accumulator XCH A,dlrect Exchange direct byte with Accumulator 2 A,@RI XCH Exchange indirect RAM with A XCHD A,@RI Exchange low-order Digit Ind RAM w A Description Byte Cyc Absolute Subroutine Call 2 2 LCALL addr16 Long Subroutine Call 3 2 2 RET Return from subroutine 1 RETI Return from interrupt 1 2 AJMP addr11 Absolute Jump 2 2 LJMP addr16 Long Jump 3 2 SJMP rei Short Jump (relative addr) 2 2 JMP @A+DPTR Jump Indirect relative to the DPTR 2 JZ rei Jump if Accumulator is Zero 2 2 JNZ rei Jump if Accumulator IS Not Zero 2 2 JC rei Jump if Carry flag IS set 2 2 JNC rei Jump if No Carry flag 2 2 JB bit,rel Jump if direct Bit set 32 JNB bit, rei Jump If direct Bit Not set 3 2 JBC bit,rel Jump if direct Bit IS set & Clear bit 3 2 CJNE A,direct,rel Compare direct to A & Jump If Not Equal 3 2 CJNE A,#data,rel Comp, immed, to A & Jump if Not Equal 3 2 CJNE Rn,#data,rel Comp, Immed, to reg & Jump If Not Equal 3 2 CJNE @RI,#data,rel Comp, immed, to ind, & Jump If Not Equal 3 2 Decrement register & DJNZ Rn,rel Jump If Not Zero 2 2 DJNZ dlrect,rel Decrement direct & Jump if Not Zero 3 2 NOP No operation 1 1 BOOLEAN VARIABLE MANIPULATION Notes on data addressing modes: -Working register RO-R7 Rn direct -128 internal RAM locations, any 1/0 port, control or status register -Indirect Internal RAM localton addressed by @Ri register RO or R1 -8-bit constant included in instruction #data #data16 -16-bit constant Included as bytes 2 & 3 of Instruction -128 software flags, any 1/0 pin, control or bit status bit Notes on program addressing modes: addr16 -Destination address for LCALL & LJMP may be anywhere within the 64-K program memory address space Addr11 --Destination address for ACALL & AJMP will be within the same 2-K page of program memory as the first byte of the following instruction -SJMP and all conditional jumps Include an 8rei bit offset byte, Range is +127-128 bytes relative to first byte of the follOWing instruction All mnemonics copynghted © Intel Corporation 1979 Mnemonic CLR C CLR bit SETB C SETB bit CPL C CPL bit ANL C,blt ANL C,/blt ORL C/blt ORL C,/bit MOV C,/blt MOV bit,C Description Byte Cye Clear Carry flag 1 1 Clear di'rect bit 1 2 Set Carry flag 1 1 Set direct Bit 1 2 Complement Carry flag 1 1 Complementdtrect bit 2 1 AND direct bit to Carry flag 2 2 AND complement of direct bit to Carry 2 2 OR direct bit to Carry flag 2 2 OR complement of direct bit to Carry 2 2. Move direct bit to Carry flag 2 Move Carry flag to direct bit 2 2 2()"6 inter 8044AH/8344AH There are three control registers and eight parameter registers that are used to operate the serial interface. These registers are shown in Figure 5 and Figure 6. The control registers set the modes of operation and provide status information. The eight parameter registers buffer the station address, receive and transmit control bytes,and point to the on-chip transmit and receive buffers. Port 0 and Port 2 also have an alternate dedicated function. When placed in the external access mode, Port 0 and Port 2 become the means by which the 8044 communicates with external program memory. Port 0 and Port 2 are also the means by which the 8044 communicates with external data memory. Peripherals can be memory mapped into the address space and controlled by the 8044. Data to be received or transmitted by the SIU must be buffered anywhere within the 192 bytes of onchip RAM. Transmit and receive buffers are not allowed to "wrap around" in RAM; a "buffer end" is generated after address 191 is reached. Timer/Counters The 8044 contains two 16-bit counters which can be used for measuring time intervals" measuring pulse widths, counting events, generating precise periodic interrupt requests, and clocking the serial communications. Internally the Timers are clocked at 1/12 of the crystal frequency, which is the instruction cycle time. Externally the counters can run up to 500 KHz. AUTO Mode In the AUTO mode the SIU implements in hardware a subset of the SOLC protocol suoh that it responds to many SOLC frames without CPU intervention. All AUTO mode responses to the primary station will conform to IBM's SOLC definition. The advantages of the AUTO mode are that less software is required to implement a secondary station, and the hardware generated response to polls is much faster than doing it in software. However, the Auto mode can not be used at a primary station. Interrupt System External events and the real-time driven on-chip peripherals require service by the CPU asynchronous to the execution of any particular section of code. To tie the asynchronous activities of these functions to normal program execution, a sophisticated mUltiple-source, two priority level, nested interrupt system is provided. Interrupt response latency ranges from 3 "sec to 7 "sec when using a 12 MHz clock. To transmit in the AUTO mode the CPU must load the Transmit Information Buffer, Transmit Buffer Start register, Transmit Buffer Length register, and set the Transmit, Buffer Full bit. The SIU automatically responds to a poll by transmitting an information frame with the PIF bit in the control field set. When the SIU receives a positive acknowledgement from the primary station, it automatically increments the Ns field in the NSNR register and interrupts the CPU. A negative acknowledgement would cause the SIU to retransmit the frams. All five interrupt sources can be'mapped into one of the two priority levels. Each interrupt source can be enabled or disabled individually or the entire interrupt system can be enabled or disabled. The five interrupt sources are: Serial Interface Unit, Timer 1, Timer 2, and two external interrupts. The external interrupts can be either level or edge triggered. Serial Interface Unit (SIU) The Serial Interface Unit is used for HOLC/SOLC communications.. It handle'S Zero Bit Insertion/Deletion, Flags, automatic address recogni.!ion, and a 16-bit cyclic redundancy check. In addition it implements in hardware a subset of the SOLC protocol such that it responds to many SOLC frames without CPU intervention. In certain applications it is advantageous to have the CPU control the reception or transmission of every single frame. For this reason the SIU has two modes of operation: "AUTO" and "FLEXIBLE" (or "NONAUTO"). It is in the AUTO mode that the SIU responds to SOLC frames without CPU intervention; whereas, in the FLEXIBLE mode the reception or transmission of every single frame will be under CPU control. To receive in the AUTO mode, the CPU loads the Receive Buffer Start register, the Receive Buffer Length register, clears the Receive Buffer Protect bit, and sets the Receive Buffer Empty bit. If the SIU is polled in this state, and the TBF hit indicates that the Transmit Buffer is empty, an automatic RR response will be gener~ted. When a valid information' frame is received the SIU will automatically increment Nr in the NSNR register and interrupt the CPU: While in the AUTO mode the SIU can recognize and respond to the following commands without 'CPU intervention: I (Information), RR (Receive Ready), RNR (Receive Not Ready), REJ (Reject), and UP (Unnumbered POll). The StU can generate 20-7 8044AH/8344AH SYMBOLIC ADDRESS REGISTER NAMES ~ B REGISTER ACCUMULATOR 'THREE BYTE FIFO TRANSMIT BUFFER START TRANSMIT BUFFER LENGTH TRANSMIT CONlROL BYTE , SIU STATE COUNTER SEND COUNT RECEIVE COUNT PROGRAM STATUS WORD 'DMA COUNT STATldN ADDRESS RECEIVE ,FIELD LENGTH RECEIVE BUFFER START RECEIVE BUFFER LENGTH RECEIVE CONTROL BYTE SERIAL MODE STATUS REGISTER INTERRUPT PRIORITY CONTROL , PORT 3 INTERRUPT ENABLE CONTROL PORT 2 PORT 1 riMER HIGH 1 TIMER HIGH 0 TIMER LOW 1 TIMER LOW 0 TIMER MODE TIMER CONTROL DATA POINTER HIGH )DATA POINTER LOW STACK POINTER PORTO B' ACC FIFO FIFO FIFO TBS TBL TCB SIUST NSNR PSW DMA CNT STAD RFL RBS RBL RCB SMD STS IP P3 IE P2 Pl THl THO BYTE ADDRESS, BIT ADDRESS ~-'- , - - ' > - - , ~ 247 231 Ihrough throuah 240 224 223 215 t Ihrouah 216 208 fOU throu h 240 224 223 222, 221 220 219 218 217 216 208 207 206 205 204 203 202 201 200 184 176 168 160 144 141 140 139 138 137 207 191 183 175 167 151 throu throu throu 200 184 176 168 160 144 143 throuah 136 136 128 131' 130 129 128 throu throu Tll TLO TMOD TCON DPH DPL SP PO 135 throuah (FOHI (EOHI (DFHI (DEHI (DDHI (DCH) (DBH) (DAH) (D9HI (D8H) (DOHI (CFHI (CEH) (CDHI (CCH) (CBH) (CAHI (C9HI (C8HI (B8HI (BOHI (A8H) (AOHI (90HI (8DH) (8CHI (BBH) (8AHI (89HI (B8H) '(83HI (82H) (81H) (80H) SFR's CONTAINING DIRECT ADDRESSABLE BITS ·ICE Support Hardware registers. Under normal operating conditions there is' nb nee'd tor the CPU to access these registers. Figure 5, Mapping of Special Function registers SERIAL MODE REGISTER (SMDI SCM2 SCMl SCMO NRZI lOOP I STATUS REGISTER (STS) TBF RBE RTS SI BOV PFS NB I I OPB AM I I I NFCS L - - , NO FRAME CHECK SEOUENCE NON,BUFFERED PRE, FRAME EYNC LOOP NOp!! RETURN TO ZERO INVERTED SELECT CLOCK MODE RBP L - RECEIVE BUFFER PROTECT AUTO, MODE/ADDRESSED MODE OPTIONAL POLL BIT RECEIVE INFORMATION BUFFER OVERRUN SERIAL INTERFACE UNIT INTERRUPT REQUEST TO SEND RECEIVE BUFFER E!'IIPTY TRANSMIT BUFFER FULL ' SEND COUNT RECEIVE 'COUNT REGISTER (NSNR) r-:=-r-=:;-:-r-:=:-r-,;;"",",--,=",..,;;-:--r-=.-.-...",--, SEQUENCE ERROR RECEIVED L _ - L_ _-'-_ _ _ _ RECEIVE SEQUENCE COUNTER SEQUENCE ERROR SEND SEND SEQUENCE COUNTER Figure 6, Serial Interface Unit Control, re!ilisters 20-8 8044AH/8344AH Frame Format Options the following responses without CPU intervention: I (Information), RR (Receive Ready), and RNR (Receive Not Ready). ,,' In addition to the standard, SOLC frame format, the 8044 will support the frames displayed in Figure 7. The standard SOLCframe is shown at the top of this figure. For th!!l remaining frames the information field will incorporate the control or address bytes and the frame check sequences; therefore these fields wHi be stored in the Transmit and Receive buffers. For example, in the non-buffered mode the thkd byte, is treated as the beginning of the information field.' In the nonaddressed mode, the informatioQ ,field begins after the opening flag. The mode bits' to set the frame format options, are foung in ,the Serial Mode register and the Status register. When the Receive Buffer Empty bit (BB!:) in· dicates that the Receive Buffer is empty, the receiver is enabled, and when the RBE bit in· dicates that 1he Receive Buffer is full, the receiver is disabled. Assuming that the Receive Buffer is empty, the SIU will respond. to a poll vvith an I frame if the Transmit Buffer is·fuU. If the Transmit Buffer is empty, the SIU will respond t9 a. poll with a RR command jf the Receive -Buffer Protect bit (RBP) is cleared, or an RNR command if RBP is set. ' FLEXIBLE (or NON-AUTO) Mode EXTENDED ADDRESSING In the FLEXIBLE mode all ,communications are under control of the CPU. It is the CPU's task to encode and decode control fields, manage acknowledgements, and adhere to the requirements of the HOLC/SOLC protocols. The 8044 can be used as a primary or a secondary station in this mqde. To realize an extended control field or an extended address field (ising the HOLC prqtocol, the FLEXIBLE mode must' be used. Foran extended control field, the SIU is progra,r:nm!'ld to b,e in the non-buffered mode. The extended controHield will be the first and second bytes in the R~Meive_and Transmit Buffers. To receive a frame in the FLEXIBLE mode, the CPU . For extended addressing the SIU i~ placed in the nonmust load the Receive Buffer Start register, the ,addressed mode. In this mode the CPU must impleReceive Buffer Length register, clear the Receive But- . , ment the address rACOgnition for'received frames: The fer Protect bit, and set the Receive Buffer Empty bit. addressing field will be the initial bytes in the Transmit If a valid opening flag is received and,~he address, and Receive buffers followed by the control field. ' field matches the byte in the Station Address register or the address field contains a broadcast address, the The SIU can transmit and receive only frames which 8044 loads the control field in the receive control byte are multiples of a bits. For frames received with other register, and loads the I field in the receive buffer. than a-bit multiples, a CRC error will cause the SIU If there is no CRC error, the SIU interrupts the CPU, to reject the frame. indicating a frame has just been received. If there is a CRC error, no interrupt occurs. The Receive Field SOLe Loop Networks Length register provides the number of bytes that The SIU can be used in a ADLC loop as a secondary were received in the information field. or primary station. When the SIU iS,placed in the Loop moc;leitreceivesthe data on pin 10 al')d transmits the To transmit a frame" the CPU must load the transmit data one bit _time delayed on pin 11. It can also informatidn buffer, the Transmit Buffer Start register, rec'ognize the Go ahead signal and chal1ge it into a the Transmit Buffer Length register, the Transmit flag when it is ready to transmit. As a secondary staControl Byte, and set theTBF and theflFS bit. The tion the SIU can be used in the AUTO or FLftXIBLE SIU,' unsolicited by an HOLC/SOLC frame, will modes. As a primary station the FLEXIBLE mode is transmit the' entire information frame, and interrupt used; however, additional hardware is required for the C;PU, indicating the completion of transmission. generating the Go Ahead bit pattern. In the. Loop For' supervisorY frames or Unnumbered frames, the mode the maximum data rate is 1 Mbps clocked or transmit buffer length Yiould be O. ' 375 Kbps self-clocked. eRC SDLC Multidrop Networks The FCS register is initially set to all 1's prior to calculating the FCS field. The SIU will not interrupt the CPU if a CRC error occurs (in both AUTO and FLEXIBLE modes). The GRCerror'is cleared upon, receiving of an opening flag. The SIU can be used in a SOLC non-loop configuration as a secondary or' primary station. When the SIU is placed in the non-loop mode, data is received and transmitted on pin 11, and pin 10 drives a tri~state buffer. In non-loop mode; modem interface pins,RTS and CTS, become available. 20-9 8044AH/8344AH ."',' FRAME OPTION NFCS NB' FRAME FORMAT AM' Stondord SDLC NON·AUTOM_ 0 Stondoni SDLC AUTO Mode I F'I>A I C I" 0 Non-Bullereel M_ NON·AUTO Mode· I"F 0 IFcsl F I. I ~I c I, I F I A I No....Addre._ Mode NON·AUTOM_ IF I 0 I. I Fcsi F, I No ,FCS Field, NO'I'l-AUTO M_ 0 I FIAlc I No FCS Field AUTOM_' 0 r-I-F-'I-A-rl-c'I----''--'--.I-F--.I'' No FCS Field Non·Bullered M_ NON·AUTO Mode I F I A I =~:;!t~:~~d'Mode I F, I IFI F I F I NON·AUTO Mode Mod. Blto: AM - "AUTO" Mode/Addr••••d M_ NB - Non-Bullered Mod.' NFCS - No'FCS· Field Mode , , Key to Abbrevlotlons: F ~ Fllg (01111110) A Addre.. Field C = Control Field' = . Note 1: I =Iniormliion Field . FCS = Frame Chock Sequence r~e ~M bit function, IS ~ontrolled by the N6 bit Wh~n NB = 0, A~ becomes AUTo'mOde select, when NB = 1, AM becomes Address mode select ' Figure 7. Frame FormatOptioi'ls Data Clocking Options The 8044's serial port can operate in an externally clocked or seifclocked system: A clocked system provides to the 8044 a clock synchronization to the data. A self-clocked system uses tile 8044'5 on-chip Digital Phase Locked Loop (DPLL) to recover the clock from the data, and clock this data into the Serial Receive Shift Register. ' , ' In this mode, a clock synchronized with'thedata ,is externally fed into the 8044. This clock may be generated from an External Phase Locked Loop, or possibly supplied along with the data. The 8044 can transmit and receive data in this mode at rates u;J to 2.4 Mbps. ." This self ,clocked.mode, allows data transfer without a common. system data clock. An or:1-chip Digital Phase Locked Loop is~mployed to recover the data clock which is encoded in the data stream. The DPLL will converge to the nominal 'bit center within eight bit traositior;ls,worstcase. Th~' DPLL. r,equires 'a reference clock of either 16 times (16x) pf,32 times (32x) the data rate. This reference cloc'k may be externally applied or internally generated. When internally generateo ,either the 8044's internal logic clock (crystal frequency divided t;>y t~o) or ,the timer,1 Overflow is used as the reference clock. Using, the in,ternal timer 1 clock the data reates Can varY fr,om 244 to 62.~ Kbps. Us!r9 the}nternat logic ci9i::k ,at a ~ 6x sampling rate, receive; C\a~acan either be.187.5 Kbps, or 379 Kbps. When the reference clock ,for tl:)e DPLL is externally applied)hegata rates.ci~ vary frO.m 0 to 375 Kbps at a 16x sampling rate. To aid in a Phase Locked Loop capture, the slufi1:is a NRZI (Non Return to Zero Inverted) data encoding and decoding option. Addjtjonallythe.SIl) hs,sapreframe sync opt[on that:transmits two .bY\e~ Qlalternating 1's and O's to ensure that the receive' station DPLL wil!l~e synchronized with th:e data by the time it receives the opening flag, inter 8044AH/8344AH SCM Control and Status Registers ~..!...!l 0 0 There are three SIU Control and Status Registers: Serial Mode Register (SMD) Status/Command Register (STS) Send/Receive Count Register (NSNR) The SMD, STS, and NSNR registers are all cleared by system reset. This assures that the SIU will power up in an idle state (neither receiving nor transmitting). Clock Mode Data Rate (BitsLsecl* Self clocked, external 32x Self clocked, internal fixed Self clocked, internal fixed 0-187.SK 375K 187.5k * Based on a 12 Mhz crysta.I frequency ··0-1 M bps in loop configuration STS: Status/Command Register (bit-addressable) These registers and their bit assignments are describecj below. Bit: 7 6 5 4 3 2 I 0 ITBF IRBE IRTS ISII BOV IOPB lAM I RBP I SMD: Serial Mode Register (byte-addressable) The Status/Command Register (Address C8H) provides operational control of the SIU by the 8044 CPU, and enables the SIU to post status information for the ISCM21 SCM I ISCMO INRZI ILOOP IPFS INB INFCS I CPU's access. The SIU can read STS, and can alter certain bits, as indicated below. The CPU can both read The Serial Mode Register (Address C9H) ~elects the and write STS asynchronously. However, 2-cyde inoperational modes of the SIU. The 8044 CPU can both structions that access STS during both cycles (,JBC/B, read and write SMD. The SIU can read SMD but canREL' and 'MOV /B,C.') should not be used; since the not write to it. To prevent conflict between CPU and SIU may write to STS between the two CPU accesses. SIU access to SMD, the CPU should write SMD only when the Request To Send (RTS) and Receive Buffer The individual bits of the Status/Command Register Empty (RBE) bits (in the STS register) are both false are as follows: (0). Normally, SMD is accessed only during initialization. Name Description Bit# The individual bits of the Serial Mode Register are as follows: STS.O RBP Receive Buffer Protect. Inhibits writing of data into the receive buffName Description Bit # er. In AUTO mode, RBP forces an NFCS No FCS field in the SDLC frame. SMD.O RNR response instead of an RR. NB Non-Buffered mode. No control SMD.I STS.I AM AUTO Mode/Addressed Mode. Sefield in the SDLC frame. lects AUTO mode where AUTO mode is allowed. If NB is true, SMD.2 PFS Pre-Frame Sync mode. In 'this (= I), the AM bit selects the admode, the 8044 transmits two bytes dressed mode. AM may be cleared before the first flag of a frame, for by the SIU. DPLL synchronization. If NRZI is enabled, OOH' is sent; otherwise, STS.2 OPB Optional Poll Bit. Determines SSH is sent. In eithe.r case, 16 prewhether the SIU will generate an frame transitions are guaranteed. AUTO response to an optional poll (UP with P"",O). OPB may be set or SMD.3 LOOP Loop configuration. cleared by the SIU. SMD.4 NRZI NRZI coding option. STS.3 BOV Receive Buffer Overrun. BOV may SMD.S SCMO Select Clock Mode - Bit 0 be set or cleared by the SIU. SMD.6 SCM I Select Clock Mode - Bit I STS.4 SIU Interrupt. This is one of the five SI SMD.7 SCM2 Select Clock Mode - Bit 2 interrupt sources to the CPU. The vector location = 23H. SI may be The SCM bits decode as follows: set by the SIU. It should be cleared SCM Data Rate l:lY the CPU before returning from (BitsLsecl* an interrupt routine. ~..!...!l Clock Mode Externally clocked 0-2.4M** 0 0 0 STS.5 RTS Request To Send. Indicates that the 8044 is ready to transmit or is trans0 0 I Reserved mitting. RTS may be read or writ0 0 . Self clocked, timer overflow 244-62.SK ten by the CPU. RTS may be read Reserved 0 I by the SIU, and in AUTO mode may be written by the SIU. Self clocked, external16x 0-37SK 0 0 Bit: 7 6 5 4 3 2 I 0 20-.11 8044AH18344AH RBE STS.6 TBf STS.7 Receive Buffer Empty. RBE can be thought of as Receive Enable. RBE is set to one by the CPU when it is ready to receive a frame, or has just read the buffer, and to zero by the SIU when a frame has been received. Transmit Buffer full. Written by the CPU to indicate that it has filled the transmit buffer. TBf may be cleared by the SIU. 7 6 5 4 3 2 I 0 INS2INSIINsolsESINR21~RIINROlsERI The Send/Receive Count Register (Address D8H) contains the transmit and receive sequence nUIllbers, plus tally error indications. The SIU can both read and write NSNR. The 8044 CPU can both read and write NSNR asynchronously. However, 2-cycle instructions that access NSNR during both cycles ('JBC /B, REL', and 'MOV /B,C') should not be used, since the SIU may write to NSNR between the two 8044 CPU accesses. The individual bits of the Send/Receive Count Register are as follows: BitH NSNR.O NSNR.l NSNR.2 NSNR.3 NSNR.4 NSNR.5 NSNR.6 NSNR.7 ~ Descril!tion SER Receive Sequence Error: NS (P) "" NR (S) NRo Receive Sequence Counter-Bit 0 NRI NR2 SES NSO NSI NS2 TBS: Transmit Buffer'Start Address Register (byte-addressable) The Transmit Buffer Start address register (Address DCH) points to the location in on-chip RAM for the beginning of the I-field of the frame to be transmitted. The CPU should access TBS only when the SIU is not transmitting a frame (when TBf=O). TBl: Transmit Buffer length Register (byte-addressable) NSNR: Send/Receive Count Register (bitaddressable) Bit: and RBE=O). Normally, ~TAD is accessed only during initialization. Receive Sequence Counter-Bit I Receive Sequence Counter-Bit 2 Send Sequence Error: NR (P) -# NS (S) and NR (P)-# NS (S) + I The Transmit Buffer. Length register (Address DBH) contains the length (in bytes) of the I-field to be transmitted. A blank I-field (TBL=O) is valid. The CPU should access TBL only when the SIU is not transmitting a frame (when TBF=O). NOTE: The transmit and recieve buffers are not allowed to "wrap around" in the on-chip RAM. A "buffer end" is automatically generated if address 191' (BFH) is reached. TCB: Transmit Control Byte Register (byte-addressable) The Transmit Control Byte register (Address DAH) contains the byte which is to be placed in the control field of the transmitted frame, during NON-AUTO mode transmission. The CPU should access TCB only when the SIU is not transmitting a frame (when TBF=O). The Ns and NR counters are not used in the NON-AUTO mode. RBS: Receive Buffer Start Address Register (byte-addressable) . The Receive Buffer Start address register (Address CCH) points to the location in on-chip RAM where the begi'nning of the I-field of the frame being received is to be stored. The CPU should write RBS only when the SIU is not receiving a frame (when RBE=O). Send Sequence Counter - Bit 0 Send Sequence Counter - Bit I Send Sequence Counter - Bit 2 RBl: Receive Buffer length' Register (byte-addressable) Parameter Registers There are eight parameter registers that are used in connection with SIU operation. All eight registers may be read or written by the 8044 CPU. RfL and RCB are normally loaded by the SIU . The eight parameter registers are as follows: The Receive Buffer Length register (Address CBH) contains the length (in bytes) o(the area in on-chip RA'M allocated for the received I-field. RBL=O is valid. The CPU should write RBL only when RBE=O. RFl: Receive Field length Register (byte-addressable) STAD: Station Address Register (byte-addressable) The Station Address register (Address CEH) contains the station address. To, prevent ac<;ess conflict, the CPU should access STAD only when the SIU is idle (RTS=O The Received Field Length register (Address CDH) contains the length (in bytes) of the received I -field that has just been loaded into on-chip RAM. RfL is loaded by the SIU, RfL=O is valid. RFL should be accesssed by the CPU only when RBE=O. 20-12 8044AH/8344AH RCB: Receive Control Byte Register (byte-addressable) The Received Control Byte register (Address CAH) contains the control field of the frame that has just been received. RCB is loaded by the SIU. The CPU can only read RCB, and should only access RCB when RBE=O. ICE Support Registers The 8044 In-Circuit Emulator (ICE-44) allows the user to exercise the 8044 application system and monitor the execution of instructions in real time. The emulator operates with Intel's Intellec@ development system. The development system interfaces with the user's 8044 system through an in-cable buffer box. The cable terminates in a 8044 pin-compatible plug, which fits into the 8044 socket in the user's system. With 20-13 the emulator plug in place, the user can excercise his system in real time while collecting up to 255 instruction cycles of 'real-time data. In addition, he can single-step the program. Static RAM is available (in the in-cable buffer box) to emulate the 8044 internal and external program memory and external data memory. The designer can display and alter the contents of the replacement memory in the buffer box, the internal data memory, and the internal 8044 registers, including the SFRs. SIUST: SIU State Counter (byte-addressable) The SIU State Counter (Address D9H) reflects the state of the internal logic which is under SIU control. Therefore, care must be taken not to write into this register. This register provides a useful means for debugging 8044 receiver problem, 8044AH/8344AH • Nollce: Stresses above those ,listed under "Absolute' Maximum Ratings" may cause perman,ent damage to the deVice, This IS a stress rating only and functional operation of the device at these or any other conditions above those indicated In the operalional sections of this specificallon IS not implied. Exposure to absolute maximum rating conditions for extended periods may affect device reliability, ABSOLUTE MAXIMUM RATINGS· Ambient Temperature Under Bias". . , .,0 to 70'C Storage Temperature .. -65'C to + 150'C Voltage on Any Pin With Respect to Ground (Vss) .. , . , - 0,5V to + 7V Power Dissipation" , .' ,... ,.2 Watts DC CHARACTERISTICS (TA=O'C to 70'C, VCC = 5V ± 10%, VSS = OV) Symbol Parameter Max Units -0.5 0,8 V Input High Voltage (Except RSTIVPD and XTAL2) 20 VCC +0 5 V VIHI Input High Voltage To RSTIVPD For Reset, XTAL2 25 VOL Output Low Voltage Ports I, 2, 3 (Note 1) VOLI Output Low Voltage Port 0 ALE, \PSEN (Note 1) VOH Outpt High Voltage Ports I, 2, 3 VOHI Output High Voltage Port 0, ALE, \PSEN IlL Logical 0 Input Current Ports I, 2, 3 IIHI III VIL Input Low Voltage VIH Min Typ Test. Conditions V XTALI to VSS 0.45 V· 10L= 1 6mA 045 V IOL=3.2mA 24 V 10H= -80flA 2.4 V 10H= -400"A -800 "A XTALI at VSS VIL = 0,45V Input High Current.TO RSTIVPD For Reset 500 "A Vin=VCC-l.5V Input Leaka~ Current To Port 0, \EA 10 flA 200 mA TA=25'C 10 pF Ic = lMHz -3,5 mA XTAl1 = VSS VIL = 0,45V ICC Power Supply Current CIO Capacitance of 1/0 Buffer IIL2 Logical 0 Input Current XTAL 2 125 0.45V < Vin < VCC Note 1: VOL IS degraded when the RUPI·44 rapidly discharges external capacitance This A.C. noise is most pr~nbunced dUring emission of address data. When uSing external memory, locate the latch or buffer as close to the RUPI·44 as possible. Datum Address Write Data Degraded I/O Lines VOL (peak) (max) P2, PO PI, P3 ,8V PO PI, P3, ALE ,8V Emitting Ports 2()"t4 \ 8044AH/8344AH A.C. CHARACTERISTICS (TA O·C to 70·C, VCC = 5V ± 10 0;. 'SS= OV, CL for Port 0, ALE and PSEN Outputs = l00pF; CL for All Other Outputs = ao pF) Program Memory Symbol Parameter 12 MHz Clock Min Max Units Variable Clock 1ITCLCL = 1.2 MHz to 12 MHz Min Max Units TLHLL ALE Pulse Width 127 ns 2TCLCL-40 ns TAVLL Address Setup to ALE 43 ns TCLCL-40 ns TLLAX' TLLlV Address Hold After ALE 48 ns TCLCL·35 TLLPL TPLPH ALE To Valid Instr In ALE To PSEN , PSEN Pulse Width TPLIV PSEN To Valid Instr In TPXIX Input Instr Hold After PSEN TPXIZ" Input Instr Float After PSEN TPXAV' Address Valid After TAVIV TAZPL Address To Valid Ins!r In Address Float To PSEN PsEN 233 ns 58 ns TCLCL·25 215 ns 3TCLCL·35 125 ns, 0 ns ns 4TCLCL·l00 ns ns 3TCLCL·125 0 75 ns 302 ns ns -25 ns ns ns 63 ns TCLCL·20 ns 5TCLCL·115 ns ns TCLCL-8 ns -25 Notes: 1, TLLAX for access to program memory IS different from TLLAX for data memory, 2, Interfacing RUPI·44 devices with float times up to 75ns is perrnissible, ThiS limited bus contention Will not cause any damage to Port o drfvers.' . External Data Memory Symbol Parameter 12 MHz Clock Min Max Units Variable Clock 1ITCLCL = 1.2 MHz to 12 MHz Max Min Units TRLRI:i Ro Pulse Width 400 I'S 6TCLCL·1OQ ns TWLWH WR Pulse Width 400 ns 6TCLCL·l00 ns 48 ns ns TCLCL·35 ns 0 Address Hold After ALE TLLAX' TRLoV ' . RD· To Valid Data In 250 5TCLCU65 ns TRHoX Data !:lold After Ro TRHDZ Data Float After Ro 97 ns 2TCLCL·70 ns TLLoV ALE To Valid Data In 517 ns 8TCLCL·150 ns TAVoV Address To Vand Data In 585 ns 9TCLCL·165 ns TLLWL TAVWL ALE To WR or Ro Address To WR or Ro 200 203 300 ns ns 3TCLCL·50 4TCLCL·130 3TCLCL+50 ns ns 123 TCLCL+40 ns 0 ns TWHLH WR or Ro High To ALE High 43 ns TCLCL·40 ToVWX pat a Valid To WR Transition 33 ns TCLCL·50 ns TOVWH Data Setup Before WR 433 ns 7TCLCL·150 ns TWHOX Data Hold After WR 33 ns TCLCL·50 TRLAZ Address Float After AD 0 ns Note 1. TLLAX for access· to program memory IS different from TLLAX for access data memory Serial Interface Symbol Parameter Min Max Units ToCY. Data Clock 420 ns TDCL Data Clock Low 180 ns ToCH ollta Clock High 100 ns 20-15 ns 0 ns inter 8044AH/8344AH - Serial Interface- (Continl,le(tl - ,2'~~~'--~~~J:l~~'y'--- lTD toSS tDHS Data Setup Time - - r~- ns 180 D;t;-HoIdTim~ - . ns 40 f-- ---- - - - - - '40~ ns WAVEFORMS Memory Access Program Memory Read Cycle ~------------------------------TCY--------------------------~ ALE ~ PSEN __ ~+ __ ~-;-~"jTPXAV A7-AD PORTO PORT2 ADDRESS OR SFR-P2 ADDRESSA15-A8 INSTR IN ADDRESS A15-AS Data Memory Read Cycle -----TLLDV ------------~ TWHLH ALE PSEN RD -----------r-------, ~~------·--_+TRLRH'------------~.r_---- TLLAX TRHDX A7-AO PORTO QATA IN, TRLAZ PORT2 ADDRESS OR SFR-P2 ADDRESS A15-AS OR SFR-P2 Data Memory Write Cycle TWHUj ALE PSEN WR ___________ -+~------~_{ 14------------TWLWH----------~1,---- TOVWH DATA OUT PORTO PORT 2 ADDRESS A15-A8 OR SFR-p2 20-16 'rWHOX 8044AH/8344AH SERIAL 1/0 WAVEFORMS Synchronous Data Transmission ----------~ ~------TDCl----~ r-----------~ SClK DATA TID Synchronous Data Reception TOCY SClK j TOCl ~ 7 \ \ TOCH ~r ....; r DATA - \ ...., TOSS 20-17 TDHS C 8044AH/8344AH AC TESTING INPUT, OUTPUT, FLOAT WAVEFORMS INPUT/OUTPUT 2.4=>(20 0.45 TEST POINTS ~0.::.8_ _ _ _ _ _ JC 2o.'0 8 = FlOAT j ~ 2.4 2.0 0.45 __ -FlOAT----....,t 2.0 0.....8 - - - - - - - - - 0 . 8 AC testing Inputs'are driven at 2 4V for a logiC "1" and 0 45V tor a logic "0 .. TIming measurements are made at 20V for a logiC "1" and 08V for a logiC "0" EXTERNAL CLOCK DRIVE XTAL2 TCHCl 1-0------- Symbol TClCl TCHCX TClCX TClCH TCHCL Parameter Oscillator Period High Time low Time Rise Time Fall Time TClCl------~ Variable Clock Freq = 1.2 MHz to 12 MHz Min Max 83.3 287.5 20 TClCl·TClCX 20 TClCl·TCHCX 20 20 20-18 Unit ns ns ns ns ns 2.4 . 0.45 8044AH/8344AH CLOCK WAVEFORMS STATE 5 INTERNAL CLOCK Pl STATE 6 Pl P2 I P2 I I' 'STATE 1 Pl I P2 I STATE 5 STATE 2 Pl I P2 Pl I P2 XTAL2 ::2 I I ALE EXTERNAL PROGRAM MEMORY FETCH PSEN '----=-_......1 I THESE SIGNALS ARE NOT ACTIVATED DURING THE EXECUTION OF A MOVX INSTRUCTION I'" L I PO P2(EXT) 1 _ _ _ _ _..... INDICATES ADDRESS TRANSIONSI..._ _ _ _ _ _ _ _ _ _ _...... READ CYCLE RD OOH IS EMITTED DURING THIS PERIOD DPL OR RI OUT PO P2 WRITE CYCLE LY 4j: PCL OUT (IF PROGRAM MEMORY IS EXTERNAL) IDATAl I. FLOAT SAMPLED • in~ INDICATES DPH OR P2 SFR TO PCH TRANSITIONS I PCL OUT(EVEN IF PROGRAM WR L-_ _ _ _ _ _ _ _ _ _---' MEMORY IS INTERNAL) . DPL OR RI OUT PO I. DATA OUT INDICATES DPH OR P2 SFR TO PCH TRANSITIONS P2 .5.; tCL OUT :1h;OGRAM I MEMORY IS EXTERNAL) PORT OPERATION MOV PORT, SRC OLD DATA I NEW DATA ___LPO PINS SAMPLED ~O~P~I~N~S~S~A~M=P~L=ED=----~-----------~~c::::::::J MOV DES" PO MOV DEST, PORT (Pl, P2, P3) (INCLUDES INTO, INn, TO, n) SERIAL PORT SHIFT CLOCK ~L.----------------------I- \ - L....Pl, P2, P31'INS SAMPLED ::N~2S:~PLED ~----q:r RXD SAMPLED J~gDE O)--------~XD SAMPLED This diagram indicates when signals are clocked Internally The time It takes the signals to propagate to the pins, however, ranges from 25 to 125 ns This propagation delay IS dependent on vanables such as temperature and Pin loading Propagation also vanes from outp6t to output and component to component TYPically though, (TA " 25° C, fully loaded) RD and WR propagation delays are approximately 50 ns The other signals are tYPically 85 ns Propagation delays are Incorporated In the AC . specifications 20-19 8744H HIGH PERFORMANCE 8-BIT MICROCONTROLLER WITH On-CHIP SERIAL COMMUNICATION CONTROLLER 8051 MICROCONTROLLER CORE • Optimized for Real Time Control 12 MHz Olock, Priority Interrupts, - 32 Programmable I/O lines, Two 16·bit Timer/Counters • Boolean Processor • 4K x 8 EPROM, 192 x 9 RAM • 64K Accessible External Program Memory • 64K Accessible External Data Memory .• 4 I-IS Multiply and Divide SeRIAL INTERFACE UNIT (SIU) • Serial Communication Processor that , Operates Concurrently to CPU • 2.4 Mbps Maximum Data Rate • 375 Kbps using On·Chip Phase Locked Loop • Communication Software in Silicon: .- Complete Data Link Functions - Automatic Station Responses • Operates as an SDLC Primary or Secondary Station The RUPI-44 family integrates a high performan.ce S-bit Microcontroller, the Intel S051 Core, with an intelligent/high performance HOLC/SOLC serial communication controller, called the· Serial Interface Unit (SIU). See Figure 1. This dual architecture allows complex control and high speed data communication functions to be realized cost effectively. Specifically, the S044's Microcontroller features: 4K byte On-Chip program memory space; 32 I/O lines; two 16-bit timer/event counters; a 5-source; 2-level interrupt structure; a full duplex serial channel; a Boolean processor; and on,chip oscillator and clock circuitry. Standard TTL and most byte-oriented MCS-SO and MCS-S5 peripherals can be used for I/O and memory expansion. The Serial Interface Unit (SIU) manages the interface to a high speed serial link. The SIU offloads the On-Chip S051 Microcontroller of communication tasks, thereby freeing the CPU to concentrate on real time control tasks. The RUPI-44 family consists of the 8044,8744, and S3t4.'AIi three devices are identical except in respect of on-chip program memory. The S044 contains 4K bytes of mask-programmable ROM. User programmable EPROM replaces ROM in the S744. The 8344 addresses all program memory externally. The RUPI-44 devices are fabricated with Intel's reliable +5 volt, Silicon-gate HMOSII technology and packaged in a 40-pin DIP The 8744H is available in a hermetically sealed, ceramic, 40-lead dual incline package which includes a window that allows for EPROM erasure when exposed to ultraviolet light (See Erasure Characteristics). During normal operation, ambient light may adversely affect the functionality of the chip. Therefore, applications which expose the 8744H to ambient light may require an opaque label over the window. 8044'5 Dual Controller Architecture Contro I Lines 8051 Microcontroller --- 2-port RAM - S.I.U. HDLC/ SOLC port Figure 1. Dual Controller Architecture Intel Corporation Assumes No Responsibility for the Use of Any CircUItry Other Than CircUitry Embodied In an Intel Product No Other Circuit Patent Licenses are Implied • INTEL CORPORATION" 1982 20-20 ORDER NUMBER: 210735-002 · 8744H Table 1. RUPITM ·44 Family Pin Description vee + 5V power supply during operation and program verification. -SCLK T1 (P3.5). In addition to I/O, this pin provides in· QQ!. to counter 1 or serves as SCLK (serial clock) input. -WR (P3.6). The write control signal latches the data ~e from Port 0 into the External Data Memory. -RD (P3.7). The read control signal enables External Data Memory to Port O. PORTO Port 0 is an 8·bit open drain bidirectional I/O port. It is also the multiplexed low·order address and data bus when using external memory. It is used for data output during program verification. Port 0 can sink/source eight LS TIL I·oads. RST A high on this pin for two machine cycles while the oscillator is running resets the device. A small external pulldown resistor (""'ll.2kQ) from RST to Vss permits power·on reset when a capacitor (=10pf) is also connected from this pin to Vcc. VSS Circuit ground potential. PORT 1 Port 1 is an 8·bit quasi·bidirectional I/O port. It is used for the low·order address byte during program verification. Port 1 can sink/source four LS TIL loads. In non·loop mode two of the I/O lines serve alternate functions: . -RTS (Pl.6). Request·to·Send output. A low indicates that the RUPI·44 is ready to transmit. -CTS (Pl.?) Clear·to·Send input. A low indicates that a receiving station is ready to receive. ALEIPROG Provides Address Latch Enable output used for latching the address into external memory during normal opera· tion. It is activitated every six oscillator periods except during an external data memory acCess. It also receives the program pulse input for programming the EPROM version. PORT 2 Port 2 is an 8-bit quasi-bidirection I/O port. It also emits the high-order address byte when accessing, external memory. It is used fo~ the high.order address and the control signals during program verification. Port 2 can sink/source four LS TTL loads. PSEN The Program Store Enable output is a control Signal that enables the external Program Memory to the bus during external fetch operations. It is activated every six oscillator periods, except during external data memory accesses. Remains high during i"ternal pro· gram execution. PORT 3 Port 3 is. an 8-bit quasi·bidirectional I/O port. It also contains the interrupt, timer, serial port and RD and WR pins that are used by vl;lrious options. The output latch corresponding to a secondary function must be pro· grammed to a one (1) for that function to operate. Port 3 can sink/source LS TTL loads. EAlVPP When held at a TTL high level, the RUPI-44 executes in· structions from the intesnal ROM when the PC is less than 4096. When held at a TIL low level, the RUPI-44 fet· ches all Instructions from external Program Memory. The pin also receives the 21V EPROM programming supply voltage on the 8744. In addition to I/O, some of the pins also serve alternate functions as follows: -I/O RxD (P3.0). In point·to-point or multipoint configura· tions, this pin controls the direction of pin P3.1. Serves as Receive Data input in loop and diagnostic modes. -DATA TxD (P3.1) In point·to-point or multipoint configurations, this pin functions as data input/output. In loop mode, it serves as transmit pin. A '0' written to this pin enables diagnostic mode. -INTO.(P3.2). Interrupt 0 input or gate.control input for counter O. -INTl (P3.3). Interrupt 1 input or gate control input for counter 1. - TO(P3.4). Input to counter O. XTAL 1 Input to the oscillator's high gain amplifier. Required when a crystal is used. Connect to VSS when external source is used on XTAL 2. 20-21 XTAL2 Output from the oscillator's amplifier. Input to the internal timing circuitry. A crystal or external source can be used. ORDER NUMBER: 210735-002 8744H 2 P' 2 [ J POI AOI P' 1 [ P' • [ • , PO.2 A02 P' 5 [ 6 RTS P'SI 7 m J PO 5 ADS P1T[ 8 J PO.I RST RXD 1/0 OATA ~{ !i!g ::11~~~ 110 RXo .... DATA SClK w ~-+- SCLK 4- vee P' 0 P, , [ PO 0 AOO PO 3 A03 PO.O ADO A08 [. AoT Ei 10 P30 -ypp " J 11 ~Pmi TXo P3 1 I INTO P32 INT1 P33[ 13' )P21 TO PH [ 14 jP26 'A14 T1 P3 5 I " ViA iiO PHI .. I ALE PROG "15 P25 A13 JP24 A'2 I 17 All XTAL2 [ 18 " P2.2 A'O P21 A9 20 P2.0 P37 WR'4- XTALI [ RO~ VSS [ A8 (20 2.4 2.0.)C TEST POINTS 0.45 ;..:0:;:.8:....._ _ _ _ _....::;0.::..8 0.45 2 20 2.4 0... AC testing inputs are driven at 2.4V for a logic 1 and O.45V for a logic 0 Timing measijr$ments a,,~ made at 2.0V for a logic 1 and O.SV for a logic 0 For timing purposes, the float state is defined as the point at which a PO pin sinks 3.2mA or sources 400J'A at the voltage test levels SERIAL UO WAVEFORMS Synchronous Data Transmission ~-----------TOCY-----------<~ ---------........ t-----'TDCL - - - . I r-----------""""\ sCLK ~------------~~------TDCH DATA TTO Synchronous Data Reception ~-------------TDCY------------~ sCLK - - - - - -........ ~---TDCL---__l ,..---------" ~---TDCH--__l DATA TOSS ~---------TOHS-------------.I 20-25 ORDER NUMBER: 210735·002 ~[f,j[g[bOIMlOOO~IfJ~ 8744H "- Serial Interface Parameter Symbol Min Max Units TDCY Data Clock 420 ns TDCL Data Clock Low 180 ns TDCH Data Clock High 100 ns TTD Transmit Data Delay TOSS Data Setup Time Data Hold Time TDHS 180 40 40 ns ns ns Memory Access Program Memory Read Cycle ~--------------~-------------TCY------------------------~ ALE PSEN INSTR IN A7-AD PORTO ADDRESS A15-A8 PORT 2 Data Memory Read Cycle TWHLH ALE ----------------~------------~ ~~--------_+TRLRH----------~~/------TRHDX DATA IN PORTO TRLAZ ADDRESS A15-A8 OR SFR- P2 PORT2 Data Memory Write Cycle TWHLH ALE ________________~----------~I.~--------TWLWH----------~~----- TaVWH PORT2 TWHOX DATA OUT PORTO ADDR!;SS A15-A8 OR SFR-P2 20-2d ORDER NUMBER: 210735·002 8744H NOTE: VOL is degraded when the 8744H rapidly discharges external capacitance. This AC noise is most pronounced during emission of address data. When using external 'memory, locate the latch or buffer as close to the 8744H as possible. Degraded I/O Lines VOL (peak) (max) Datum Emitting Port, Address P2, PO P1, P3 0.8V Write Data PO P1, P3, ALE 0.8V , EXTERNAL CLOCK DRIVIE CHARACTERISTICS (XTAL2) Symbol Parameter Min Max Units 83.3 285.7 ns TCLCL Oscillator Period: 8751 H TCHCX High Time 20 TClCX Low Time 20 TCLCH Rise Time 20 ns TCHCL Fall Time 20 ns ns ns l_rCHCL 0.8 0.8 l~rCLcx-1 1-------rcLCL-- ------ 20-27 ORDER NUMBER: 210735-002 8744H CLOCK WAVEFORMS INTERNAL CLOCK STATE 4 Pl I P2 STATE 5 STATES Pl Pl I P2 STATE 3 I P2 Pl I P2 STATE 4 STATE 5 Pl Pl I P2 I P2 XTAl2 ::2 I ALE EXTERNAL PROGRAM MEMORY FETCH I I THESE SIGNALS ARE NOT ACTIVATED DURING THE EXECUTION OF A MOVX INSTRUCTION ,----'...._=-----'1 PSEN I" L I PO =-____.... INDICATES ADDRESS TRANSITIONS P2(EXT) READ CYCLE 1 -J L.I- : -_ _ _ _ _ _ _- :_ _ RD OOH IS EMITTED . DURING THIS PERIOD DPl OR Ri OUT PO P2 WRITE CYCLE L~" I- ..-: FLOAT ~ PCl OUT (IF PROGRAM MEMORY IS EXTERNAL) SAMPLED r\l.- .•i INDICATES DPH OR P2 SFR TO PCH TRANSITIONS I PCl OUT(EVEN iF PROGRAM WR 1-_ _ _ _ _ _ _ _ _ _---' MEMORY IS INTERNAL) DPl OR RI OUT PO P2 DATA OUT INDICATES DPH OR P2 SFR TO PCH TRANSITIONS .B-:i tCl OUT ;1h;OGRAM I MEMORY IS EXTERNAL) PORT OPERATION I MOV PORT. SRC MOV DE ST. PO OLD DATA NEW DATA MOV DEST, PORT (Pl. P2, P3) (INCLUDES INTO. INT1. TO. T1] SERIAL PORT SHIFT CLOCK SAMPLED !--4l ~I..______- . - - - - - - - - - - - - - - - - - - J - - - - C P O P I N S c::::::J PO PINS SAMPLED ~'-----------------------r, Pl. P2. P3 PINS SAMPLED - L-- :~N~2S:~PLED q:r I . . - -_ _ _ i~gDE O)--------~XDSAMPLED , RXD SAMPLED ThiS diagram Indicates when signals are clocked Internally. The time It takes the signals to propagate to the pins, however, r<\nges from 25 to 125 ns. ThiS propagation delay is dependent on variables such as temperature and pin loading. Propagation also varies from output to output and component to component TYPically though, (TA =25°C, fully loaded) RD and WRpropagatlon delays are approximately 50 ns. The other signals are tYPically 85 ns. Propagation delays are Incorporated In the AC specifications 20-28 ORDER NUMBER: 21( inter 8744H 8744H EPROM CHARACTERISTICS Erasure Characteristics Erasure of the 8744H Program Memory begins, to occur when the chip is exposed to light with wavelengths shorter than approximately 4,000 Angstroms. Since sunlight and fluorescent lighting, have wavelengths in this range, constant exposure to these light sources over 'an extended period of time (about 1 week in sunlight, or 3 years in room-level fluOfescent lighting) could cause unintentional erasure. If an application subjects the 8744H to this type of exposure, it is suggested that an opaque label be placed over the window. The recommended erasure procedure is exposure to ultraviolet light (at 2537 Angstroms) to an integrated dose of at least 15 W-sec/cm2 rating for 20 to 30 minutes, at a distance of about 1 inch, should be sufficient. Program Memory Security The program memory security feature is developed around a "security bit" in the 8744H EPROM array. Once this "hidden bit" is programmed, electrical access to the contents of the entire program memory array becomes impossible. Activation of this feature is accomplished by programming the 8744H as described in "Programming the EPROM" with the exception that P2.6 is held at a TIL high rather than a TIL low. In addition, Port 1 and P2.0-P2.3 may be in any state. Figure 4 illustrates the security bit programming configuration. Deactivating the security feature, which again allows programmability of the EPROM, is accomplished by exposing the EPROM to ultraviolet light. This exposure, as described in "Erasure Characteristics," erases the entire EPROM array. Therefore, attempted retrieval of "protected code" results in its destruction. Erasure leaves the array in an all 1s state. Programming the EPROM To be programmed, the 8744H must be running with a 4 to 6 MHz oscillator. (The reason the oscillator needs to be running is that the internal bus is being used to transfer address and program data to appropriate registers.) The address of an EPROM location to be programmed is applied to Port 1 and pins P2.0-P2.3 of Port 2, while t~ta byte is applied to Port O. Pins P2.4-P2.6 and PSEN shQuld be held low, and P2.7 and RST high. (These are all TIb.Jevels 'except RST, which requires 2.5V for high.) EANPP is held normally high, and is pulsed to +21V. While EANPP is at 21V, the ALE/PROG pin,. which is normally being held high, is pulsed low for 50 msec. Then EANPP is returned to high. This is illustrated in Figure 3. Detailed timing specifications are pro~ vided in the EPROM Programming and Verification Characteristics section of this data sheet. Program Verification Program Memory may be read only when the "security feature" has not been activated. Refer to Figure 5 for Program Verification setup. To read the Program Memory, the following procedure can be used. The unit must be running with a 4 to 6 MHz oscillator. The address of a Program Memory location to be read is applied to Port 1 and pins P2.0P2.3 of Port 2. Pins P2.4-P2.6 and PSEN are held at TIL low, while the ALE/PROG, RST, and EANPP pins are held at TIL high. (These are all TTL levels except RST, which requires 2.5V fOT high.) Port 0 will be the data output lines. P2.7 can be used as a read strobe. While P2.7 is held high, the Port 0 pins float. When P2.7 is strobed low, the contents of the addressed location will appear at Port O. Extemal pullups (e.g., 10K) are required on Port 0 during program verification. 20-29 ORDER NUMBER: 210735-002 intJ 8744H +5V Vee ADDR.- OOOOHOFFFH f-- J 8744H PO I~ .PGM DAl'~ -- P2.4 -b P2,5 ALE - - ALE PROG P2.6 TTL HIGH P2.7 0 I ~ I . EA --"-- l:AIVPP XTAL2 ....L ..L 4-6 MHz > 1-- -::- RST -_._.- VI HI XTALI Vss .l Figure 3. Programming Configuration +5V. Ne PI NC P2.0P2.3 Vee 8744H -::!::- r= TTLHI'GH ....L 4-6 MHz L • -'- PO NC P2.4 P2.5 _ ALE/PROG 50 ms PULSE TO GND ALE - P2.6 P2.7 XTAL2 - ~'EA/VPP +21V PULSE EA - 0 I T > 1-. ~ XTALI Vss RST r----. -- VIHI PSEN C-', ~ Figure 4. Security Bit Programming Configuration 20-30 ORDER NUMBER: 210735-002 intJ 8744H +SV Vee P1 8744H P2.0P2.3 1-------'\ PGM DATA PO P2.4 P2.S ALE P2.6 P2.7 ENABLE XTAL2 EA (USE 10K PULL UPS) --r- TTL HIGH. ...J VIH1 RST XTALl = VSS - Figure 5. Program Verification Configuration EPROM PROGRAMMING, SECURITY BIT PROGRAMMING AND VERIFICATION CHARACTERISTICS (TA = 21°C to 27°C, VCC = 4.5V to 5.5V, VSS = OV) Parameter Symbol Vpp Programming Supply Voltage IPP Programming Current Min Max 20.5 21.5 V 30 mA 6 MHz 1ITCLCL Oscillator Frequency TAVGL Address Setup to PROG 48TCLCL 4 TGHAX Address Hold after PROG 48TCLCL TDVGL Data Setup to PROG 48TCLCL TGHDX Data Hold after PROG 48TCLCL TEHSH ENABLE High to Vpp 48TCLCL TSHGL Vpp Setup to PROG 10 TGHSL Vpp Hold after PROG 10 TGLGH PROGWidth 45 TAVQV Address to Data Valid TELQV ENABLE to Data Valid TEHQZ Data Float after ENABLE Units J,!sec J,!sec msec 55 48TCLCL 48TCLCL 0 20-31 48TCLCL ORDER NUMBER: 210735-002 ,&144H EPROM PROGRAMMING, SECURITY BIT PROGRAMMING AND , VERIFICATION WAVEFORMS -i P1.0·P1.7 P2.0.P2.3 PROGRAMMING VERIFICATION ? ADDRESS »r------ } ______A_D_D_R __ E_SS ______ ~~~--~------- I~~I ------~I ~------------------~(:~~D~A~TA~~OU~T~~=)r--------- PORTO i IroVGl- 1·"--1 1 TGHDX I i-1'AVGL-- UTGHAXI AlEPROG 1 TSHGL '1--- ~~: . TGlGHi 21V ..5V ' ~ \ EAVPP \------TTL HIGH --I I-TEHSH h I P2.7· TTL HIGH \ ) (ENAiitE! TTl HIGH 1_ TEHOZ TELOV 1 ! '----_...I FOR PROGRAMMING CONDITIONS SEE FIG.URE 3. FOR SECURITY BIT PROGRAMMING CONDITIONS SEE FIGURE 4. FOR VERIFICATION CONDITIONS SEE FIGURE 5. I • 2(}:32 ORDER NUMBER: 210735-002 RUPFM Article Reprints 21 inter ARTICLE REPRINT AR-307 NOVEMBER'1983 , @ ~anuary 1985 ORDER NUMBER 230876-001 , INTEL CORPORATION 21-1 AR-307 acknowledgements, error checking/recovery, and data transparency are not standardized nor supported by available data comm chips. SUMMARY The 8044 offers a lower CO$t and higher performance solution to networking microcontrollers than conventional solutions. The system cost 'is lowered by integrating an entire microcomputer with an intelligent HOLC/SOLC communication processor onto a single chip. l'he higher performance is realized by integrating two processors running concurrently on one chip; the . powerful 8051 microcontroller and the Serial Interface Unit. The 805.1 microcontroller is substantially off-loaded from the communication tasks when using the AUTO mode. In the AUTO mode the SIU handles many of the data link functions in hardware. The advantages of the AUTO mode· are: less software is required to implement a secondary station data link, the 8051 CPU is offloaded, and the turn-around time is reduced, thus increasing the network throughput. Currently the 8044 is the only microcontroller with a sophisticated communications processor on-chip. In the future there will be more microcontrollers available following this trend. SOLC, Synchronous Oata Link Control, meets the requirements for communications link design. The physical medium can be used on two or four wire twisted pair with inexpensive transceivers and connectors. It can also be interfaced through modems, which allows it to be used on broadband networks, leased or switched telephone lines. VLSI controllers have been available from a number of vendors for· years; higher performance and more user friendly SOLC controllers continue to appear. SOLC has also been designed to be very reliable. A 16 bit CRC checks the integrity of the received data, while frame numbering and acknowledgements are also built in. Using SDLC, up to 254 stations can be uniquely addressed, while HDLC addressing is unlimited. If an RS-422 only requires a single +5 volt power supply. INTRODUCTION Today microcontrollers are being designed into virtually every type of equipment. For the household, they are turning lip in refrigerators, thermostats, burglar alarms, sprinklers, and even water softeners. At work they are found in laboratory instruments, copiers, elevators, hospital equipment, and telephones. In addition, a lot of microcomputer equipment contains more than one microcontroller. Applications using multiple microcontrollers as well, as the office. and home, are now faced with the same requirements that laboratory instruments were faced with 12 year~ ago - they need to connect them together and have them .communicate. This need was satisfied in the laboratory with the IEEE-488 General Purpose Instrumentation Bus (GPIB). However, GPIB does not meet the current design objectives for-networking microcontrollers. What will the end user pay for the added value provided by communications? The cost of the communications hardware is not the only additional cost. There will be performance degradation in the main application because the mjcrocontroller now has additional tasks to perform. There are two extremes to the cost of adding communication capability. One could spend very little by adding an I/O port and have the CPU handle everything from the baud rate to the protocol. Of course the main application would be idle while the CPU was communicating. The other extreme would be to add another microcontroller to the system dedicated to communications. This communications processor could interface to the main CPU through a high speed parallel link or dual port RAM. This 'approach would maintain system performance, but it would be costly. Today there are many communications schemes and protocols available; some of the popular ones are GPIB, Async, HOLC/SOLC, and Ethernet. Common design objectives of today's networks are: low cost, reliable, efficient throughput, and expandable. In examining available solutions, GPIB does not meet these design objectives; first, the cable is too expensive (parallel communications), second, it can only be used over a limited distance (20 meters), and third, it can only handle a limited number of stations. For general networking, serial communications is preferable because of lower cable costs and higher reliability (fewer connections). While Ethernet provides ,very high performance, it is more of a system backbone rather than a microcontroller interconnect. Async, on the other hand, is inexpensive but it is not art efficient protocol for data block or file transfers. Even with some new modifications such as a 9 bit protocol for addressing, important functions such as Adding HDLC/SDLC Networking Capability 21-2 Figure 1 shows a microcomputer system with a conventional HDLC/ SDLe communications solution. The additional hardware needed to realize the conventional design is:.an HDLCf sDLe communication chip, additional ROM for the communication software, part of an interrupt controller, a bilUd rate generator, a phase locked loop, NRZI encoded/decoder, and a cable driver locked loop are used when the transmitter does not send the clock on a s.eparate line from the data (i.e. over telephone lines, or two wire cable). the NRZI encoder/'decoder is used in HDLC/ SDLe to combine the clock into the data line. A phase locked loop is used to recover the clock from the data line. The majority of the available communication chips provide a limited number oJ data link control functions. Most of them will handle Zero Bit Insertion/Deletion (ZBIID), Flags, Aborts, Automatic AR-307 MICROCONTROLLER . SERIAL COMMUNICATIONS SDLC/HDLC BAUD RATE GENERATOR Figure 1. Conventionalmicrocontroller networking solution address recognition, and CRC generation and checking. It is the CPU's responsibility fo manage link access, command recognition and response, acknowledgements and error recovery. Handling these tasks can take a lot of CPU time. In addition, servicing the transmission and reception of data bytes can also be very time consuming depending on the method used. require 1 LSI chip and about 10 TTL chips. The cost of CPU throughput degradation can be even greater. The percentage of time the CPU has to spend servicing the communication tasks can be anywhere from 10-100070, depending on the serial bit rate. These high costs will prevent consumer acceptance of networking microcomputer equipment. A Highly Integrated, High Performance Solution The 8044 reduces the cost of networking microcontrollers without compromising performance. It contains all of the hardware components necessary to implement a microcomputer system with communications capability, plus it reduces the CPU and software overhead of implementing HOLC/SOLC. Figure 2 shows a functional block diagram of the 8044. U sing a D MA controller can increase the overall system performance, since it can transfer a block of data in fewer clock cycles than a CPU. In addition, the CPU and the DMA cOhtroller can multiplex their access to the bus so that both can be running at virtually the same time. However, both the DMA controller and the CPU are sharing the same bus, therefore, neither one get to utlize 100%' of the bus bandwidth. Microcontrollers available today do not support DMA, therefore, they would have to use interrupts, since polling is unacceptable in a multitasking environment. The 8044 integrates the powerful 8051 microcontroller with an intelligent Serial Interface Unit to provide a single chip solution which efficiently implements a distributed processing or distributed control systefiJ.. The microcontroller is a self sufficient unit containing ROM, RAM, ALU and its own peripherals. The 8044's architecture and instruction set are identical to the 8051's. The Serial Interface Unit (SIU) uses bit synchronous HOLC/SOLC protocol and can communicate at bit rates up to 2.4 Mbps, externally clocked, or up to 375 Kbps using the on-chip digital phase locked loop. The SIU contains its own processor, which operates concurrently with the microcontroller. In an interrupt driven, the CPU has overhead in addition to servicing the interrupt. During each inter~ rupt request the CPU has to save all of the important registers, transfer a byte, update pointers and counters, then restore all of its registers. At low bit rates this overhead may be insignificant. However, the percentage of overhead increases linearly with the bit rate. At high bit rates this overhead would consume all of the CPU's time. There is another nuisance factor associated with interrupt driven systems, interrupt latency.> Too much interrupt latency will cause data to be lost from underrun and overt:un errors. The CPU and the SIU, in the 8044, interface through 192 bytes of'dual port RAM. There is no hardware arbitration in the dual port RAM. Both processor's memory access cycles are interlaced; each processor has access every 'other clock cycle. Therefore, there The additional hardware necessary to implement the coinmunications solution, as shown in Figure I, wQuld 21-3 inter AA-307 SIU 8051 MICAOCONTROLLER HDLC/SDLC COMMUNICATIONS PROCESSOR L ______________ _ Figure 2. 8044 single chip microcontroller networking solution is no throughput loss in either processor as a result of the dual port RAM, and execution times are deterministic. Since this has always been the method for memory access on the 8051 microcontroller, 8051 programs have the same execution time in the 8044. transmitted or received. Also, the nuisance of overrun and underrun errors is totally eliminated since the dedicated DMA controller is guaranteed to meet the maximum data rates. Having a dedicated DMA controller means that the ,serial channel interrupt can be the lowest priority, thus allowing the CPU to have higher priority real time interrupts. By integrating all of the communication hardware onto the 8051 microcontroller, the hardware cost of the system is reduced. Now several chips have been integrated into a single chip. This' means that the system power is reduced, P.C. board space is reduced, inventory and assembly is reduced, and reliability is improved. The improvement in reliability is a resuit of fewer chips and interconnections o~the P.C. board. Figure 3 shows a comparison between the conventional and the 8044 solution on the percentage of time the CPU must spend sending data. This diagram was derived by assuming a 64 byte information frame is .. being transmitted repeatedly. The conventional solution is interrupt driven, and each interrupt service routine is assumed to take about IS instructions with a I Ilsec instruction cycle time. At 533 Kbps, an interrupt would occur every 15 usee. Thus, the CPU becomes completely dedicated to servicing the serial communications. The conventional design could not support bit rates higher than this because of underruns and overruns. For the 8044 to repeatedly send 64 byte frames, it simply has to reinitialize the DMA controller. As a result, the 8044 can support bit rates up to 2.4 Mbps. As mentioned before, there can be two extremes in a design which adds communications to the microcomputer system. The 8044 solution uses the high end extreme. The SIU on the 8044 contains its own processor which communicates with the 8051 processor through dual port RAM and control/status registers. While the SIU is not a totally independent communications processor, it substantially offloads the 8051 processor from the communication tasks. Some of the other communications tasks the CPU has to perform, such as link access, commahd recognition/response, and acknowledgements, are performed automatically by the SIU in a mode called "AUTO." The combination of the dedicated DMA controller and the AUTO mode, substantially offload Tbe DMA on the 8044 is dedicated to the SIU. it cannot access external RAM. By having a DMA controller in the SIU, the 8051 CPU is offloaded. As a result of the dual port RAM design. the DMA does not share the running at full speed while the frames are being , 21-4 inter AR-307 • CONCURRENT PROCESSING CONVENTIONAL SOLUTION 100 90 80 70 PERCENTAGE OF CPU TIME SPENT SERVICING SOLC 60 50 40 30 20 8044 SOLUTION 1~~__~======================~ 250 K 500 K 750 K 1M BIT RATE (BITS/SECOf:.lO) Figure 3. SIU offloads CPU the CPU, thus allowing it ·to devote more of its power . to other tasks. can directly set a bit Which communicates to the primary what its transmit and receive bilfferJng status is. 8044'8 Auto Mode In the AUTO mode·the SIU implements in hardware a subset of the SOLC protocol such that it responds to many SOLC commands without CPU intervention. All AUTO mode responses to the, primary station conform to IBM's SOLC definition. hi the AUTO mode the 8044 can only be a secondary station operating ·in SOLC specified "Normal Response Mode." Normal Response Mode means that the secondary station' can not transmit unless it is polled by the primary station. The SIU in the AUTO mode can 'recognize and respond to the following SOLC commands without CPU intervention: I ,(Information), RR (Receive Ready), RNR (Receive Not Ready), REJ (Reject), and for loop mode UP (Unnumbered Poll). The SIU can generate the' following responses without ;CPU intervention: I, RR, and RNR: In addition, the SIU manages Ns and Nr in the control field. If it 'detects an error in either Ns or.Nr,it interrupts the CPU for error recovery. When the CPU wants to send a frame, it loads the transmit buffer with the (iiata,.. loads the starting . address and tile count of the data into the SIU, then sets TBF to transmit the frame. The SIU waits for the primary station to poll it with a RR command. After the SIU is polled; it automatically sends the information frame to the primary with the proper control field. The SIU then waits for a positive acknowledgement from the primary before incremeJ)ting the Ns field and interrupting the CPU for more data. If a negative acknowledgement is received, the SIU automatically retransmits the frame. When the 8044 is ready to receive information, the CPU loads the receive buffer starting address and the buffer lengthinto-the SIU, then enables the receiver. When a valid information frame with the correct address and CRe isreceive4, ,the SIU will increment the Nr field, disable the receiver and interrupt the CPU indicating that a good I fFame has been received. The CPU then sets RBP, reenables the receiver and processes the received data. By enabling the receiver with RBP set, the SIU will automatically respond to polls with a. Receive Not Ready, thus keeping the link moving rather than timing out the primary from a disabled receiver, or interrupting. the CPU with another poll before it has processed the data. After' the data has been processed, the CPU clears RBP, returning to . the Receive Ready respol.l$es: How does the SIU know what responses to send to :the primary? It uses two status bits which are set by , the CPU. The two bits are TBF (Transmit Buffer Full) .and RBP (Receive Buffer Protect). TBF indicates that the CPU wants to send data, and Rap indicates that the receive data buffer is full. Table I shows the responses the SIU will send based on these two status bits. This is an innovative approach to communication design, The CPU in the 8044 with one instruction 21-5 AR-307 Table 1. SIU's automatic responses il') auto mode RESPONSE STATUS BITS , " TBF RBP '0 o (RR) Receive ready 0, 1 (RNR) Receive hot ready 1 o ,(I) Infol"mation 1 1 (I) Information In the Information Transfer State there are three common events which occur as illustrated in Figure 4, they are: 1) the primary polls the secondary and the secondary is ready to receive but has nothing to send, 2) the primary sends the secondary information, and 3) the secondary sends, information to the primary. Figures 5, 6, and 7 compare the functions the conventional design and the 8044 must execute in order , to !"espond to the primary for the cases in Figure 4. SDLC communications can be broken up into four states: Logi<;al DiscclDlI,ect State, Initialization State, Frame Reject State, and Information Transfer State. Data can only be transferred in the Information ,Transfer State. More than90OJo of the time,a station will be in the Information Transfer State, which is where the SIU can run autonomously. In the other states, where error recovery, online! offline, and initialization takes place, the CPU manages the protocoL", PRIMARY' I ISECONDARY I SECONDARY I Case .1. Primary, polls secondary secondary has nothing to send Response Command RR RR Case 2. Primary polls secondary secondary sends information frame 'CqrnmandResponse, .. RR,NR fnformation frame RR, NR+1 Case 3.' Primary' sends secondary information frame Command " " , Response \ > RR RR, NR,' 'In'ormation frame " ~ '. , I ' , ,Note: RR =, Receive ready 'RR t, NR+1, " Figure ,4. SOlC commands and responses in the information transfer state 21 r6 AR·307 8044 AUTO MODE' CONVENTIONAL DESIGN PRIMARY -RRPoll Receive Interrupts Decode received control field Check NR field Load response into transmit control field Send frame Transmit interrupts Figure 5. Primary polls secondary, secondary has nothing to send CASE 2 8044 AUTO MODE Load transmit buffer ,Set TBF bit PRIMARY -_It--- RR - _ ..poll ""'... ,...._- RR - _... _ poll I Transmit Interrupt CONVENTIONAL DESIGN Load transmit buffer and transmit control byte Receive Interrupts Decode receive control byte Check NR field Send frame Transmit Interrupts Receive interrupts Decode receive control byte . Check NR field IncrementNS Flgure.6. Primary polls secondary, secondary sends I.nformatlon frame 21-7 . AR-3Q7 .CASE 8044 AUTO MODE CONVENTIONAL DESIGN PRIMARY - R R ____ poll Receive Interrupts Decode received control field Check NR field Load response into transmit control field Send frame Transmit interrupts Receive interrupts Decode receive control field Check NS NR fields Increment NR Load response into transmit control field Send frame Transmit interrupts i Receive interrupt 3 -4--1 frame ___ Figure 7. Primary sends information frame to secondary Using case I as an example, the conventional design first gets receive interrupts bringing the data from the SOLC comm chip into memory. The CPU must then decode the command in the control field and determine the response. In addition, it must check the Nr field for any pending acknowledgements. The CPU loads the transmit buffer with the appropriate address and control field, then transmits the frame. When the 8044 receives this frame in AUTO mode, the CPU never gets an interrupt because the SIU handles the entire frame reception and response automatically. most critical parameter for calculating throughput on any high speed network is the station turnaround time; the time it takes a station to respond a~ter receiving, a frame. Since the 8044 handles all of the commands and responses of the Information Transfer State in ,hardware, the turnaround time is much faster than handling it in software, hence a higher throughput. 8044's Flexible Mode In the "NON-AUTO" mode or Flexible mode, the SIU does not recognize or reswnd to any commands, nor does it manage acknowledgements, which means the CPU must handle link access, command recognition/response, acknowledgements and error recovery by itself. The Flexible mode allows the 8044 to have extended address fields and extended control fields, thus providing HOLC support. In the Flexible mode the 8044 can operate as a primary station, since it can transmit without being polled. In SOLC networks, when' there is no information 'transfers, case I is the activity on the line. Typically this is 80070 of the network traffic. The CPU in the conventional design would constantly be getting interrupts and servicing the communications tasks; even when it has nothing to send or q:ceive. On the other hand, the 8044 CPU would only get involved in communicating when it has data to send pr receive. Front End Communications Processor 'The ·8044 can also be used· as an intelligent HOLC/SOLC front end for a microporcessor, capable of extensively off-loading link control functions for Having tbe SIU implement a subsef of the SOLC protocol in hardware· not only offloads the CPU, but it also improves the throughput on the network. The 21-8 AR·307 computer. Sophisticated secondary stations could also take advantage of this design. the microporcessor. In some applications the 8044 can even be used for communications preprocessing, in addition to data link control. For this type of design the S044 would communicate to the Host CPU through a FIFO, or dual port RAM. A block diagram of this design is given in Figure S. A tightly coupled interface between the 8044 and the Host CPU would be established. the Host CPU would give the S044 high level commands and data which the 8044 would convert to HDLC/SDLC. This,particular type of design would be most appropriate for a primary Station which is normally a micro, mini, or mainframe Since the 8044 has ROM on chip, all the communications software is non-volatile. The 8044 primary station could down-line-load software to 8044 secondary stations. Once down-line-loading is implemented, software updates to the primary and secondary stations could be done very inexpensively. The only things which would remain fixed in IWM are the HDLC/SDLC communications' software and the software interface to'the HOST. SYSTEM HOST M~MORY SYSTEM DATA BUS INTERFACE HARDWARE 8044 DATA BUS 8044 EXPANSION MEMORY HDLC/SDLC DATA LINK Figure 8. 8044 front ehd processor 21-9 Design Considerations 22 Designing Microcontroller Systems for Electrically Noisy Environments Contents SYMPTOMS OF NOISE PROBLEMS. . . . .. 22-2 TYPES AND SOURCES OF ELECTRICAL NOISE Supply Line Transients . . . . . . . . . . . .. 22-2 EMP and RFI. . . . . .. . . . . . . . . . . .. 22-2 ESD . . . . . . . . . . . . . . . . . . . . . .' .. 22-3 Ground Noise. . . . . . . . . . . . . . . . . . . ,22-3 "RADIATED" AND "CONDUCTED" NOISE.. 22-3 SIMULATING THE ENVIRONMENT. . . . . .. 22-4 TYPES OF FAILURES AND FAILURE MECHANISMS . . . . . . . . . . . . . . . . .. 22-4 THE GAME PLAN . . . . . . . . . . . . . . . .. 22-5 CURRENT LOOPS. . . . . . . . . . . . . . . " 22-5 SHIELDING . . . . . . . . . . . . . . . . . Shielding Against Capacitive Coupling Shielding Against Inductive Coupling . RF Shielding . . . . . . . . . . . . . . . .'. .. .. .. 22-6 22-6 22-6 22-9 GROUNDS. . . . . . . . . . . .'. . . . . . . . . . Safety Ground . . . . . . . . . . . . . . . . . . . Signal Ground . . . . . . . . . . . . . . . . . . . Practical Grounding . . . . . . . . . . . . . . . . Braided Cable. . . . . . . . . . . . . . . . . . . 22-10 22-10 22-11 . . . . . . . . 22~12 22-13 POWER SUPPLY DISTRIBUTION AND DECOUPLING. . . . . . . . . . . . . . . . . . . . 22-14 Selecting the Value of the Decoupling Cap .. 22-15 The Case for On-Board Voltage Regulation . 22-16 RECOVERING GRACEFULLY FROM A SOFTWARE UPSET . . . . . . . . . . . . . . . . . . . . . . . . 22-16 SPECIAL PROBLEM AREAS. . . . . . . . . . . 22-18 ESD . . . . . . . . . . . . . . . . '. . . . . . . . . 22-18 Tne Automotive Environment . . . . . . . . . . 22-19 PARTING THOUGHTS. . . . . . . . . . . . . . . 22-21 REFERENCES. . . . . . . . . . . . . . . . . . . . 22-22 22-1 Types and Sources:of Electrical Noise Digital circuits are often thought of as being immune to noise problems, but really they're not. Noises in digita:l systems produce software .. upsets: program jumps to apparently random locations in memory. Noise-induced glitches in the signal lines can cause such problems, but the supply voltage is more sensitive to glitches than the signal lines. The name given to electrical noises other thail those that are inherent in the circuit components (such as thermal noise) is EMI: electromagnetic interference. Motors, power switches, fluorescent lights, electrostatic discparges, etc., are sources of EM!. There is a veritable alphabet soup of EMI types, and these are briefly described below. Severe noise conditions, those involving electrostatic discharges, or as found in automotive environments, can do permanent damage to the hardware. Electrostatic discharges can blow a crater in the silicon. In the automotive environment, in ordinary operation, the "12V" power line can show + and -400V transients. SUPPLY LINE TRANSIENTS Anything that switches heavy current loads onto or off of AC or DC power lines will cause large transients in these power lines. Switching an electric typewriter on or off, for example, can put a IOOOV spike onto the AC power lines. This Application Note describes some electrical noises. and noise environments. Design considerations, along the lines of PCB layout, power supply distribution and decoupling, and shielding and grounding techniques,. that may help minimize noise susceptibility are reviewed. Special attention is given to the automotive and ESD environments. The basic mechanism behind supply line transients is shown in Figure I. The battery represents any power source, AC or DC. The coils represent the line inductance between the power source and the switchable loads R I and R2. If both loads are drawing current, the line current flowing through the line inductance establishes a magnetic field of some value. Then, when one of the loads is switched off, the field due to that component of the line current collapses, generating transient voltages, v =L( di/ dt), which try to maintain the current at its original level. That's called an "inductive kick." Because of contact bounce, transients are generated whether the switch is being opened or closed, but they're worse when the switch is being opened. Symptoms of Noise Problems Noise problems are not usually encountered during the development phase of a microcontroller system. This is because benches rarely simulate the system's intended environment. Noise problems tend not to show up until the system is installed and operating in its intended environment. Then, after a few minutes or hours of normal operation the system finds itself someplace out in left field. Inputs are ignored and outputs are gibberish. The system may respond to a reset, or it may have to. be turned off physically and then back on again, at which point it commences operating as though nothing had happened. There may be an obvious cause, such as an electrostatic discharge from somebody's fingc;r to a key" board or the upset occurs every time a copier machine is turned on or off. Or there may be no obvious cause, and nothing the operator can do will make the upset repeat itself. But a few minutes, or a few hours, or a few days later it happens again. An inductive kick of one. type or another is involved in most line transients, including those found in the automotive environment. Other mechanisms for line transients exist, involving noi~e pickup on the lines. The noise voltages are then conducted to a susceptible circuit right along with the power. EMPANDRFI Anything that produces arcs ?r sparks will radiate electromagnetic pulses (EMP) or radio-frequency interference (RFI). L One symptom of electrical noise problems is randomness, both in the occurrence of the problem and in what the . system does in its failure. All operational upsets that occur at seemingly random intervals are not necessarily caused by noise in the system. Marginal VCC, inadequate decoupling, rarely encountered software conditions, or timing coincidences can produce upsets that seem to occur randomly. On the other hand, some noise sources can produce upsets downright periodically. Nevertheless, the more difficult it is to characterize an upset as to cause and effect, the more likely it is to be a noise problem. v Rl R2 Figure 1. Supply Line Transients AFN-02131A 22-2 Spark discharges have probably caused more software upsets in digill\l equipment than any other single noise source. ,The upsetting mechanism is the EMP produc\:d by the spark. The EMP induces transients in the circuit, which are what actually cause the upset. Arcs and sparks occur in automotive ignition systems, electric motors, switches,' static discharges, etc. Electric motors that have commutator bars produce an arc as the brushes pass from one bar to the next. DC motors and the "universal H(AC! DC) motors that are used to power hand tools are the kinds that have commutator bars. In switches, ttie same inductive kick that puts transients on the supply lines will cause an opening or closing 'switch to throw a' spark. ' "Radiated" and "Conducted" Noise Radiated noise is neise that arrives at the victim circuit in the form of electromagnetic radiation, such as EMP and RFI. It causes trouble by inducing' extraneous voltages in the circuit. Conducted noise is neise that arrives at the victim circuit already in the form,of an extraneous veltage, typically via the AC or DC power lines. One defends against radiated noise by care in designing layouts and the use of effective shielding techniques. One defends against conducted noise with filters and suppres- 80 ESD Electrostatic discharge (ESD) is the spark tliat occurs when a person picks up a static charge .from walking across a carpet, and then discharges it into a keyboard, ~r whatever else can be touched. Waiking across a carpet in a dry climate, a person can accumulate a static voltage of 35kV. The current pulse from an electrostatic discharge has an extremely fast riseti~e - typically, 4A/ nsec. figure 2 shows ESD 'waveforms that have been observed' by some investigators of ESD phenomena. It is enlightening to calculate the L( dij dt) voltage required to drive an ,ESD current pulse through a couple of inches' of straight wire. Two inches of straight wire has about 50nH of inductance. That's not very, mueh, but using 50nH for Land 4A/ nsec for di/ dt gives an L( di/ dt) drop of about 200V. Recent observations by W.M: King sug· gest even faster risetimes (Figure 2B) and the occurrence of mUltiple discharges during a single discharge event. - - EXPERIMENTAL -',- -- CALCULATED, 60 ~ ~, z ;: 40 i5 a: ~ o 20 o 10 20 30 40 50 60 70 80 TIME IN NANOSECONDS 90 100 110 120 tAl Obviously, ESD-sensitiyity needs t.o be considered in the design of equipment that is going to be subjected to it, ' such as office equipment. GROUND NOISE Currents in ground lines are another' source of noise. These can be 60Hz currents from the power lines, or RF hash, or crosstalk from other signals that are sharing this particular wire as a signal return line. Noise in the ground lines is often referred to as a "ground 100pH preblem. The basic concept .of the ground loep is shewn in Figure 3. The preblem is'that true earth-ground is not really at the , same petential in all locatiens. If the twe ends of a wire are earth-grounded at different locations, the voltage difference between the two "ground Hpoints can drive significant currents (several amperes) through the wire. Consider the wire to be part of a loop which contains, in i1ddition to the wire, a voltage source that represents the difference in petential between the two ground 'points, and you have the classical "ground loop. ~', By extension, the term is used to refer to any unWanted (and often unexpected) currents in a ground line. Vert: 5 Amps/Diy Time: 5 "Sec/OJ. Displayed: Ip: 40 Amps Tr.l "Sec SooV (8) Figure 2. Waveforms of Electrostatic Discharge Currents From a Hand-Held MetalliC Object AFN-02131A sors, although layouts ,ana' g~ounding' techniques"are important here, too. the p'rogram to some random location in memory. The p~rson Who has to, iron Qui' such problems is tempted to say 'the program counter went crazy. There is usually no da'mage to 'the hardware, arid normal operation can resume as soon as the EM I has passed or the source is de-activated. Resuming normal operation usually requires manual or automatic reset, ,and possibly re-entering of lo~t information. ' Simulating the Environment Addressing noise problems after the design ofa system has been completed is an expensive proposition., The ill will generated by failures in the field is not cheap either. It's cheaper in the long run to invest a little time and money in learning about noise and noise, simulation equipment, so that controlled tests can be made on the bench as the design is developing. Electrostatic discharge~ fro~ operating personnel can cause not only software upsets, but also permanent ("hard') damage, to the system. For this to happen the system d,oesn't even have to be in operation. Sometimes the permanent damage is latent, meaning the initial damage may be marginal and require further aggravation through operating stress and time before permanent failure takes place. Sometimes too the damage is hidden. Simulating the intended noise environment is a two-step process: First you have to recognize what the noise environment is, that is, you have to know what kinds of electrical noises are present, and which of them are going to cause trouble. Don't ignore this first step, because it's important. If you invest in an induction coil spark: gener-' ator just because your application is automotive, you1l be straining at the gnat and swallowing the camel. Spark plug noise IS the least of your worries in that environrrient. One ESD-related failure mechanism that has been identified hItS to do with the bias voltage on the substrate of the chip. On some CPU chips the substrate' is held at -2.5V by a phase-shift oscillator working into a capaCi~ tori diode clamping circuit. This is called a "charge pump" in chip-design circles. If the substrate wanders too far in either direction, program read errory are noted. Some designs have been known to allow electrostatic discharge currents to flow directly into port' pins of an 8048. The resulting damage to· the oxide causes an increase in leakage current, which' loads down the charge pump, red ucing the substrate voltage to a margirtal or unacceptable level. The system is then unreliable or completely inoperative until the CPU chip' is replaced. But if the CPU chip was subjected to a discharge spark once, it will eventually happen again, The second step is to generate the electrical noise in a' controlled manner. This is usually more difficult than first imagined; one first imagines the simulation in terms of a waveform generator and a few spare parts, and then finds that a wideband power amplifier with a 200V dynamic range is alsp required. A good source,of information on who supplies what, noise-simulating equipment is the 1981 "ITEM" Directory and Design Guide (reference 6). Types of Failures and Failure Mechanisms Chips that have a grounded substrate, such as the 8748, can sometimes sustain some oxide damage without actually becoming inoperative. In this case the damage is present, and the increased leakage current is noted; however, since the substrate voltage retains its deSign value, the damage is largely hidden. ' A major problem that EMI can cause in digital systems is intermittent operational malfunction. These software upsets occur when the system isjn operation at the time an EMI 'ilb~ is 'activated, and ate ,\lSually characterized by alQS~p( ,ipformation' or ,ajl1mp i~the execution of ":" ',' " 0 EARTH-GROUND ATB -----\.::"'.L "GROUND LOOP" ,Figure 3. 0, 'POTENTIAL DIFFERENCE' BETWEEN A AND B What a Ground Loop Is 'J:\.FN-02131A 22-4 It must therefore be recognized that connecting port pins unprotected to a keyboard or to anything else that is subject to electrostatic discharges, makes an extremely dangerous configuration. It doesn't make any difference what epu chip is being used, or who makes it. If it connects unprotected to a keyboard, it will eventually be destroyed. Designing for an ESD-environment will be discussed further on. We might note here that MOS chips are not the only components that are susceptible to permanent ESD damage. Bipolar and linear ohips can also be damaged in this way. PN junctions are subject to a hard failure mechanism called thermal secondary breakdown, in which a current spike, such as from an electrostatic discharge, Causes microscopically localized spots in the junction to approach melt temperatures. Low power TTL chips are subject to this type of damage, as are op-amps. Op-amps, in addition, often carry on-chip MOS capacitors which are directly across an external pin combination, and these are susceptible to dielectric brea\ = LI. Holding the feed and return wires close together so as to promote field cancellation can be described either as minimizing the loop area or as minimizing L. It's the same thing. trostatically shielded transformer. Here, a conducting foil is laid between the primary and secondary coils so as to intercept the capacitive coupling between them. If a· system is being upset by AC line transients, this type of transformer may provide the fix. To be effective in this application, the shield must be connected to the 'greenwire ground. . Shielding SHIELDING AGAINST INDUCTIVE COUPLING With inductive coupling, the physical mechanism involved is a magnetic flux density B from some external interference source that. links with a current loop in the victim circuit, and generates a voltage in the . loop in accordance with Lenz's law: v = -NA(dB/dt}, where in this case N = I and A is the area of the current loop in the victim circuit. There are three basic kinds of shields: shielding against capacitive coupling, shielding against inductive coupling, and RF shielding. Capacitive coupling is electric field coupling, so shielding against it amounts to shielding against electric fields: As will be seen, this is relatively easy. Inductive coupling is magnetic field coupling, so shielding against it is shielding against magnetic fields. This is a little more difficult. Strangely enough, this type of shielding does not in general involve the use of magnetic materials. RF shielding, the classical "metallic barrier against all sorts of electromagnetic fields, is what most people picture when they think about shielding. Its effectiveness depends partly on the selection of the shielding materi~l, but mostly, as it turns out, on the treatment of its seams and the geometry of its openings. There are two aspects to defending a circuit against inductive pickup. One aspect is to try to mjnimize the offensive fields at their source. This is done by minimizing the area of the current loop at the source so as to promote field cancellation, as described in the section on current loops. The other' aspe~t is to minimize the inductive pickUp in. the victim circuit by minimizing the area of that current loop, since, from Lenz's law, the induced voltage is proportional to this area. So the two aspects really involve the same corrective action: minimize the areas of the current loops. In other words, niinimizing the offensiveness of a circuit inherently minimizes its susceptibility. fl SHIELDING AGAINST CAPACITIVE COUPLING Capacitive coupling involves the passage of interfering signals through mutual or stray capacitances that aren't shown on the circuit diagram, but which the experienced engineer knows are there. Capacitive coupling to one's body is what would cause an unstable oscillator to change its frequency when the person reaches his hand over the circuit, for example. More importantly, in a digital system it causes crosstalk in multi-wire cables. C. NOISE SOURCE The way to block ~pacitive coupling is to enclose the circuit or conductor you want to protect in a metal shield. That's called an electrostatic or Faraday shield. If coverage is 100%, the shield does not have to be grounded, but it usually is, to ensure that circuit-to-shield capacitances go to signal reference ground rather than act as feedback and crosstalk elements. Besides, from a mechanical point of view, grounding it is almost inevitable. L --~-II--- ~ VICTIM CKT J (A) Capacitive Coupling /FARADAY SHIELD NOISE SOURCE A grounded Faraday shield can be used to break capacitive coupling between a noisy circuit and a victim circuit, as shown in Figure 4. Figure 4A shows two circuits capacitively coupled through the stray capacitance between them. In Figure 4B the stray capacitance is intercepted by a grounded Faraday shield, so that interference currents are shunted to ground. For example, a grounded plane can be inserted between PCBs (printed circuit boards) to eliminate most of .the capacitive coupling between them. -11-- --11- I VICTIM CKT J ~ (B) Electrostatic Shielding Another application of the Faraday shield is in the e1ec- Figure 4. Use of Faraday Shield 22-6 V. R V. I R r------:.=.:.--------I -I - - - ." ""CURRENT LOOP Figure 5. External to the Shield, cf>=O (A) ,Shielding against inductive coupling means nothing more nor less than c~ntrolling the dimensions of the current loops in the circuit We must look at four examples of this type of ushielding": the coaxial cable, the twisted pair, the ground plane, and the gridded-ground PCB layout The Coaxial Cable - Figure 5 shows a coaxial cable carrying a current I from a signal source to a receiving load, The shield carries the same current as the center conductor. Outside the shield, the magnetic field produced by +1 flowing in the center conductor is cancelled by the field produced by -I flowing in the shield. To the extent that the cable is ideal in producing zero external magneti<: field, it is immune to inductive pickup from external sources. The cable adds effectively zero area to the loop. This is true only if the shield carries the same current as the center conductor. In the real world, both the signal source and the receiving load are likely to have one end connected to a common signal ground. In that case, should the cable be grounded at one end, both ends, or neither end? The answer is that it should be grounded at both ends. Figure 6A shows the situation when the cable shield is grou\lded at only one end. In that .case the current loop runs down the center conductor of the cable, then back through the common . ground connection. The loop area is not well defined. The shield not only does not carry the same current as the center conductor, but it doesn't carry any current at all. There is no field cancellation at all. The shield has no effect whatsoever on either the generation of EM! or susceptibility to EM!. (It is, however, still effective as an electrostatic shield, or at least it would be if the shield coverage were lOO%.) Shield Has No Effect Va '- ,,;"""' .... '-- ---) I \ ,---- (8) ':" ,,/' // /// "LOW-FREOUENCY CURRENT PATH Two Return Paths Figure 6. Use of Coaxial Cable inductance is the path of minimum loop area. Hence, for higher frequencies the shield carries virtually the same current as the center conductor, and is therefore effective against both generation and reception of EM!. Note that we have now introduced the famous "ground loop" problem, as shown in Figure 7A. Fortunately, a digital system has some built-in immunity to moderate ground loop noise. In a noisy environment, however, one can break the ground loop, and still maintain the shielding effectiveness of the coaxial cable, by inserting an optical coupler, as .shown in Figure 7B. What the optical coupler does, basically, is allow us to re-define the signal source as being ungrounded,so that that end of the cable need not be grounded, and still lets the shield carry the same current as the center conductor. Obviously, if the signal source weren't grounded in tht first place, the optical coupler wouldn't be needed. Figure 68 shows the situation when the cable is grpunded at both ends. Does the shield carryall of the return current, or only a portion of it on account of the shunting effect of the common ground connection? The answer to that question depends on the frequency content of the signal. In general, the current loop will follow the path of least impedance. At low frequencies, OHz to several kHz, where the inductive reactance is insignificant, the current will follow the path of least resistance. Above a few kHz, where inductive reactance predominates, the current will follow the path of least inductance. The path of least The Twisted Pair - A cbeaper way to minimize loop area is to run the feed and return wires right next to each other. This isn~t as effective as a coaxial cable in minimizing Iqop area. An ideal coaxial cable adds zero area to the loop, whereas merely keeping the feed and return wires next to each other is bound to add a finite area. However, two things work to make this cheaper method almost as good as a coaxial cable. First, real coaxial cables are not ideal. If the shield current isn't'evenly distributed around the center conductor at every crossAFN-02131A 22-7 POTENTIAL DIFFERENCE BETWEEN THE TWO GROUND POINTS (A) The Ground Loop ( +5V OPTICAL COUPLER r-----~~ ~(--'\ , ~~~:_:_:_:_::_:_:_:_:_:_::_:_:_:_:_::_~_-_-___ J Vs : I R __ ..... 1 I I I (B) Breaking the Ground Loop Figure 7. Use of Optical Coupler ground path impedance is primarily inductive). section of the cable (it isn't), then field cancellation external to the shield is incomplete. If field cancellation is incomplete, then the effective area added to the loop by the cable isn't zero. Second, in the cheaper method the feed and return wires can be twisted together. This not only maintains their proximity, but the noise picked up in one twist tends to cancel out the noise picked up in the next twist down the line. Thus the "twisted pairn turns out to be about as good a shield against inductive coupling as coaxial cable is. Thus, if the feed path for a given signal zigZags its way across the PCB, the return path for this signal is free to zigzag right along beneath it on the ground plane, in such a configuration as to minimize the energy stored in the magnetic field, produced by this current loop. Minimal magnetic flux means minimal effective loop area and minimal susceptibility to inductive'coupling. The Gridded-Ground PCB Layout - The next best thing to a ground plane is to layout the ground traces on a PCB in the form of a grid structure, as shown in Figure 8. Laying horizontal traces on one side' of the board and vertical traces on the other side allows the passage Of signal and power traces. Wherever vertical and horizontal ground traces cross, they must ,be connected by. a feed-through. The twisted pair does not, however,:provide electrostatic shielding (Le., shielding against capacitive coupling). Another operational difference between them is that the coaxial cable works better at higher frequencies. This is primarily because the twisted pair adds more capacitive loading to the signal source than the coaxial cable does. The twisted pair is normally considered useful up to only about IMHz, as opposed to near a GHz for the coaxial cable. Have we not created here a network of "ground loopsn? Yes, in the literal sense of the word, but loops in the ground layout on a PCB are not to be feared. Such inoffensive little lOOps' have never caused as much noise pickup as their avoidance has. Trying to avoid innocent little loops in the ground layout, PCB designers have forced current loops i~to geometries that. could swallow a whale. That is exactly the wrong thi,:,g to do. The Ground Plane - The best way to minimize loop areas when many current loops are involved is to use a ground plane. A ground plane is conducting surface that is to serve as a return conductor for all the current loops in the circuit. Normally, it would be one or more layers of a multilayer PCB. All ground points in the circuit go not to a grQunded trace on the PCB, but directly to the ground .plane. This leaves each current loop in the circuit freC' to, complete itself in whatever configuration yields minimum loop area (for frequencies wherein the a The gridded ground structure works almost as w~1l as the ground plane, as far as minimizing loop area is concerned. For a 'given current loop, the 'primary return path may have ,to zig once in a while where its' feed path zags, AFN-02131A 22·8 interference from a whip antenna. A gridded-ground structure would be less effective. In the near field of a loop antenna, the E/ H ratio is lower than 377 ohms, which means it's mainly an H-field generator. Any current loop is a loop antenna. Interference from a loop antenna would be by magnetic field coupling, which is basically the same as inductive coupling. Methods to protect a circuit from inductive coupling, such as a gridded-ground structure, woul<;l be effective against RF interference from a loop antenna. A Faraday shield would be less effective. ~ DIP t""."",,;;J 0 CAPACITOR, DECOUPLING ,Figure 8. _ GROUND e- A more difficult case of RF interference, near field or far field, may ~equi're a genuine metallic RF shield. The idea' behind RF shielding is that time-varying EMI fields induce currents in the shielding material. The induced currents dissipate energy in two ways: [2R losses iri the shielding material and radiation losses as they re-radiate their own EM fields. The energy for both of these mechanisms is drawn from the impinging EMI fields. Hence the EMI is weakened as it penetrates the shield. ELECTROLYTIC CAPACITOR PCB with Gridded Ground but you still get a mathematically optimal distribution of currents in the grid structure, such that the current loop produces less magnetic flux than if the return path were restrained to follow any single given ground trace. The key to attaining minimum loop areas for all the current loops together is to let the ground currents distribute themselves around the entire area of the board as freely as possible. They want to minimize their own magnetic field. Just let them. More formally, the [2R losses are referred to as absorption loss, and the re-radiation is called reflection loss. As it turns out, absorption loss is the primary shielding mechanism for H-fields, and reflection loss is the primary' shielding mechanism for E-fields. Reflection loss, being a surface phenomenon, is pretty much independent of the thickness of the shielding material. Both loss mechanisms, however, are dependent on ihe frequency (w) of the impinging EMI field, and on the permeability (fJ.) and conductivity (u) of the shielding material. These loss mechanisms vary approximately as follows: RF SHIELDING A time-varying electric field generates a time-varying magnetic field, and vice versa. Far from the source of a time-varying EM field, the ratio of the amplitudes of the electric and magnetic fields is always 377 ohms. Up close to the source of the fields, however, this ratio can be quite different, and dependent on the nature of the source. Where the ratio is near 377 ohms is called the far field, and where the ratio is significantly different from 377 ohms is called the near field. The ratio itself is called the wave impedance, E/ H. reflection loss to an E-field (il) dB) ~ log ~ wfJ. absorption loss to an H~field (in dB) ~ tv mufJ. where t is the thickness of the shielding material. The first expression indicates that E-field shielding is more effective if the shield material is highly conductive, and less effective if the shield is ferromagnetic, and that low-frequency fields are easier to block than highfrequency fields. This is shown in Figure 9. The near field goes out about 1/6 of a wavelength from the source. At I M Hz this is about 150 feet, and at IOMHz it's about 15 feet. That means if an EMI source is in the same room with the victim circuit, it's likely to be a near field problem. The reason·this matters is that in the near field an RF interference problem could be almost entirely due to E-field coupling or H-field coupling, and that could influence the choice of an RF shield or whether an RF shield will help at all. iii" :!!. 150 " 125 m 0 100 ..J In the near field of a whip antenna, the E/ H ratio is higher than 377 ohms, which means it's mainly an E-field generator. A wire-wrap post can be a whip antenna. Interference from a whip antenna would be by electric field coupling, which is basically capacitive coupling. Methods to protect a circuit from capacitive coupling, such as a Faraday shield, would be effective against RF z 75 ~w 50 25 0 .... LL W " 0.01 0.1 1.0 10 100 1000 10,000 FREQUENCY (KILOI:IERTZ) Figure 9. E-Field Shielding AFN-Q2131A 22·9 175 150 1=1 ~>25 ~200 ~ fI) fI) ----..... m 150 Z 0 ~ 75 REFLECTIQN - - - - ; - ' W fI) 50 ~ ... ~ 25 ~ 50 " 10' 1Q4 105 10' " ,/ ~~~~"ABSORPTION O+----,--~~-~-~-~-~-T--~--_,,_--_r--__; 0.01 10 103 ,/ -~-:::--............,' 9 100 0 ~ : . ...0 .~ PLANE WAVE 10' 0.1 1.0 10 100 1000 10,000 FREQUENCY (KILOHERTZ) FREQUENCY (HERTZ) Figure 10. H·Field Shielding Figure 11. E- and H-Field Shielding Copper and aluminum both have the same permeability, but copper is slightly more conductive, and so provides slightly greater reflection loss to an E-field., Steel is less effective for two reasons. First, it has a somewhat elevated permeability due to its iron content, and, second, as tends to be the case with magnetic materials, it is less conductive. allowed to flow freely. If they have to detour around slots and holes, as shown in Figure 12, the shield loses much of its effectiveness. On the other hand, accilrding to the expression for absorption loss to an H-field, H-field shielding is more effective at higher frequencies and with shield material that has both high conductivity and high permeability. In practice, however, selecting steel for its high permeability involves some compromise in conductivity. But the increase in permeabilitr more than makes up for ,the decrease in conductivity, as can be seen in Figure 10. This figure also shows the effect of shield thickness. As can be seen in Figure 12, the severity of the detour has less to do with the area of the hole than it does with the geometry of the hole. Comparing Figure 12C with 12.D shows that a long narrow discontinuity such a~ a seam can cause more RF leakage than a line of holes with larger total area. A person who is responsible for designing or selecting rack or chassis enclosures for an EMI environment needs to be familiar with the techniques that are avajlable for maintaining electrical continuity across seams. Information on these techniques is available in the references. A composite of E-field and H-field shielding is shown in Figure II. However, this type of data is meaningful only in the far field. In the near field the EMI could be 90% H-field,. in which case the reflection loss is irrelevant. It would be advisable then to l;>eef up the absorption loss, at the expense of reflection loss, by choosing steel. A better conductor than steel might be less expensive, but quite ineffective. , A different shielding mechanism that can be take,:, advantage, of for low freq\lency magnetic fields is the ability of a high permeability material such as mumetal to divert the field by presenting a very low reluctance path to the magnetic flux. Above a few kHz, however, the permeability of such materials is the same as steel. In actual fact the selection of a shielding material turns out to be less important than the presence of seams, joints and holes in the physiCal structure of the enclosure, The shielding mechanisms are related' to the induction' of currents in the shield rnaterial, but the currents must be Grounds There are two kinds of grounds: earth-ground and signal ground. The earth is not an equipotential surface, so earth ground potential varies. That and its other electrical properties, are not conducive to its use as a return conductor in a' circuit. However, circuits are often connected to earth ground for protection against shock hazards. The other. kind of ground, signal ground, is an arbitrarily selected reference node in a circuit-the node with respect to which other node voltages in the circuit are measured. SAFETY GROUND The standard 3-wire single-phase AC power distribution system is represented in Figure 13. The white wire is earth-grounded at the service entrance. If a load circuit has a metal enclosure or chassis, and if the black wire develops a short to the enclosure, there will be a shock hazard to operating personnel, unless the enclosure itself is earth-grounded. If the enclosure is earth-grounded, a. AFN-02131A 22-10 __ INDUCED SHIELD CURRENTS t - _ RECTANGULAR SLOT --SECTION OF SHIELD (8) (A) (0) Figure 12. Effect of Shield Discontinuity on Magnetically Induced Shield Current shor'! results in a blown fuse rather than a "hot" enclosure. The earth-ground connection to the enclosure is called a safety ground. The advantage of the 3-wire power system is that it distributes a safety ground along with the power. Note that the safety-ground wire carries no current, except in case of a fault, so that at least for low frequencies it's at earth-ground potential along its entire length. The white wire, on the other Jland, may be several volts off ground, due to the IR drop along its length. /- I /:~~~:CE ..... ----- ..... I SLACK I I I LOAD CKT I I I I I I : I I I I WHITE I The series connection is pretty common because it's simple and economical. It's the noisiest of the th~ee, however, due to common ground impedance coupling between the circuits. When several circuits share a ground wire, currents from one circuit, flowing through the finite impedance of the common ground line, cause variations in the ground potential of the other circuits. Given that the currents in a digital system tend to be spiked, and that the common impedance is mainly inductive reactance, the variations could be bad enough to cause bit errors in high current or particularly noisy situations. METAL ( ENCLOSURE r--------\ I I SIGNAL GROUND Signal ground is a single point in a circuit that is designated to be the reference nodeJor the circuit. Commonly, wires that connect to this single point are also referred to as "signal ground." In some circles "power supply common" or PSC is the preferred terminology for these conductors. In any case, the manner in which these wires connect to the actual reference point is the basis of distinction . among three kinds of signal-ground wiring . methods: series, parallel, and mUltipoint. These methods are shown in Figure 14. ----) I I I~ ___ - GREEN The parallel connection eliminates common ground impedance problems, but uses a lot 'of wire. Other disadvantages are that the impedance of the individual ground lines can be very high, and the ground lines themselves can become sources of EM!. EAR~H-GROUND Figure 13. Single-Phase Power Distribution AFN-02131A 22·11 In the multipoint system, ground impedance is minimized by using a ground plane with the various circuits connected to it by very short ground leads. This type of connection would be used mainly in RF circuits above IDMHz. QUIET SIGNAL GROUND PRACTICAL GROUNDING A combination of series and, parallel ground-Wiring methods can be used to trade off economic and the various electrical considerations. The idea is to run series connections for circuits ~hat have similar noise properties, and connect them at a single reference point, as in the parallel method, as shown in Figure 15. In Figure 15, "noisy signal ground" connects to things like motors and relays. Hardware ground is the safety ground connection to chassis, racks, and cabinets. It's a mistake to use the hardware ground as a return path for signal currents' because it's fairly noisy (for example, it's the hardware ground that receives an ESD spark) and tends to have high resistance due to joints and seams. NOISY AND HIGH CURRENT SIGNAL oard voltage regulator chip did the job. , Thus, a good case can be made in favor of using a voltage regulator chip on each PCB, instead of doing all the voltage regulation at the supply circuit. This eases requirements on the heat-sinking at the supply circuit, imd alleviates much of the pistribution and board detoupiing headaches. However, it also brings in the possibility that different boards would be operating at slightly different VCC levels due to tolerance in the regulator chips; this then learls to slightly different logic levels from board to board. The implications of that may vary from nothing to latch-up, depending on what kinds of chips are on the boards" and how they react to an input "high" that is perhaps O.4V higher than local VCe. Recovering Gracefully f,rom a Software Upset Even wh~n o~e follows all the best guidelines for designing for a noisy environment, it's always possible for a noise transient to occur which exceeds the circuit's immunity level. In that case, one can strive at least for Ii graceful recovery. Graceful recovery schemes involve additional hardware and/ or software which is supposed to return the system to a normal operating mode after a software upset has occurred. Two decisions have to be made: How to recognize when an upset has Occurred, and what to do about it. If the designer knows what kinds' and combinations of AFN-02131A 22-16 PIN 40 ALE (A) No Decoupllng Cap PIN 40 ALE (D) 1"fDecoupler Stretched Directly from ~In 40 to Pin 20, under the Socket. (This prevents the 1MHz ripple, but there's no reduction In higher frequency components. Further Increases In capacitance effected no further Improvement.) (C) 0.1JJf'Decoupler Stretched Directly from Pin 40 to Pin 20, under the Socket (Tl:le' difference between this and 21B is due only to the change In loop geometry. Also shown Is the upward slope of a ripple in Vcc. The ripple frequency is 1MHz,the same as ALE.) PIN 40 ALE (E) Special-Purpose Decoupllng Cap under Development by Rogers Corp. (Further discussion in tex!.) Figure 21. Noise on Vee Line AFN-02131A 22-17 , . .,''f'. :~' ,"1 ." ",t', , '." ,",: ,. :': SOOmV " ~.', tf, Figure 22. '.' ..' ~' " EMP·lnduced Glitch outputs can legally be generated by the system, he can , use gates to recog'niz~, and flag *,11 ocCuJten~' of an illegal state. of affairs. lhe nag.:can then'tJiggera jump to a retqVefy' routine 'whi~h then may check, or. re-initialize data" perhaps, 'output an' error il1essa~;' ;~r generate a '.' " '' , simple reset: , " , ,', ', ",' f J M Ps. It's still possible, of course, to get hung up in a data· table or something. But you get a lot of,-protection, for 'tlie c~t,' ' , " of FurthetdisCAsslon graceful, fCC()veI)r schemes can be found' in refe~ilcei J : ' " ' -,'" The' most reliable scheme is to use a s()-'Called watchdog circuit. Here the CPU ,is pro~mlI!ed to generate a periodic signata, lo~g'as the system is executing instructions in -~n ,expectcid' inaniier. the periodic si~1 Is then used to'qold off a circuit 'that will trigger a Jump to. a recovery rou'tilie: Th~' periodic, 'sigIIIIl needs to be' AC-<:oupled to the trigger 'Circuit so that a "stUck~~tft fatilt won't continue to hold otT' the trigger. Then,' if the processor locks up someplace, the periodic signal is lost and the watchdog tri~rs a reset. , In practice, it may be convenient to drive the watchdog circuit with a signal which is being generated anyway by , the system. One needs to be Careful, however, that an upset does in fact discontinue that signal. Specifically, for example, one could use one ,of the digit drive signals going to a multiplexed display. But display scanning is often handled in response to a timer-interrupt, which may 'continue operating even though the main program is in a failure mode. Even so, with a little extra software, the signal can be used to control the watchdog (see reference 8 on this). Simpler schemes can work well for simpler systems. For example, if a CPU isn't doing anything but scanning and decoding a keyboard, there's little to lose and much to gain by simply resetting it periodically with an astable multivibrator. It only takes about 13!lsec (at 6M Hz) to reset an 8048 if the clock oscillator is already running. A zero-<:ost measure is simply to fill all unused program memory with NOPs and JMPs to a recovery routine. The etTectiveness of this method is increased by writing the program in segments that are separated by NO~s, and, ESD , " M'PS chips hav,eso~ built-in pr~tec~i?n, ~gainst a static charge ,build-up on t\le pins, as would 'OCCur during normal handling,' but tliere's no protection againSt the kinds of cur~nt levels and rise times that occur in a genuine electtostatio spark. These kinds of discharges can blow a cra,ter in'the silicon.• , It must be recognized that connecting CPU pins unprotected to a keyboard or to anything else that is subject to electrostatic discharges makes an extremely fragile configuration. Buffering them is the very least one can do. But buffering d~esll 't completely solve the problem,. because then the.butTer chips",will sustain the !lamage (even TTL); therefore, one might ,consider mounting. the Duffer chips in sO£kets for ea~ of I:Cplll:cement, ' ' . T~nsieni suppressort. ~uch as ~he Tran,Z9r~@) made by General'semiconductor Ind.ustries (Tempe, AZ), may in the lon~ run prQ¥idf the cheapest: protec~on if\heir "zero inductance"· .structu're is used, The structure and circuit appli~iqn-:'are shown kt Figure 23. . " ' j , ' . , The'~~ppreSsor eleib~nt is ~ fln juncti~n t~t: 9perates like a Zener diQde. 8ack~tO-back units are available for AC operation. The element i~ :niQre or less an open circuit at normal system voltage (the standoff v,oltage rating for the deXice), and con~~ts ii""~ a'Zent *CJ + J(-F)/(2*PI*(S'2+F~2)CJ 2500 REM = F~RC(S.F.C) + JFNXC(S.F.C) 2600 REM 2700 DEF F,NRC(SC. FC. CO = SC/(2#*PI*(SC 2+FC2)*CC) 2800 DEF FNXC(SC.FC.CC) = -FC/(2#*PI*(SC'2+FC'2)*CC) 2900 REM RATIO OF TWO COMPLEX NUMBERS 3000 REM 3100 REM RA+JXA RA*RB+XA*XB XA*RB-RA*XB 3200 REM + J RB"2+XB'2 RB'2+XB"2 3300 REM RB+JX3 FNRR(RA, XA.RB.IB) + JFNXR(RA. XA.RB.XB) 3400 REM 3500 DEF FNRR(RA,XA,RB.IB) = (RA*RB+XA*XB)/(RB 2+XB 2) 3600 DEF FNXR(RA. XA,RB. XB) = (XA*RB-XB*RAl/(RB 2+XB 2) 3700 REM PRODUCT OF TWO COMPLEX NUMBERS 3800 REM 3900 REM RA*RB-XA*XB + J(XA*RB+RA*XB} FNRM'RA. IA. RS. IB) + JFNXM(RA. XA. RB.·XB). 4000 REM 4100 DEF FNRM(RA. XA.RB. " PRINT "OTHERWISE, TYPE 0,0 " INPUT N'l.,X IF N'l.=O THEN RETvRN IF N'l.=I' THEN RI X IF N'l.=2 THEN L1 = X IF N'l.=3 THEN Cl X*lE-12 IF NI.=4 THEN CO X*lE-12 IF NI.=5 THEN ex X*lE-12 IF NI.=6 THEN CV X*IE-12 IF NI.=7 THEN AV# = X IF NI.=8 THEN RX X*1000' IF NY.=9 THEN Ro = x*loao' GOTO 17400 REM REM If REM ************************************************************** REM REM REM REM REM REM REM Xl = RE = XE = CIRCUIT ANALYSIS ThlS rout~ne calculate~ Crystal 1npedance the loop ga1n at complex frequency SO+JFG RE + JXE FNXL(FQ,Ll) + FNXC(SQ,FQ.Cl) FNRP ( (R ITFNRLCSQ, L1) "FN~C (SQ, FQ, C 1) ), XL FNF>C (SQ, FQ, CO), FNXC (SQ, FQ, CO) ) FNXP«RITFNRL(SQ,Ll)+FNRC(SQ,FQ,CI». XI,FNRC(SQ,FQ,CO),FNXC(SQ,FQ,CO» REM (RE+JXE)! 1 (<3mpllf1er feE'dback T'eSlstance) REM 2 RF T JXF REM RF = FNRP(RX,O,RE, XE) XF = FNXP(RX,O,RE.XE) REM Input llnp edance Zl RI + JXI 1mpedance of CXTALl REM 3 REM RI = FNRC(SQ,FQ,C() XI = FNXC (SQ, FQ, C.< ) REM REM 4 Load 1mpedance ZL = llmpedance of CXTAL2): :CCRF+RI>+J(XF+XI)] REM RL = FNRP (RF+R I). (XF .... X I), FNRC (SQ, FQ, CY), FNXC (SQ, FO, CY) (XF .... Xll,FNRC'-SO r-o CY).FNX('(SQ,FQ,CY» XL = FNXP«PF+RI REM REM REM REt1 AR* = -AV#*FNRR(RL. XL. (RO+RL), XL) 1 22500 22600 22700 22900 22900 23000 23100 AI# = -AV#-JlFN')(R(RL, XL, (PQ+RL), XL! 23200 REM 23300 REM 6 Feedbatl( ratlo \beta! (RJ+pI) !['F!Ftfdl-t,t(XF+XI») I 23400 REM Birt:!dJ' -r JI:'(lmaqllldryl 22-51 AP-155 23500 REM 23600 BR# - FNRR(RI.XI. (RI+RF). (XI+XF» 23700 BIll - FNXR(RI. XI. (RI+RF). (XI"F» 23800 REM 23900 24000 24100 24200 24300 REM 7 AmplIfIer gaIn REM A - FNZM(AR#.AI#) AP - FNZP(AR4I. AI41), REM 1Tl magnitude/phase form. 25100 25200 25300 25400 25500 25600 25700 25800 25900 26000 26100 26200 26300 26400 26500 26600 26700 26800 26900 27000 27100 27200 27300 27400 27500 27600 27700 27800 27900 28000 28100 28200 28300 28400 28500 28600 28700 28800 28900 29000 29100 29200 29300 29400 29500 29600 29700 29800 29900 30000 30100 30200 30300 30400 30500 30600 30700 30800 30900 31000 31100 31200 A at AP degrees B at BP degrees 8 (beta) In magnItude/phase form Bfl+JBI REM B = FNZM(BR4I,BI#) SP - FNZP(BR#,BI#i REM REM 9 Loop gaIn G = (BR+JBI)*CAR+JAI) REM ~ G(real) + JGllmaglnary) REI1 GR - FNRM(AR#,AI#,BR#.BI#) GI - FNXM(AR#,AI#,BR#,BI#) REM AL at AQ degrees REM 10 Loop g~ln In magnItude/phase form GR+JGI REM AL - FNZM(GR,GI) All - FNZP (GR, GIl RETU'RN REM REI1 REM ************~~***********~**~********************************* !'EM PRINT CIRCUIT ANALYSIS RESULTS REM REM PRINT PRINT" FREIlUENCY - ",SIl, " + J",FIl," HZ" PRINT" XTAL IMPEDANCE - ",FNZM(RE,XE)," OHMS AT ",FNZP(RE, XE)," DEGREES" (RE - ",CSNG(RE)," OHMS)" PRINT PRINT (KE - ",CSNG(XE)," OHMS)" LOAD IMPEDANCE - ",FNZM(RL, XL), " OHMS AT ",FNZP(RL,XL)," DEGREES" PRINT PRINT AMPLIFIER GAIN - ",A," AT ",AP," DEGREES" FEEDBACK RATIO - ",B," AT ",BP," DEGREES" PRINT LOOP GAIN - ",AL," AT ",AQ," DEGREES" PRINT RETURN REM REM REM ************************************************************** REM SEARCH FOR FREIlUENCY (S+JF) REM AT WHICH LOOP GAIN HAS ZERO PHASE ANGLE REM REM REM ThIS routIne searches for the fre~uency at WhlCh the lmaglnary part REM of the loop galn lS zero T~e algorlthm lS as follows. 1 Calculate the slgn of the lmaglnary part of the loop galn (GI) REM REM 2 Inereme~t the frequency 3 Calculate the 519n of GI at 'the lncremented frequency REM 4 If the s19n of GJ Has'not changed. go back to 2 REM S If the 51gn of GJ has changed, and this frequency 15 wlthin REM 1Hz of the prevlous slgn-change, e~lt the routlne REM 6 OtherWIse, dlvlde the frequency' lncrement by -10 REM REM 7 Go bae It to 2 REM The routine 15 entered wlth the startlng frequency SQ+JFQ and REM 5tartlng lncrement DS+JDF already deflned by the caillng program REM In actual use either OS or OF lS zero, so the routine searches for REM a GI=O pOlnt by lncrementlng elther sa or FG whlle holdIng the other It return~ control to t~e call1ng program with the REM constant REM lncremented part of the frequency belng wlthin 1Hz of the actual REM GI=O pOlnt REM REM CALCULATE THE SIGN OF THE II1AGINARY PART OF THE LOOP GAIN (GI). REM GoSUB 20200 GoSUB 26600 IF GI-O THEN RETURN SXX - INT(SGN(GI») IF SXX-+I THEN OS -OS REM (REVERSAL OF OS FOR GI: 0 IS F'OR THE POLE-SEARCH ROUTINE. ) REM INCREMENT THE FREIlUENCY REM 2 REM SP = SO 24400 REM 24000 24600 24700 24800 24900 25000 ARtJAI 22-52 AP·155 31300 31400 31500 31600 31700 31800 31900 32000 32100 32200 32300 32400 32500 32600 32700 32800 32900 33000 33100 33200 33300 33400 33500 33600 33700 33800 33900 34000 34100 34200 34300 34400 34500 34600 34700 34800 34900 35000 35100 35200 35300 35400 3-5500 ,35600 35700 35800 35900 36000 36100 36200 36300 36400 3~500 36600 36700 36800 36900 37000 37100 37200 37300 37400 37500 37600 37700 37800 37900 38000 38100 38200 38300 38400 38500 38600 38700 38800 38900 39000 FP = FQ SQ = sa + OS FQ = FQ + OF REM REM 3 CALCL'LATE THE SIGN OF GI AT lHE INCREMENTED FREQUENCY REM GOSUe 20200 OOSUB 26600 IF INT(SGN(GI))=O THEN RETURN REM REM 4 IF THE SIGN OF GI HAS NOT CrlANGED, GO BACK TO 2 REM IF SXX+INT(SGN(GI))=O THEN PRINT ELSE 31400 SXX -SXX REM IF THE SIGN OF GI HAS CHANGED, AND IF THIS FREQUENCY IS WITHIN REM 5 1HZ OF ~'"'IE P~ElJIO",15 S!GN-CHANGE. AND' IF 13! IS NEGATIVE, THEN, REM EXIT THEo ROUTINE (THE' ADDITIONAL REQUIREMENT FOR NEGATIVE 01 REM IS FOR THE POLE-SEARCH ROUTINE ) REM REM IF ABS(SP-SQ)EMEIHATION VALUE FOR FQ FI = FQ OF = (FA-FI)/IO* OOSUB 30300 DE (FQ-Fl)/10# OF 0 FQ ~ Fl = 22·53 AP-155 39100 39200 39300 39400 39~00 :W600 39700 39800 39900 40000 40100 40200 40300 40400 40~ 40600 40700 40800 40900 41000 41100 41200 41300 41400 41500 41600 41700 41800 41900 42000 42100 42200 42300 42400 42500 42600 REM REM 3 INCREMENT Fli REM Fli • Fli + DE REM REI'! 4. FOR 'THIS VA~UE OF FG, FIt~D THE VA~UE OF SG FOR WHICH THE ~OOP GAIN HAS ZERO PHASE. (THE ROUTINE WHICH DOES THAT NEEDS OF = O. REM SO THAT IT CAN HOLD FG CONSTANT. AND NEEDS AN INITIA~ VA~UE FOR REM OS. WHICH IS ARBITRARILV SET TO OS = 1000. ) REM REM OS • 100011 SCi = 0 GOSUB 30300 IF A~.I! THEN RETURN REI'! REI'! 5. FOR THIS VA~UE OF SG+JFIi. CA~CU~ATE THE SIGN OF (AL-l). REM 6 IF THE SIGN :OF (A~-I) HAS NOT CHANGED. GO BACK TO 3 REI'! IF SVX+INT(SQN(A~-I'))=O THEN PRINT E~SE 39400 REM REM 7. IF THE SIGN OF (AL-I) HAS CHANGED. AND THIS VA~UE OF FG IS WITHIN 1HZ OF THE PREVIOUS SIGN-CHANGE. EXIT THE ROUTINE REI'! REM IF ABS(Fl-FIi)(1 THEN RETURN REM . REI'! 8. DIVIDE THE FG-INCREMENT BV -10. REM DE = -DE/IOII 1'1 = FG SVX • -svx REI'! REM 9 GO BACK TO 3 REI'! GOTO 39400 REI'! REI'! 42700 REM 42800 42900 43000 43100 43200 43300 43400 43500 43600 43700 43800 43900 44000 44100 44200 44300 44400 44500 44600 44700 44800 44900 45000 45100 45200 45300 4·5400 45500 45600 45700 45800 45900 46000 46100 46200 46300 46400 46500 46600 46700 46800 REM REI'! REM REM REI'! REM REI'! REM REM REM REI'! REI'! REM REM REM REM REM REM REM REM REI'! REM REM REM REM REM REM REM REM REM REM REM REM REI'! REM REM REM REM REM REM REM *************************************************************** STEADV-ST,ATE ANALVSIS The circuit model used In thiS .nal~sls is similar to the one used In the 'small-slgnel anaIvsi., but differs from it in two r'spects First, it Includes clamping and clipping effects described in the text. Second, the voltage .ource in the Thevenln equivalent of the amplifier 15 controlled b~ t~e input voltage In accordance with an Input-output curve defined Ilsewhere In the program. The analYSIS applies a Sinusoidal Input signal of arbitrary amplitude. at the OSCillation fr~~uencv. to the XTALl pin, then calculates the resulting waveform from the voltage source USing standard Fourle" techni~u.s. the fundamental 're,uenCV component of thiS ~av.form is extracted This fr.qu.nc~ component is th.n multiplied bV the factor :ZL/(ZL+RO)~l, and the result is tat.n to be the .,gnal appear1ng at the XTAL2 pin This .,gnal is then multiplied bV the'feedback rat10 (beta). and the result is taken to be the Signal appearing at the XTALl pin The algorithm IS no~ rep.ated uSing thiS computed XTALl Ilgnal 85 the assumed input Sinusoid. EV.TV time the algor1thm is repeated, new valu • • • ppe." at XTALl and XTAL2. ,but the values Cl\eng8 les. and 1 ••• with each repeUtlon 'Eventually they stop changing. Thu 10 the steady-state. The algoTtthm IS • • follows 1. Compute approximate OSCillation fre~u.nc~ 2 Call a Circuit analvsls at thiS frequ.nc~, 3 Find the qUiescent levels at XTAL1 and XTAL2 (to establish the beg1nn1ng DC level at XTAL1) 4 Assume an Initial amplitude ~o~ the XTALl signal 5 Co~r.ct the DC l.vel at )CTALl for clamping effects, if n.c •••• r~ Using the approp~late Input-output cu~ve, extract a DC lev.l and 6 the fundamental frequenc~ component (multiplY1ng the latter by :Z~/(ZL+RO):) , 7. Cl1P off the negative partlon of thiS output signal. If the neqative peak falls below zero 6 If thiS Signal, multiplied by (beta), dlffeY's f~om the Input amplitude b~ less ,than lmV, OT' If the algorlthm has been repeated 10 times. eXlt the routlne 9 Other"llse. multlpllJ the )CTAL2 amplltude b\l (beta') and feed It bac~ to ~TA~I. and go bac~ to 5 COMPUTE APPROXIMATE OSCILLATION F~EQUENCV AP·155 46900 47000 47100 47200 47300 47400 47500 47600 47700 47800 47900 48000 GOSUB 9700 REM REM 2, CALL A CIRCUIT ANALYSIS AT THIS FREQUENCY. GOSUS 20800 PRINT "ASSUMED OSCILLATION FREQUENCY' " PRINT PRINT GOSUB 26600 PRINT PRINT REM REM 3 FIND QUIESCENT POINT REM (At quiescence the voltages at XTAL1 and XTAL2 a~e equal This REM voltage level IS found b~ trlal-and-error, based on the inputREM output curve. so that a person can change the input-output curve 48100 REM as desired without havlng to re-calculate the quiescent point ) 48200 VI 0 48300 VB = 1 48400 1'.1 = I 48500 VI = VI + VB 48600 GOSUS 13600 48700 IF ABS(VO-VI)( 001 THEN 49200 48800 IF KI+SGN(VO-VI)=O THEN 48900 ELSE 48500 489001'.1 = SGN(VO-VII 49000 VB = -VB/IO 49100 GOTO 48500 49200 VB VI 49300 PRINT "QUIESCENT POINT = ";VB 49400 REM 49500 REM 4 ASSUME AN INITIAL AMPLITUDE FOR THE XTALI SIGNAL 49600 EI 01 49700 NRX o 49800 REM 49900 REM 5. CORRECT FOR CLAMPING EFFECTS. IF NECESSARY. 50000 REM OH and K2 are curve-fitting parameters f!lr the ROM parts. ) 501001'.1 (2.5-VB)/(3-VB) 502001'.2 = (VB-I.25)/(3-VB) 50300 IF ICX=2 OR ICX=4 THEN IF EI«VB+ 5) THEN EO VB ELSE EO EI 5 KUEI+K2 50400 IF ICX=I OR ICX=3 THEN 'IF EI andwidth, In ,addition, staticcolumn decoding simplifies system design by eliminating critical timing relationships while providing higher system speed. Access from column addresses gives usable speed for single random accesses wit,hin the RAM. Also, the CMOS, technology enhances reliability by incorporatjng a mechanism to significantly reduce soft errors. Finally, increased stored charge creates larger internal: signal levels, which cat:' more easily bE; differentiated from ,noise. As a result, the CMOS dynamic RAM has wider operating margins and system reliability is improved. Power Consumption At the system level, dynamic memory has three components of power: active, standby, and refresh. The system's power consumption is defined as where P = system power, V = voltage (5.5 V worst case), IA = active current, IA = standby current, I. = refresh current, M = number of active devices, K = number of devices in standby, and N = total number of devices. CMOS reduces the first term, the active current, relative to NMOS by a factor of 2. In addition, the lower active current reduces supply voltage transients, 'thus simplifying printed-circuit-board design and reducing decoupling-capacitor requirements. The second term, standby current, is also reduced by a factor of 2 at TTL input levels. Driving the RAS signal to a CMOS level (VDD -O.5 V) phlces the device in a low-power-standby mode and typically draws 10 microamperes (/tA)-a factor of 50 reduction over NMOS! Refresh current, the third term in the equation, is cycle-time dependent. Current increases with the frequency of refresh., In dynamic IlAMs, data is stored on a capacitor that must be replenished or recharged every 2 or 4 milliseconds (ms). This ,refresh time is a function of the stored charge and the leakage current. With the CMOS dynamic RAM, the cell storage capacitance is 0.125 picofarad (pF) compared to 0:040 pF to 0.085 pF in an NMOS dynamic RAM. This low capacitance, coupled with lower leakage currents; permits the CMOS refresh pedod to be extended to 64 ms in standby. At the standard 128 refresh cycles/2 ms (equivalent to a 15.625-p.s refresh period), ,the NMOS device draws about '4.8 milliamperes (mA) and ,23-14 asymptptically approaches the standby 'current 6f 4 mA as the refresh period, approaches' infinity. Even eliminating refresh entir~ly only reduces the current to 4 mA, which is only a 16 percent improvement. As a result, extending NMOS refresh does not significantly reduc~ the system's power consumption. Contrast this characteristic to the improvement CMQS offers. At 15.625 p'S, the CMOS dynamic RAM draws approximately 10 percent of the NMOS current, or 0.42 mA at TTL levels. Extending the refresh period reduces the current asymptotically to the standby current of 0.05 mA. At a 64-ms refresh period, the current is reduced to 0.15 rnA, a 300 percent reduction. When battery powered, the CMOS system has a 10 times longer life than does the NMOS system, and an extended refresh mode offers another fivefold improvement. A 256K-byte CMOS memory can retain data for nearly one week on only AA nickel-cadmium (nicad) cells-more than sufficient for most portable systems. High-Speed Applications Ripplemode and Static Column mode are ideal for applications involving high-speed buffers, telecommunications, and graphics. Bitmapped graphics systems would seem to be a natural fit with Page Mode operation. However, this was not always the case. Prior to the In· tel 2164A 64K by I-bit NMOS dynamic RAM, it was difficult to,retrieve all 256 bits within a single row, of memory because of the RAS-low time limitation of 10 p.s. Even with a Page Mode cycle time of 125 ns, to retrieve all 256 bits would require ,32 p's-three times longer than allowed. The 2164A e,xtended ,the RAS-low time to 75 p's, permitting theextraction of all 256 bits during a single Page Mode cycle. At the end of the cycl~, the ,device cannot be reaccessed again until after a certain off-time allows internal nodes to be precharged to be ready for the next cycle. As a result, the 2164Acan stream data at greater than a 7-MHz rate continuously. This function matches the timing and operation of low-performance, bit-mapped graphics memories. One 2164A, for example, can map all the data for the 256 by 256 matrix of a graphics display. During the horizontal. scan time, the RAM performs a Page Mode cycle and one full line is displayed. During retrace time, the memory must be refreshed and can be updated with new data if required. This type of update is relatively slow; consequently, it limits the speed of animation on the· screen because the processor has access to the memory only 25 percent of the time. To increase resolution, more lines, each with more pixels, must be used. By performing two sequential Page Mode cycles from two different RAMs, pixel densities to 512 bits per line can be achieved. As pixel density increases, the memory cycle time must decrease to paint more pixels on a line in the same amount of time. This cycle-time limitation plus the fact that memory can be updated only during blanking has precluded dynamic ·RAMs from use in higher-resolution graphics displays. These systems are usually built with high-speed, expensive static RAMs. With Ripplemode, memory update during screen display time, also known as cycle stealing, is possible. As an example, a 512 by 384 display requires 512 bits/line and 1 bit every 67 ns. Data is read from four memory devices in a series of eight Ripplemode reads each. Data is temporarily stored in a video-output register file and then shifted to the video screen at a rate slower than the Ripplemode reads. Following this, enough time is available to perform an update cycle before the next eight Ripplemode reads are performed to continue screen refresh. Eight was the number chosen to minimize the time the processor must wait to update the memory. In addition to this cycle stealing, which updates during display time, memory updates are also performed during blanking. Along with this system, a similar system was built using 2164As with Extended Page Mode operation. Each system used an iAPX 86 processor and similar software. A comparison of both systems showed the CHMOS (complementary high-speed metaloxide semiconductor) system to have a 42 percent higher drawing speed. Animation on the CHMOS system was vastly improved. Usable Speed ing the CAS signal from the critical timing path. Systems using dynamic RAMs are typically CAS access-limited because controllers generate timing signals in discrete dock increments. A CMOS dynamic RAM system might operate at 8 MHz without Wait states. Using any other 64K-bit dynamic RAM would require the injection of one or two Wait states, resulting in a corresponding.performance penalty. Consequently, the advantage of higher processor speed is negated without the high-speed dynamic RAM. For systems incorporating either discrete or LSI controllers, the CMOS dynamic RAM simplifies the system design and offers higher system performance. Memory design using dynamic RAMs has always been a challenge. Although multiplexing addresses does reduce the package pin count and increase system density, it ·limits the access and cycle times in the system. To access a dynamic RAM, low-order row addresses are presented and latched into the dynamic RAM with RAS. Row addresses must be held for a period tRAH after the fall of RAS to guarantee proper operation. Next, the addresses must be High Reliability Soft errors are random, nonrecurchanged to high-order column addresses and latched into the dynamic ring failures caused by ionizing radiaRAM with CAS, creating a timing tion present within the environment. window tRCD, which is the RAS-to- All matter contains small amounts of radioactive material. Alpha particles CAS delay. Within this window, the designer emitted by an IC's packaging material must guarantee row address hold can penetrate the enclosed circuit. As time, change the addresses, and ac- they do so, they generate hole-eleccount for any timing skew on the tron pairs. Any high-impedance CAS signal. If column addresses are node in the vicinity sensitive to 1 valid at the maximum specified tRCD , million electrons may be affected, access time tRAC is measured from the because the difference between a 1 and a 0 (known as the critical charge) high-to-Iow transition of RAS. The cycle time is the sum of the ac- :s about 1 million electrons. Consecess time and the cycle precharge quently, data in one cell could change time tRP ' The access time is a function from a 1 to a 0 or vice versa. Correct of i RCD, which has contradictory re- data can be rewritten into the affected quirements. It must be as long as cell and the memory ""ill again funcpossible to simplify system design tion correctly, thus the term "soft and at the same time as short as error:' When first discovered during tests possible to enhance system speed. Cycle time is affected directly by the of 16K-bit dynamic RAMs, soft errors length of tRP • ' occurred at a rate five times greater Static-column operation eliminates than catastrophic or hard-error failthe tRCD problem. After row addresses ures. While device designers worked have been latched into the RAM, the to eliminate the alpha-particle sensecond portion of the access begins sitivity, systems designers added from valid column addresses. In error-correcting circuits (ECC), which other words, column access does not increased system reliability, but the wait for CAS to become valid, but systems were larger and more expenoperates in a fashion similar to that sive due to the additional comof a static RAM. This is due to the ponents required. Also, the system flow-through operation of the CAS had to test and correct the data, slowlatch. CAS serves only to latch the ing the systems performance. All this addresses and to provide an output was due to soft errors. Obviously, enable. Access from valid column ad- what is really required is the eliminadresses simplifies design by remov- . tion of soft errors. 23-15. CMOS teChnology off~rs' such a fo m9re stored charge, which in turn benefit by the elimination of ECC cirsolution.' The CMOS dynamic 'RAM increases the critical' 'charge. The cuits from a cost, performance, and cell is built on an n-well in: a p·sub- critical charge is the number of par- Simplicity-of-design standpoint. First, strate, 'crecitirig a' p-n junction or ticles that differentiate a 1 from a O. ECC increases the access time of the diode at' fhe boundary. When' alpha Increasing the critical charge beyond system by 50 ns'to check and correct particles create hole-electron pairs in 1 million electrons significantly data. Assuming a 120-ns RAM aca CMOS device, something else oc- reduces the susceptibility to soft er- cess, ECC increases the access by 42 curs. First, the n-well is very shalloW, rors. This, in addition to the n-well percent.' Moreover, the penalty on cyand the majority of hole-electron mechanism, reduces the soft~error cle time is even greater, especially pairs are created in the p-substrate. rate to much less ,than 0.001 percel'lt when you are writing a single byte inHoles cannot transfer across the per'looo hours. to a 2-byte word. In this instanc~, reverse-biased p-n junction, which Studies' were performed to com- data must be accessed and corrected, acts as a barrier to soft-error effects. pare reliability of systems with and the new byte merged into the word, Any electrons that do cross the junc- without error correction for both and check bits generated. Finally, the tion are gathered at the + 5-V node NMOS and CMOS dynamic RAMs. system must write the new data into away from the storage cell. The' prob- The'results show one surprise: at memory. Added to this are any sysability that sufficient hole-electron 256K bytes and below, the CMOS tem-timing skews. As a result, a pairs are created witnin the n-well system without ECC is more reliable 200-ns cycle time stretches to a 335-ns that cell upset could occur is so low ,than the NMos system with ECC, system cycle time or an increase of 68 that the soft-error rate of CMOS because of the cycle-time depen- percent. Therefore, using a CMOS dynamic RAMs is typically orders of dence of soft errors. In small systems, dynamic RAM not only improves magnitude below that of their NMOS the memory is accessed more -fre- system reliability but enhances syscounterparts. quently, and the probability of a soft tem speed and simplicity of design .• High storage capacitance also plays error is increased. With a soft-error a role in the reduction of soft errors. rate at the very minimum 100 times The number of stored charged elec- less than NMOS, the CMOS Joe AI/nether IS lechmod marlreling manager al trons representing a lora 0 is direct- dynamic RAM does not experience Intel Corp. (21ll N. E 25th Ave., Hdlsboro, OR ly proportional to the storage capac- this effect. Systems below 256K-by'te capacities 97123). itance. Higher capacitance e le '\: EPITAXIAL SUBSTRATE !. ONn+WAFER while contained in a minimum area. Thus the chip! designer must use high-gain n-channel t,ransist9rs for the I ce!I's pass gates and puIldowns. For good soft-error pron 200 p·TYPE EPITAXIAL SUBSTRATE iii tection, th~n, the cell must be located in a p-weIl within, ONP+WAFER~ , , an n-type substrate. 100 The p-weIl approach benefits even full ~.MOS six-transistor static-RAM cells. The area of such ceIls depends strongly on the distance allowed between n- and p-channel deyices. Using,a straightforward implementation of 10 epitaxial C-MOS, the p-well, approach provides more marn-TO-p SPACING (,dn) ,,' gin against latchup at small mto-p spacings (Fig. 3). This phenomenon occurs because of the differing diffusion properties of n- and p-iype dopants. The heavy 3. Powe•• ma~in. With an epitaxial substrate. a p-well structure (updoping in the n-type substrate is less mobile than is the per curve) y~lds a greater margin ageinst latchup than n·well at p-type dopant, resulting in less outdiffusion during ther- smaHer n- and p-devlce spacings. mal processing and thus minimizing the shunt resistance contact etch attacked the silicon substrate or if the conthat controls latchup. tact was, misaligned toward the field-oxide edge, the plug Hooking it up would rejuvenate the resulting weakened junctions. In cOne of the challenges of C-MOS in logic applications is MOS, these sallie attributes must be obtained differently, interconnection. Designers of noMOS chips are accus- through improved fabrication, cleanliness, new gettering tomed to buried contacts, which directly connect, n-type techniques, improved dielectrics, and tightly controlled polysiJicon and ootype transistor source or drain regions. contact etching. Figure 5 shows the difference in impleBecause C-MOS requires contact to. ,both p and n regions, menting a 1.5-,...m contact structure in n~~1Os and C.MOS. Along with the proliferation of C-MOS technologies has the traditional n-type buried contact becomes much, less useful, and a version suitable for ,both ,diffusion polarities come a wave of innovation -in 'C-MOS design techniques: is quite difficult to implement. This increases the burden For digital logic, the, major contenders for broad U$e are fuIl complementary design and domino logic, first proon .contact and metallization modules. For high-density C-MOS logic, the first level of metal is posed by AT&T Bell Laboratories (Fig. 6). For many all but consumed by ~Ocal connections betwee/l ,p and n applications, traditional C-MOS logic is a winner. It retransistors. The payback from adding a second level of quires no clocks, has larger' operating margins,' and uses metal for longer-distance routing is very high. A good fewer transistors, for simple gates. For more complex example exists for the six-transistor statiC-RAM ceIl com- gates, however, domino logic uses fewer transistors and monly used by logic designers. Figure 4 compares sin- runs faster. The speed results from connecting fewer gle- and double-metal versions, of this cell, both imple- transistors in series and reducing gate-fanout loading by mented with 1.5-,...m design rules. Here the second-metal layer provides the bit lines for the cell. Similar arguments justify the use of second metal in global power, clock, and data routing in complex microproce$sor c h i p s . , Contacts themselves are more dif-' ficult to build in C-MOS. N-MOS technology .accustomed process engineers to adding a phosphorus contact plug after the contacts have been etched. This plug brought several advantages: the phosphorus gettered metallic contaminants from the wafer, reducing junction leakage; and ,the high-temperature diffusion rounded, (0) the profile of the contact sidewall" easing. the step coverage of the metal 4. PaJbaok, Theuse of double-metal layers for a six-tranSistor static-RAM cell can prodUce's subsequently deposited. Further, the' large savings in rea~esta'te. In twO cells implemented With a 1.S.pm design rules;,the savings pl~g had self-aligning features. If the can am\llunl to one1hlrd of the total area: The cell at right uses second-layer metal for bit hnes. .. ,- ~·TYPE I I.. r r Electron,ical May 3.' 1984 23-20 5. "king conblet. Contacts anI more difficult to build in C-MOS than in convenllOnal nMOS, The phosphorous contact plug used in noMOS after contact etching (a) adds desirable features such as reduced junction leakage and improved step' coverage by the metal layer, To gain the same advantages in CMOS reqUIres greater process control (b), METAL PHOSPHATE GLASS FIELD OXIDE (0) METAL (b) ~1·~------I~pmBAR-------·~1 up to a factor of two comp~red with full C-MOS. Interestingly; the choice of design' style influences the optimal type OrC-MOS well. The speed of full C-MOS is limited by the slower of the two transistor polarities. Since the trip point is quite close to half the power supply, the time required for either transistor type to discharge its load capacitance by about 2.5 v sets the gate's speed. Since the p-channe! device is the weaker one, it pays to choose a well type that improves the pchannel's cor)ductance. P-well- does this because the pdevice is fabricated in an uncompensated substrate and thus has maximum mobility, Comparisons between n, 6. Logic. Two major contenders for digital logic design are full complementary (a) and domino logiC (b), The former requires no clocks and IS simpler ior many applications. Domino logiC, which performs best In an • n-well technology, is faster and simpler for more complex CirCUitS, L-._ _....._ and p-well construction show that the p-channel's conductance may be improved by as much as 10% with the proper well type, By contrast, domino logic is at its best in an n-well technology, Here, the n-channel transistor dominates both performance and transistor count. Placing the n-channel device outside the well improves its conduc·tance and reduces the dominant parasitic junction capacitance. Density also increases because no well contacts are required for the majority of the transistors. The twin-well approach to CoMas blurs these distinctions. In this approach, a high-resistivity epitaxial layer is grown on a heavily doped starting wafer. Then the doping for each transistor polarity may be independently optimized without need for doping comPt:nsation. Performance arguments based on mobility or junction capacitance thus become moot. Nonetheless, domino logic will still be best on a p-type substrate (equivalent to n-well) because it does not require well contacts' to collect the large parasitic substrate curren'ts from the n-channel transistors, thus improving packing density.' Matching process to product "These and other technical arguments may be conibined into a consistent strategy (Fig. 7) for creating a line of C-MOS processes serving a broad marketplace. For at least the next several years, a complete technology line must include C-MOS based on both p- and n-type substrates. Fortunately, choosing epitaxial-latchup control minimizes the development cost of running both process- OUT (b) (0) Electronicsl May 3; 1964 23-21 es. Dynamic RAMs are supported on' the n-well side to minimize pattem sensitivities 'induced by substrate currents while protecting the p-channel cell from soft errors. E·PROMs are built in a similar n-well C-H·MOS process. Placing Intel's noMOS E·PROM cell in an epitaxial p-type substrate eliminates parasitic effects caused by high substrate currents flowing during' cell programming. Microcontrollers land on the n-well side also, so that they may incorporate on-chip E·PROM cells. Most microcontroller products come in two versions, OJ;le with onchip .E-PROM for system-development and manufacturing flexibility, and another with on-chip ROM for lowest cost. Using n-well C·MOS, a single core design can support, both versions. Telecommunications and signal-processing products can also take advantage of the n-well E·PROM process, both for its high-quality polysilicon-polysilicon capacitors and for the E-PROM cell's programmable features. High-performance static RAMS, whether six-transistor or polysilicon-Ioad, can take advantage of a p-well C.H.Mosprocess. High-end microprocessors can key off the dense n-to-p packing and double-metal capability offered by the six-transistor static-RAM process. Because these processes are modular, development is' simplified and manufacturing overhead is minimized. Just as all the 1.5-/-lm C·H-MOS JIl technologies share a common transistor module, the difficult contact module was developed Ollce to be shared among all. Specializeli features such as double polysilicon or double metal are extensions of the common base. The future C-MOS technology is still developing at a frenetic pace. Surprisingly, the application of some newer techniques and the demands of next-generation circuits may bring the various forms of C·MOS closer together, rather than further splitting the number of integrated processes. One example of this trend is the development of a trench-isolation technique for separating nand p devices. When this module is perfected, there will be no reason to develop six-transistor static-RAM cells on p-well technology. The near-ideal trench isolation will prevent latchup on either substrate type. Similarly, if stacked C-MOS statiC-RAM cells can be perfected, there will be no need for polysilicon loads. The stacked C-MOS cell will have the same density but with improved performance and softerror immunity. At that time, twin-well C-MOS on a ptype substrl,ite, augmented by specililized features for specific product lines, will become the one approach to a broad line of coMbs processes. Another factor affecting future C·MOS integration is the continued scaling of transistors. It is well known that the weaker p-channel transistor- is gradually catching up on the n-channel device as channel lengths enter the 'submicrometer region. Eventually, the performance differences may become so small that p- and n-channel devi.;:es will be used interchangeably. Before this level is reached, however, the 5-Y power-supply standard must. be reduced. Because of the large base of TTL-compatible designs and the impossibility of converting the world to a new standard ovemight, components operating from the new reduced supply will need to maintain TTL compatibility and also be able to operate in a system that mixes E·PROM. TELECOM CHIPS 7. TecHnology tr.... A relatively small line·ol C-MOS process variations. or modules. can be matched to a wide vanety of products to serve a broad marketplac~. The broken hnes Indicate directions of . potential future growth. I older 5-Y components with lower-voltage ones. An onchip 5-to-3-Y converter may be one way to solve the problem. This technique, however, will waste up to 40% of the total chip power within the voltage regulator. C·MOS technology provides an elegant solution because it can drive TTL-compatible output levels from a system power supply as low as 3 Y. Since TTL levels. are referenced to the negative (ground) rail, the grounded substrate offered by n-well C·MOS is a much-preferred means of integrating submicrol)1eter transistors into such a system. This will be a strong motive to standardize on psubstrate C·MOS. A final factor that tends to drive future C-MOS processes toward commonality is the growing importance of RC delays in overall chip performance. The latest high-performance static RAMs use an aluminum strap in parallel with the polysilicon word line because the RC delay induced by even the best refractory metal polycides is several nllnoseconds too long. Studies of dynamic RAMS larger than 1 megabit similarly indicate that refractory word lines will probably be inadequate, forcing the technology to support two layers of metal. Combining these observations with those made previously regarding the evolution of statiC-RAM cells leads to the conclusion that most future C·MOS technologies will have two layers of polysilicon as well as two layers of metal. The development of silicon-on-insulator technology is the one major factor that could renew the divergence of C·MOS approaches in the future. However, until the quality of SOl substrates is adequate to support dynamic RAM and E-PROM cel!!" and not Just static logic, it will not playa major role in a broad-based and modular tet:hnology strategy. 0 Electronics/May 3, 1984 23·22 i\dvanced Packaging Information ~lI , . CHAPTER 24 ADVANCED PACKAGING 24.1 Introduction with certain application in mind, such as mounting methods, board material, thermal characteristics and external features. Intel's Microcontroller Operation offers two varieties of JEDEC packages, both with 50mil spacing, a square ceramic leadless type and a square plastic leaded type. Today, system designers using LSI and VLSI devices are continuously facing problems associated with achieving the highest system performance level, and most complex functional level of a particular system application in the smallest physical size possible. Until recently the available solutions to these device problems were limited to the traditional standard dual-inline-package (DIP) based on lOOmii center-to-center lead spacing and flat packages (FP). Today, these device problems are being solved in a number of new ways; DIPs based on 50 mil center-tocenter lead spacing, surface mounted small outline DIP, surface mounted chip carriers, surface mounted gull-wing flat package and pin grid arrays. Among these possible solutions the two that are emerging as the next standard IC packages for LSIIVLSI devices are the surface mounted chip carrier and the pin grid an;ay. ' In addition to these mechanical packaging advantages, there are also electrical benefits. The package arrangement of the chip carriers 110 pads, on all four sides, allows for package traces to be shorter and more uniform in length. This allows lower resistance, less capacitance and less inductance, resulting in higher system performance and improved switching characteristics. 24.3 Why Chip Carriers? Figure 24.1 shows the differences between the surface area (in2) versus pin count of both a ceramic dip and a ceramic leadless chip carrier device. 'Note that l!ll 18-pad chip carrier offers a 57% saving in area. As the pin counts increase, the chip carrier surface area advantage becomes significantly more obvious. This space efficiency allows the system designer to increase the number of components on a board or decrease the overall board size and, thus, the overall system size. 24.2 What Are Surface Mounted Chip Carriers? The chip carrier is basically the business portion of a DIP. Chip carriers are available in two general types: leadless and leaded. The leadless chip carrier construction is accomplished in much the same manner as the'multi-layer ceramic DIP package, but it is missing the side-brazed legs and much of the ceramic surrounding the die cavity area. Instead, it 'consists of a ceramic package with 1/0 pads on all four sides, a die cavity area, metalization traces to the 1/0 pads, and a hermetically sealable lid. Leadless chip carriers are available in either square or rectangular package outlines. The leadless chip carrier can be attached to a board surface either directly, by socketing, or by the addition of add-on leads. - - CERAMIC DIP 3.0 - - - - CHIP CARRIER (LEADLESS, CERAMIC) The leaded- chip carrier construction is accomplished also in much the same manner as the plastic DIP package, but has leads that are bent down and under the package on all four sides rather than like the DIP. It is also missing much of the plastic surrounding the die platform and consists of plastic material encapsulating the die platform with 110 pads or leads on all four sides. The plastic leaded chip carrier is available in square or rectangular package outline, that can be attached to a board surface either directly or by a socket. Chip carriers are registered JEDEC standard packages. The standard is based upon two basic package types, one with 50mil center-to-center terminal spacing, the other with 40mil spacing. Each package: type was developed 24-1. ..-.-_.--- 1.0 .. ~---- ..----_. ~-.---- 16 18 20 22 24 28 32 40 44 48 PIN COUNT FlgLlr.e 24.1. Package Area 52 64 68 ADVANCED PACKAGING For an 18-pin count, there is a 77% weight saving and as , the pin counts increase to 28 and to 48. this weight savings increases to 90% and 95%, respectively. In the case of the plastic leaded chip carrier, the weight savings over a plastic DIP is noticeable but not significant. However, it is in the ability to decrease the board size and, thus, economizing on material and weight reduction that the significant advantage exists. 3.0 - - ~ ~ CHIP CARRIER (PLASTIC, LEADED) - , - PLASTIC blP 24.4 What Are Pin Grid Arrays? 1.0, ,-' --_-..... 16 18 20 22 24 28 32 40 44 ..... _-.AI""'''' 48 52 54 68 PIN COUNT Figure 24.2. Package Area Figure 24.2 shows the differences between the surface area (in2) versus pin count of both a plastic DIP and a plastic Leaded Chip Carrier device. As can be seen, the savings in area is also as significant as the pin count increases, allowing the same system benefits. However. the biggest advantage a ceramic chip carrier has over a ceramic dip is in its weight. Figure 24.3 shows the difference between the weight (grams) versus pin count of both ceramic DIP and ceramic Leadless Chip Carrier. 14 The Pin Grid Array is basically a combination of the ceramic DIP and ceramic Leadless Chip C,arrier. The Pin Grid Array construction is accomplished in much the same manner as the multi-layer ceramic DIP, but it is missing the side-brazed legs and much of the ceramic surrounding the die cavity. Instead, it consists of a ceramie package with leads coming off the bottom in rows or circular patterns. The Pin Grid Array is available in square package outlines with lead spacing of 100 mils and can be attached to a board in the same manner as a DIP. Pin Grid Arrays are being proposed as JEDEC standard packages and will have from 1 to 10 nested rows of legs and may have a die cavity mounting area oriented up or down. 24.5 Why Pin Grid Array? Figure 24.4 shows the difference between the surface area (in2) versus pin count of both a 50 mil spacing chip carrier and a 100 mil spacing Pin Grid Array device. Note that at approximately 68 pins and ab9ve the Pin Grid Array becomes a better solution for higher pin count requirements than the chip carrier. In addition, the 100 mil lead spacing and through board mounting'technique provides customers with an assembly technology that is familiar. _ _ _ _ _ CHIP CARRIERS (LEAD LESS CERAMIC) ". 3.0 12 - - . CERAMIC DIP 10 "/,,, ;;- ~ ~ 2.0 ~ ~ _-..t 1.0 18 28 PIN COUNT 48 .' ,',',J/," ,,. II: .' ," ,tI ~ ... -- ---- .... ----- -....... ',.."..,. "II ,,/1 .A _ 0.500" CHIP CARRIER - - - - 0.100' PIN GRID ' 2040 54 80 120 180 200 240 PIN COUNT Figure 24.4 Surface Array Figure 24.3. Package Weight 24-2, 280 300 ADVANCED) PACKAGING CERAMIC LEADLESS CHIP CARRIER All dimensions in inches and (millimeters) 44-Leadless Hermetic Chip Carrier JEDEC Package Type C .-099(2514) 081 (2057) ::g:::!I+1 B 10101 r--1.rv""V"V' '''('''''} 620 (15 748) 50011210'0) HAIOO6I &20-(15748) 6OOqS2401 m r-.;-, L:±:J o 44 149(3784) 120(3048) 620(15748) REF 660 (18 764) 640(16256) [+[Al}tOJ 1 PIN 1 INDEX CORNER 24-3 ADVANCED PACKAGING CERAMIC LEAD LESS CHIP CARRIER All dimensions in inches and (millimeters)' 44-Leadl... Hermetic ChIp Cerrler JEDEC Package Type C J . - - - " 2 0 (1U4I) R E F ' - - _ TYP4PLCS .. 1 24-4 ADVANCED PACKAGING PLASTIC LEADED CHIP CARRIER All dimensions In Inches and (millimeters) 44-LMcIed Chip C.rrIer JEDEC Package Type C _(1...12) .II1II(1"'10) ::::::::-1 j 1 44 .G21 (0.133) \ ~Tc:f::IH=*=- (0.113) ~ PIN 1 INDICATOR I~_"... ~.1111(17") 24-5 infel" .ADYANCEDPACKAGING Pinout. MCS N ~ r' r-, l~9_ P2 S :27; ;28: . . &: &: )( N ~ :22: :23: ~4: {!' i! " "': r, '" 0: L6J L5J L4J :3: L....I ~ U 0. Z :'-..J 21 '1 ' I 1 , I 1 ' P1.S ~ i :411 ~~< !43: ....... :42: L..J ~..J ~ 140: '-..J PO.' c...J P16 PO.S P1.7 PO.6 HIT PO.7 P3.0 EAlvPP . 8751H* Ne Ne P3.1 ALEIPROO PU P§EN P3.3 P2.7 P3.' P2.6 P3.S r, '181 , I .~ r, r, 1 I'19 , [20: ... It '-,21 , ,r,, r ' -, :23: :24: 1 1 I . i!.. ~ :; ..J 1221 >'" '" U z C! &: r, r ' r., r-, 1 125 1 126 I I N &: '" 0. ,27 1 ;28: ~ ~ "Top View Looking Through Package P2.S inter ADVANCED PACKAGING Pinouts MCS®-48 Family Ii I: .... . ~ ~ :'--'3: :'--'2: '"LJ L&J L5J L4J fliT' EA iifj JSftR WI! Ne ALE DB. DB, DB. '083 u ~ u z :;! " " 144 1 LJ ;::: ~ ~ ~ ~~ ~5 :41\ :40: '--' L~ r-L!'_ =7=J r-- =~J =~J L~8_ r-- L~7_ --, 2~.J r-- l~6_ --, r-L~5_ _1.!.J --, 2~.J --, ~:!.J Ne r-- _1~J --, ~~J --, ~~j r, r, 1181 , '191 I I I r, ~, :20:, 1211 " i rJ 0 rl 0 , 01> co ~ ~ LsJ LsJ L4J :'--'3: :2 : '--' .. ~ ". ~ ~ .. ',' LJ '«' ~~ ~~ 1411 ~ u u z :;! " r, r' r' r, ~ -' ~ )( -, ~ I , :- I ;::: ~ l~~ r-l~O_ P1Q r-- VDD L~~ L~ a: 1.: LJ iNf' P12 PH :23: :24: ,25; ,126·, :27; :28: ... zu Ii! 0 I I 0 ... I . I: r, r' 1221 PIS Pl. P13 l~t --, P,. r-L~ r-- --, ~~j P,7 r-- L~_ 80C49/39* P2. P2' EA P17 jjjj P16 i'SEIiI P15 WI! Pl. Ne Ne 8749H* ALE P,3 DB. P12 DB, PI1 DB. P1Q DB3 r., r, r, 1181 1191 I :20: rJ r!1 0 rl 0 , I 0 I -, 1211 , I 01> 0 r, r, -, r, ;22: :23: :24: ;25; ., ~ u z r' r-' c, 1 126 I , . .. .. Ii! N :::l :27 1 ~ ·Top View Looking Through Package 24-7 :28: "..0a: VDD ADVANCED PACKAGtNG CERAMIC PIN GRID ARRAY All dimensions in inches and (millimeters) 68-Pln Hermetic Pin Grid Array 1~1.165(29.591) .030 TYP 3 PLC~~ 1.135 (~8.829) T@@@:=:@;;;:O=;@;;;:o=;@~@~@;;=;:@F'\h:- .I030@@@@@@@@@ @ @@ @@ @@ @@ @@ @@ i SWEOGE PIN i[::;:::~::::: PIN 1 SWEDGE PIN @@ @@ ~~=======F~==~ ~~--., .055 (1.397) ~ PIN 110 CORNER SEATING PLANE 24-8 ADVANCED PACKAGING Pinouts MCS®-96 Family 17 15 16 13 14 11 12 1 2 68 21 67 66 22 23 65 64 24 25 63 62 26 27 61 60 28 29 59 58 30 31 57 56 18 19 20 32 33 34 36 9 10 7 8 5 6 3 4 MCS®-96* 38 40 35 37 39 42 41 44 43 46 48 50 45 47 49 55 54 53 51 52 MCS®-96 Pin Table PIN SYMBOL 1 ACH7/PO.7 PIN SYMBOL PIN SYMBOL 18 ADO/P3.0 35 READY PIN SYMBOL 52 HSI2IHS04 2 ACH8/PO.S 19 AD1/P3.1 36 T2RST/P2.4 53 HSI1 3 ACH2IPO.2 20 AD2IP3.2 37 BHE 54 4 ACHO/PO.O 21 AD3IP3.3 38 WR 55 HSIO Pl.4 5 ACH1/PO.l 22 AD4/P3.4 39 PWMlP2.5 56 P1.3 S ACH3/PO.3 23 ADSlP3.5 40 P2.7 57 P1.2 7 24 AD6/P3.6 41 VBB 58 Pl.l 8 NMI -EA 25 AD7/P3.7 42 VSS 59 Pl.0 9 VCC 26 AD8/P4.0 43 HS03 60 TXD/P2.0 10 VSS 27 AD9/P4.1 44 HS02 61 RXD/P2.1 11 XTALl 28 AD10/P4.2 P2.6 62 REsET 12 XTAL2 ADll/P4.3 Pl.7 63 EXTINT/P2.2 13 14 CLKOUT 29 30 45 46 ADl21P4.4 47 Pl.6 64 TEsT 31 AD13/P4.5 46 Pl.5 65 VPD VREF 15 INST 32 AD141P4.8 49 HSOl 66 ANGND 16 ALE 33 AD15/P4.7 50 HSOO 67 ACH4/PO.4 17 RD 34 T2CLKlP2.3 51 HSI3/HS05 68 ACH5/PO.5 * Top View Looking Through Package 24-9 DOMESTIC SALES OFFICES __V fLORIDA _ ~'r:oo~. Street - =.,.~ South Suite 170 ¥~:~.:~~02 AIIIZOIfA Intel Corp 11225 N. 28th Drive Suite 2140 Phoenix 85029 Tel (602) 869-4980 Intel Corp 1161 N EI Dorado Place Suite 301 Tuceon 95715 Tel (602) 299-6815 - QED ElectronIcs 139 Terwood: Road Willow Grove 19090 Tel (215) 657·5600 ~ (~N).£~o:' _ ~ual ParKway Sulll 200 Norcroes 30092 Tal' (404) 449-0541 B 295 ....- _ TUAI IIEXICO Intel Corp.12300 Ford Road Boulevard N E. YOIIK Intel Corp2550 Gulf Road Suite 815 AoUtng Meadows 60008 , Parl <: 51508. FRANCE Ge.....m Z.I de A,.,... +~J~) KI~ Bytech Ltd Unit 57 london Road Earley, ReadIng Berkstiire Tel' (0734) 61031 TELEX 848215 Comway' Mlcrosystems Ltd Market Street UK·Bracknell, Berkst)lre ~~t~~ 8~:~bl 55333 Jermyn Industnes Vestry Estate Sevenoaks, Kent Tel' (0732)' 450144 TELEX 95142 MEDL ,pp ., ITT SESA ~~3~~ '{Bgel 21, 6 PISO Tel (34) 14 1954 00 TELEX 27461 ,P88 91943 HerlistraS$8 31 CH-8304 .Weillsellen Tel tOt) 830 50 40 TELEX ~6788 INOEL CH SWEDEN AS Gosta Backstrom Box 12009 ~~h~scnhol~ Tel (8) 541 080 TELEX 10135 Metrologle ,La 'Tour d' Asnteres 4, Avenue Laurent Cely 926Q6..Asnleres Tel (1) 790 62 40 TELEX 611·448 1TALY Tekelec AJrtronic B,P 2 51 E/5 Tel. (02) 82470 TELEX 311351 12 YUGOBLAVIA. inter _. - INTERNATIONAL SALES OFFICES _.. NSW, 2065 ~=..r:,:) leYeI~ Highway Crowe Nest, NSW, 2085 Tel' 011-61·2·957·2744 TELEX 79()..20097 FAX 011-61·2-957-274<4 _KONG lnlel Semlcqndootor Ltd,- 1701-3 ~Cen1re tel~5-215-311 TWX 804m ITLHK -- ~,J~'i Intel Japan K.t< 5-6 TCiModai, T~ 300-26 TELEX 03658-180 InIeI Japan KI<,-' ~:~1.Js~'OP 2·1·15 Naka-machi ~~21~'S4 t:t=:as'\'rkl-Mn ~:ug~~m I!.a ~~3-9"1:~ InIeI SemIconc:IuctIr "* ltd ~~~y~U -Seoul 150 m~~l:~l~tr..Kb . InIOI ...".. KK' 2·51·2 I r:r~~:~ Tel 011-852-5-0-2232,22 TWX' 39114 JINMI HX ~~~I ~~IdCen!re - . . (Conl'O) ~~~~7~ Cho Nihoobashl CttucH Tel 011..81)2-5-833-0222 TWX 74166 SCHMC HK _ee.. . 1041109C Nirmal Industr181 Eatale Sion (E) ~11.~.4e1.70 TElEX- 011-71447 MOEV IN ~o:r lcotron SA ~5~~AkoM: 3650-6 Andar Tel 011·55-11-833-2572 TELEX 1122274 ICOTBR CHILE OIN ~~~. ~ehna C&ell1a 6055. ,="r Nager Almlak 1ntemItIona1. Inc (Agent) IRAZJL 204 ",-56-2-277-564 TELEX- 352.()()Q3 ~~~~""t""d."", 3801 Kennett PIke Wilmington, Delaware 19807 465 S Mathilda Suite 302 Avenue ~Tot·,~~ SMa~iS =rn ~o 't, "8' Mauldin, South _.. -ltd. C < -- Po. Jang J-TEK CorporatiOn ~~3, ~c.cio-~"! PeneIon 8ktg, ~"P"l'~po-K" Tel 011..$2-2-782-8039 TElEX' KootGIT K25299 ....,.~- CaroIi", 29657 \~""il;g."AddO:) Uberty, South carolina 29657 -- ... K«am " S_ Tet (7 TWX' _ ZI.WIIID DIGIT LSA Mcl.aan Information Technology lid <459 ~ P818 Road, Newmarket, ~~1~~ ._.. Tel. 011-64-9-501-219, 501-801, 587037 TELEX, NZ21570 THERMAl ~=:rltd. .....,.,.... 00Ien.. Tel: 01t-92-21..s30-30617 TELEX. 2443<4 GAFAA PK DOMESTIC SERVICE OFFICES· - . . . - (eoardl =~Avenue Suitt 205 ' ~.(7J:~~~%7 - ~~Orlve ~ Mallland 32151 ~<38,~~W '.... Corp 2000 E 4th Street SUIte 110 Santa Ana 92705 Suite 150 ~: (':t4~~~ '''''' 5530 Corp. N. CortJIn AvenYe Suitt 120 Tarzana 91356 - Tel: (213) 708-0333 ~~ ParkwlJ)' ."'" 200 30092Norcron rei. (4(4) 441:'171 Denver 80222 ~.(~3J~~~:,er ~To'a ~ 611y -_V Sulle 143 Expressway f:rh (3~:r ~~'5 - Overland Park 68210 Co~ =~C:rlll '''''' Edllon 08817 Tel: (201) 225-3000 -....-.... Tel: (913) 1}42-8080 !IIAMLANO -..cur OHIO Road 1 8-3130 Avenue T . TWX: 01824 256-1800 3-6333 ":,l' . . . . . . .V..... ~': ;:,g CtMer Bulle 301 W Rolling Meadows 60008 ~,(3J~~l~~;~ ~~ EIam Young Parkway HIIIeboro 97123 Tel (503) 681-8080 BouIevatd ~~~31a) \~~~S40 Sulle 815 Sulle 170 720 Cheny --- -- ~~c:: Road Intel Corp. 8400 W. 110th Street ''''''~ r..? .. - 1EIIAI f"t.,.,...,l108 TWX. 91 52 54..... 74·1347 w_ - \'JJo~ SuhI 380 "'"" . Dallal 75234 Tel: (214) 241-8087 TWX: 910·860·5817 Intel Corp 110 11ath Awnue NE. Suite' 510 Bel..... 98004 Tel' 1-800-525-5580 TWX: 910-443·3002 ~~ ~\mnyaJope Suitt 130 BrocIdleld 53005 Tel (414) 784-8081 Road
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.3 Linearized : No XMP Toolkit : Adobe XMP Core 4.2.1-c043 52.372728, 2009/01/18-15:56:37 Create Date : 2014:09:15 18:38:16-08:00 Modify Date : 2014:09:15 18:26:30-07:00 Metadata Date : 2014:09:15 18:26:30-07:00 Producer : Adobe Acrobat 9.55 Paper Capture Plug-in Format : application/pdf Document ID : uuid:6ab8d176-0ea4-ee4f-8095-d274c2621bc3 Instance ID : uuid:7cbe694b-bc4b-1040-be0e-d75447908f93 Page Layout : SinglePage Page Mode : UseNone Page Count : 860EXIF Metadata provided by EXIF.tools