Page 1 :
Downloaded From : www.EasyEngineering.net, , ww, , w.E, a, , syE, , ngi, , nee, , rin, , g.n, , et, , **Note: Other Websites/Blogs Owners Please do not Copy (or) Republish, this Materials without Legal Permission of the Publishers., , **Disclimers : EasyEngineering not the original publisher of this Book/Material, on net. This e-book/Material has been collected from other sources of net., Downloaded From : www.EasyEngineering.net
Page 3 :
Downloaded From : www.EasyEngineering.net, , The 8051 Microcontroller and Embedded, Systems, Using Assembly and C, Second Edition, , Muhammad Ali Mazidi, Janice Gillispie Mazidi, Rolin D. McKinlay, , ww, w.E, , CONTENTS, , , , , , , , , , , , , , , , , Introduction to Computing, The 8051 Microcontrollers, 8051 Assembly Language Programming, Branch Instructions, I/O Port Programming, 8051 Addressing Modes, Arithmetic & Logic Instructions And Programs, 8051 Programming in C, 8051 Hardware Connection and Hex File, 8051 Timer/Counter Programming in Assembly and C, 8051 Serial Port Programming in Assembly and C, Interrupts Programming in Assembly and C, 8051 Interfacing to External Memory, 8051 Real World Interfacing I: LCD,ADC AND, SENSORS, LCD and Keyboard Interfacing, 8051 Interfacing with 8255, , asy, En, gin, ee, , rin, g.n, et, , Downloaded From : www.EasyEngineering.net
Page 6 :
Downloaded From : www.EasyEngineering.net, , NUMBERING, AND CODING, SYSTEMS, , , , Human beings use base 10 (decimal), arithmetic, , ww, w.E, , Decimal and, Binary Number, Systems, , ¾, , , , There are 10 distinct symbols, 0, 1, 2, …,, 9, , asy, , Computers use base 2 (binary) system, ¾, ¾, , There are only 0 and 1, These two binary digits are commonly, referred to as bits, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 3, , Downloaded From : www.EasyEngineering.net
Page 7 :
Downloaded From : www.EasyEngineering.net, , NUMBERING, AND CODING, SYSTEMS, , , , Divide the decimal number by 2, repeatedly, Keep track of the remainders, Continue this process until the quotient, becomes zero, Write the remainders in reverse order, to obtain the binary number, , ww, w.E, , Converting, from Decimal, to Binary, , , , , , , asy, , En, , gin, , Ex. Convert 2510 to binary, Quotient, Remainder, 25/2 =, 12, 1, LSB (least significant bit), 12/2 =, 6, 0, 6/2 =, 3, 0, 3/2 =, 1, 1, 1/2 =, 0, 1, MSB (most significant bit), , eer, i, , ng., , Therefore 2510 = 110012, HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 4, , Downloaded From : www.EasyEngineering.net
Page 8 :
Downloaded From : www.EasyEngineering.net, , , , NUMBERING, AND CODING, SYSTEMS, , Know the weight of each bit in a binary, number, Add them together to get its decimal, equivalent, , ww, w.E, , , asy, , Converting, Ex. Convert 110012 to decimal, from Binary to, Weight:, 24, 23, 22, Decimal, Digits:, 1, 1, 0, Sum:, , , En, 16 +, , gin, 8+, , 0+, , eer, i, , 20, , 0, , 1, , 0+, , 1 = 2510, , Use the concept of weight to convert a, decimal number to a binary directly, , Ex. Convert 3910 to binary, , 32 + 0 + 0 + 4 + 2 + 1 = 39, Therefore, 3910 = 1001112, HANEL, , 21, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 5, , Downloaded From : www.EasyEngineering.net
Page 9 :
Downloaded From : www.EasyEngineering.net, , NUMBERING, AND CODING, SYSTEMS, , , , Base 16, the, , system,, ww hexadecimal, is used as a, w.Econvenient, representation of, a, synumbers, binary, En, gin, eer, i, , Hexadecimal, System, , ¾, , ex., , It is much easier to, represent a string of 0s, and 1s such as, 100010010110 as its, hexadecimal equivalent of, 896H, , HANEL, , Decimal, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, , Binary, 0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111, , ng., , Hex, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 6, , Downloaded From : www.EasyEngineering.net
Page 10 :
Downloaded From : www.EasyEngineering.net, , NUMBERING, AND CODING, SYSTEMS, , , , To represent a binary number as its, equivalent hexadecimal number, , ww, w.E, , ¾, , Start from the right and group 4 bits at a, time, replacing each 4-bit binary number, with its hex equivalent, , asy, , Converting, between Binary Ex. Represent binary 100111110101 in hex, 1001 1111 0101, and Hex, , g, To convert fromihex, netoe binary, rin, g., =, , , , En, , ¾, , 9, , F, , 5, , Each hex digit is replaced with its 4-bit, binary equivalent, , Ex. Convert hex 29B to binary, =, HANEL, , 2, , 9, , B, , 0010, , 1001, , 1011, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 7, , Downloaded From : www.EasyEngineering.net
Page 11 :
Downloaded From : www.EasyEngineering.net, , NUMBERING, AND CODING, SYSTEMS, , , , Convert to binary first and then, convert to hex, Convert directly from decimal to hex, by repeated division, keeping track of, the remainders, , ww, w.E, , Converting, from Decimal, to Hex, , , , asy, 32, , En, , 16, , 8, , 4, , 2, , 1, , 0, , 1, , 1, , 0, , Ex. Convert 4510 to hex, , gin, , 4510 = 0010 11012 = 2D16, Ex. Convert 62910 to hex, , 1, , eer, i, 1, , 32 + 8 + 4 + 1 = 45, , ng., , 512 256 128 64 32 16 8 4 2 1, 1, , 0, , 0, , 1, , 1, , 1, , net, , 0 1 0 1, , 62910 = 512+64+32+16+4+1 = 0010 0111 01012 = 27516, HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 8, , Downloaded From : www.EasyEngineering.net
Page 12 :
Downloaded From : www.EasyEngineering.net, , NUMBERING, AND CODING, SYSTEMS, , , , Convert from hex to binary and then to, decimal, Convert directly from hex to decimal, by summing the weight of all digits, , ww, w.E, , Converting, from Hex to, Decimal, , , , asy, , Ex. 6B216 = 0110 1011 00102, 1024 512 256 128 64 32 16 8 4 2 1, 1, , 1, , En, 0, , gin, 1, , 0, , 1, , 1, , 0, , 0 1 0, , 1024 + 512 + 128 + 32 + 16 + 2 = 171410, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 9, , Downloaded From : www.EasyEngineering.net
Page 13 :
Downloaded From : www.EasyEngineering.net, , NUMBERING, AND CODING, SYSTEMS, , , , Adding the digits together from the, least significant digits, , ww, w.E, , Addition of Hex, Numbers, , ¾, , If the result is less than 16, write that digit, as the sum for that position, If it is greater than 16, subtract 16 from it, to get the digit and carry 1 to the next, digit, , asy, , ¾, , En, , gin, , Ex. Perform hex addition: 23D9 + 94BE, 23D9, + 94BE, B897, , HANEL, , LSD: 9, 1, 1, MSD: 2, , +, +, +, +, , eer, i, , 14 = 23, 13 + 11 = 25, 3+4=8, 9=B, , 23 – 16 = 7 w/ carry, 25 – 16 = 9 w/ carry, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 10, , Downloaded From : www.EasyEngineering.net
Page 15 :
Downloaded From : www.EasyEngineering.net, , , , NUMBERING, AND CODING, SYSTEMS, , The ASCII (pronounced “ask-E”) code, assigns binary patterns for, , ww, w.E, , ¾, ¾, , ASCII Code, , asy, , ¾, , , , Numbers 0 to 9, All the letters of English alphabet,, uppercase and lowercase, Many control codes and punctuation, marks, , En, , The ASCII system uses 7 bits to, represent each code, , Selected ASCII codes, , HANEL, , gin, , eer, i, , Hex, , Symbol, , Hex, , Symbol, , 41, 42, 43, 44, ..., 59, 5A, , A, B, C, D, ..., Y, Z, , 61, 62, 63, 64, ..., 79, 7A, , a, b, c, d, …, y, z, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 12, , Downloaded From : www.EasyEngineering.net
Page 16 :
Downloaded From : www.EasyEngineering.net, , DIGITAL, PRIMER, , , , Two voltage levels can be represented, as the two digits 0 and 1, Signals in digital electronics have two, distinct voltage levels with built-in, tolerances for variations in the voltage, A valid digital signal should be within, either of the two shaded areas, , ww, w.E, , , Binary Logic, , , , asy, , En, 5, 4, 3, 2, 1, 0, , HANEL, , gin, , Logic 1, , Logic 0, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 13, , Downloaded From : www.EasyEngineering.net
Page 22 :
Downloaded From : www.EasyEngineering.net, , DIGITAL, PRIMER, , , , Decoders, , ww, w.E, , Logic Design, Using Gates, (cont’), , ¾, , Decoders are widely used for address, decoding in computer design, , asy, , Address Decoders, , En, , gin, , Address decoder for 9 (10012), The output will be 1 if and, only if the input is 10012, , HANEL, , Address decoder for 5 (01012), , eer, i, , The output will be 1 if and, only if the input is 01012, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 19, , Downloaded From : www.EasyEngineering.net
Page 24 :
Downloaded From : www.EasyEngineering.net, , INSIDE THE, COMPUTER, , , , The unit of data size, , ww, w.E, , ¾, , Important, Terminology, , ¾, , ¾, , En, , The terms used to describe amounts of, memory in IBM PCs and compatibles, ¾, ¾, ¾, ¾, , HANEL, , 0 or 1, Byte : 8 bits, Nibble : half of a bye, or 4 bits, Word : two bytes, or 16 bits, , asy, , ¾, , , , Bit : a binary digit that can have the value, , gin, , eer, i, , Kilobyte (K): 210 bytes, Megabyte (M) : 220 bytes, over 1 million, Gigabyte (G) : 230 bytes, over 1 billion, Terabyte (T) : 240 bytes, over 1 trillion, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 21, , Downloaded From : www.EasyEngineering.net
Page 25 :
Downloaded From : www.EasyEngineering.net, , INSIDE THE, COMPUTER, , , , CPU (Central Processing Unit), , ww I/O (Input/output) devices, w.E, Memory, asy, En, gin, eer, ing, ., , Internal, Organization of, Computers, , ¾, , Execute information stored in memory, , ¾, , Provide a means of communicating with, CPU, , ¾, , RAM (Random Access Memory) –, temporary storage of programs that, computer is running, , , , , , The data is lost when computer is off, , ¾, , ROM (Read Only Memory) – contains, programs and information essential to, operation of the computer, , The information cannot be changed by use,, and is not lost when power is off, – It is called nonvolatile memory, , net, , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 22, , Downloaded From : www.EasyEngineering.net
Page 27 :
Downloaded From : www.EasyEngineering.net, , INSIDE THE, COMPUTER, , , , The CPU is connected to memory and, I/O through strips of wire called a bus, , ww, w.E, , ¾, , Internal, Organization of, Computers, (cont’), , Address bus, Data bus, Control bus, , asy, , En, , CPU, , Read/, Write, , HANEL, , Carries information from place to place, , RAM, , gin, , Address bus, , ROM, , Printer, , eer, i, , Data bus, Control bus, , Disk, , Monitor, , ng., , Keyboard, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 24, , Downloaded From : www.EasyEngineering.net
Page 28 :
Downloaded From : www.EasyEngineering.net, , INSIDE THE, COMPUTER, , , , Address bus, , ww, w.E, , ¾, , Internal, Organization of, Computers, , The address assigned to a given device must, be unique, The CPU puts the address on the address bus,, and the decoding circuitry finds the device, , asy, , (cont’), , , , E, Data bus n, ¾, , , , gin, , The CPU either gets data from the device, or sends data to it, , Control bus, ¾, , HANEL, , For a device (memory or I/O) to be, recognized by the CPU, it must be, assigned an address, , eer, i, , ng., , Provides read or write signals to the, device to indicate if the CPU is asking for, information or sending it information, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 25, , Downloaded From : www.EasyEngineering.net
Page 29 :
Downloaded From : www.EasyEngineering.net, , INSIDE THE, COMPUTER, , , , The more data buses available, the, better the CPU, , ww, w.EMore data buses mean a more, expensive, asy CPU and computer, En, gibidirectional, Data buses are, nee, The processing power ofri, an, computer is, g.n, related to the size of its buses, et, , More about, Data Bus, , ¾, , Think of data buses as highway lanes, , ¾, , The average size of data buses in CPUs, varies between 8 and 64, , ¾, , To receive or send data, , , , , , , , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 26, , Downloaded From : www.EasyEngineering.net
Page 30 :
Downloaded From : www.EasyEngineering.net, , INSIDE THE, COMPUTER, , , , The more address buses available, the, larger the number of devices that can, be addressed, The number of locations with which a, CPU can communicate is always equal, to 2x, where x is the address lines,, regardless of the size of the data bus, , ww, w.E, , More about, Address Bus, , , , asy, , ¾, , ¾, , , , HANEL, , En, , gin, , ex. a CPU with 24 address lines and 16, data lines can provide a total of 224 or 16M, bytes of addressable memory, Each location can have a maximum of 1, byte of data, since all general-purpose, CPUs are byte addressable, , eer, i, , ng., , n, The address bus is unidirectional e, t, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 27, , Downloaded From : www.EasyEngineering.net
Page 31 :
Downloaded From : www.EasyEngineering.net, , INSIDE THE, COMPUTER, , , , For the CPU to process information,, the data must be stored in RAM or, ROM, which are referred to as primary, , ww memory, w.EROM provides information that is fixed, and permanent, asy, E, RAM stores, information that is not, permanentn, and, gicann change with time, eer, ing, .ne, t, , CPU’s Relation, to RAM and, ROM, , , , ¾, , Tables or initialization program, , ¾, , Various versions of OS and application, packages, CPU gets information to be processed, , , , ¾, , first form RAM (or ROM), if it is not there, then seeks it from a mass, storage device, called secondary memory, and, transfers the information to RAM, , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 28, , Downloaded From : www.EasyEngineering.net
Page 32 :
Downloaded From : www.EasyEngineering.net, , INSIDE THE, COMPUTER, , , , Registers, , ww, w.E, , Inside CPUs, , ¾, , The CPU uses registers to store, information temporarily, Values to be processed, Address of value to be fetched from memory, , asy, , ¾, , In general, the more and bigger the, registers, the better the CPU, , En, , gin, , Registers can be 8-, 16-, 32-, or 64-bit, The disadvantage of more and bigger registers, is the increased cost of such a CPU, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 29, , Downloaded From : www.EasyEngineering.net
Page 33 :
Downloaded From : www.EasyEngineering.net, , Inside CPUs, (cont’), , Program Counter, , asy, , Flags, , Instruction Register, , En, ALU, , gin, , Instruction decoder,, timing, and control, , Internal, buses, , eer, i, , Register A, , ng., , Register B, Register C, , Register D, HANEL, , Control Bus Data Bus, , ww, w.E, , Address Bus, , INSIDE THE, COMPUTER, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 30, , Downloaded From : www.EasyEngineering.net
Page 34 :
Downloaded From : www.EasyEngineering.net, , INSIDE THE, COMPUTER, , , , ALU (arithmetic/logic unit), , ww, w.EProgram counter, asy, En, gin, Instruction decoderee, ri, , Inside CPUs, (cont’), , ¾, , Performs arithmetic functions such as add,, subtract, multiply, and divide, and logic, functions such as AND, OR, and NOT, , ¾, , Points to the address of the next, instruction to be executed, , , , As each instruction is executed, the program, counter is incremented to point to the address, of the next instruction to be executed, , , , ¾, , ng., , Interprets the instruction fetched into the, CPU, , net, , A CPU capable of understanding more, instructions requires more transistors to design, HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 31, , Downloaded From : www.EasyEngineering.net
Page 35 :
Downloaded From : www.EasyEngineering.net, , INSIDE THE, COMPUTER, , Ex. A CPU has registers A, B, C, and D and it has an 8-bit, data bus and a 16-bit address bus. The CPU can access, memory from addresses 0000 to FFFFH, Assume that the code for the CPU to move a value to, register A is B0H and the code for adding a value to, register A is 04H, The action to be performed by the CPU is to put 21H into, register A, and then add to register A values 42H and 12H, , ww, w.E, , Internal, Working of, Computers, , asy, , ..., , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 32, , Downloaded From : www.EasyEngineering.net
Page 36 :
Downloaded From : www.EasyEngineering.net, , INSIDE THE, COMPUTER, , Ex. (cont’), Action, , Code, , Data, , Move value 21H into reg. A, Add value 42H to reg. A, Add value 12H to reg. A, , B0H, 04H, 04H, , 21H, 42H, 12H, , ww, w.E, , Internal, Working of, Computers, (cont’), , 1400, 1401, 1402, 1403, 1404, 1405, 1406, , ..., , HANEL, , asy, , Mem. addr., , Contents of memory address, , En, , (B0) code for moving a value to register A, (21) value to be moved, (04) code for adding a value to register A, (42) value to be added, (04) code for adding a value to register A, (12) value to be added, (F4) code for halt, , gin, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 33, , Downloaded From : www.EasyEngineering.net
Page 37 :
Downloaded From : www.EasyEngineering.net, , Ex. (cont’), The actions performed by CPU are as follows:, 1. The program counter is set to the value 1400H,, indicating the address of the first instruction code to, be executed, , INSIDE THE, COMPUTER, , ww, w.E, , Internal, Working of, Computers, , 2., , asy, , ¾, , (cont’), , The CPU puts 1400H on address bus and sends it, out, , , ¾, , 以動畫表示, , HANEL, , gin, , The memory circuitry finds the location, , The CPU activates the READ signal, indicating to, memory that it wants the byte at location 1400H, , , ..., , En, , eer, i, , This causes the contents of memory location, 1400H, which is B0, to be put on the data bus and, brought into the CPU, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 34, , Downloaded From : www.EasyEngineering.net
Page 38 :
Downloaded From : www.EasyEngineering.net, , INSIDE THE, COMPUTER, , Ex. (cont’), , ww, w.E, 3., , ¾, ¾, , Internal, Working of, Computers, , The CPU decodes the instruction B0, The CPU commands its controller circuitry to bring, into register A of the CPU the byte in the next, memory location, , asy, , , (cont’), , ¾, , HANEL, , En, , The program counter points to the address of the, next instruction to be executed, which is 1402H, , , ..., , The value 21H goes into register A, , gin, , Address 1402 is sent out on the address bus to, fetch the next instruction, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 35, , Downloaded From : www.EasyEngineering.net
Page 39 :
Downloaded From : www.EasyEngineering.net, , INSIDE THE, COMPUTER, , Ex. (cont’), , ww, w.E, 4., , ¾, ¾, , Internal, Working of, Computers, , From memory location 1402H it fetches code 04H, After decoding, the CPU knows that it must add to, the contents of register A the byte sitting at the, next address (1403), After the CPU brings the value (42H), it provides, the contents of register A along with this value to, the ALU to perform the addition, , asy, , ¾, , (cont’), , , , , ..., , HANEL, , En, , gin, , It then takes the result of the addition from the, ALU’s output and puts it in register A, The program counter becomes 1404, the address, of the next instruction, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 36, , Downloaded From : www.EasyEngineering.net
Page 40 :
Downloaded From : www.EasyEngineering.net, , INSIDE THE, COMPUTER, , Ex. (cont’), , ww, w.E, 5., , ¾, , Internal, Working of, Computers, (cont’), , Address 1404H is put on the address bus and the, code is fetched into the CPU, decoded, and, executed, , asy, , , , 6., , ¾, ¾, , This code is again adding a value to register A, The program counter is updated to 1406H, , En, , gin, , The contents of address 1406 are fetched in and, executed, This HALT instruction tells the CPU to stop, incrementing the program counter and asking for, the next instruction, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 37, , Downloaded From : www.EasyEngineering.net
Page 45 :
Downloaded From : www.EasyEngineering.net, , MICROCONTROLLERS, AND, EMBEDDED, PROCESSORS, , , , General-purpose microprocessors, , ww, w.E, , Microcontroller, vs. GeneralPurpose, Microprocessor, , ¾, ¾, , asy, , ¾, , , , En, , Microcontroller, ¾, , (cont’), , ¾, , HANEL, , Must add RAM, ROM, I/O ports, and, timers externally to make them functional, Make the system bulkier and much more, expensive, Have the advantage of versatility on the, amount of RAM, ROM, and I/O ports, , gin, , The fixed amount of on-chip ROM, RAM,, and number of I/O ports makes them ideal, for many applications in which cost and, space are critical, In many applications, the space it takes,, the power it consumes, and the price per, unit are much more critical considerations, than the computing power, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 5, , Downloaded From : www.EasyEngineering.net
Page 46 :
Downloaded From : www.EasyEngineering.net, , MICROCONTROLLERS, AND, EMBEDDED, PROCESSORS, , , , An embedded product uses a, microprocessor (or microcontroller) to, do one task and one task only, , ww, w.E, , Microcontrollers, for Embedded, Systems, , ¾, , , , There is only one application software that, is typically burned into ROM, , asy, , A PC, in contrast with the embedded, system, can be used for any number of, applications, ¾, , ¾, , En, , gin, , It has RAM memory and an operating, system that loads a variety of applications, into RAM and lets the CPU run them, A PC contains or is connected to various, embedded products, , eer, i, , ng., , net, , Each one peripheral has a microcontroller inside, it that performs only one task, HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 6, , Downloaded From : www.EasyEngineering.net
Page 47 :
Downloaded From : www.EasyEngineering.net, , MICROCONTROLLERS, AND, EMBEDDED, PROCESSORS, , , , Home, , ww, w.E, , Microcontrollers, for Embedded, Systems, , ¾, , , , asy, , Office, ¾, , (cont’), , , , En, , gin, , Telephones, computers, security systems, fax, machines, microwave, copier, laser printer, color, printer, paging, , Auto, ¾, , HANEL, , Appliances, intercom, telephones, security systems,, garage door openers, answering machines, fax, machines, home computers, TVs, cable TV tuner,, VCR, camcorder, remote controls, video games,, cellular phones, musical instruments, sewing, machines, lighting control, paging, camera, pinball, machines, toys, exercise equipment, , eer, i, , ng., , Trip computer, engine control, air bag, ABS,, instrumentation, security system, transmission, control, entertainment, climate control, cellular, phone, keyless entry, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 7, , Downloaded From : www.EasyEngineering.net
Page 48 :
Downloaded From : www.EasyEngineering.net, , MICROCONTROLLERS, AND, EMBEDDED, PROCESSORS, , , , Many manufactures of general-purpose, microprocessors have targeted their, microprocessor for the high end of the, embedded market, , ww, w.E, , x86 PC, Embedded, Applications, , , , , , HANEL, , There are times that a microcontroller is, inadequate for the task, , a, s, Wheny, aE, company targets a generalpurpose microprocessor, for the, n, gin it optimizes the, embedded market,, processor used for embedded, systems, e, e, r, Very often the terms embedded, i, ngare. used, processor and microcontroller, interchangeably, net, ¾, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 8, , Downloaded From : www.EasyEngineering.net
Page 49 :
Downloaded From : www.EasyEngineering.net, , MICROCONTROLLERS, AND, EMBEDDED, PROCESSORS, , , , One of the most critical needs of an, embedded system is to decrease, power consumption and space, In high-performance embedded, processors, the trend is to integrate, more functions on the CPU chip and let, designer decide which features he/she, wants to use, In many cases using x86 PCs for the, high-end embedded applications, , ww, w.E, , x86 PC, Embedded, Applications, (cont’), , , , asy, , En, , , , ¾, , gin, , eer, i, , ng., , Saves money and shortens development, time, , net, , A vast library of software already written, Windows is a widely used and well understood, platform, HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 9, , Downloaded From : www.EasyEngineering.net
Page 51 :
Downloaded From : www.EasyEngineering.net, , MICROCONTROLLERS, AND, EMBEDDED, PROCESSORS, , , , Meeting the computing needs of the, task at hand efficiently and cost, effectively, , ww, w.E, , Criteria for, Choosing a, Microcontroller, , ¾, , asy, , ¾, ¾, ¾, ¾, ¾, , ¾, HANEL, , Speed, Packaging, Power consumption, The amount of RAM and ROM on chip, The number of I/O pins and the timer on, chip, How easy to upgrade to higherperformance or lower power-consumption, versions, Cost per unit, , En, , gin, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 11, , Downloaded From : www.EasyEngineering.net
Page 53 :
Downloaded From : www.EasyEngineering.net, , , , OVERVIEW OF, 8051 FAMILY, , Intel introduced 8051, referred as MCS51, in 1981, , ww, w.E, , ¾, , 8051, Microcontroller, , The CPU can work on only 8 bits of data at a, time, , The 8051 had, , asy, , ¾, , , , HANEL, , The 8051 is an 8-bit processor, , , , , , , , , 128 bytes of RAM, 4K bytes of on-chip ROM, Two timers, One serial port, Four I/O ports, each 8 bits wide, 6 interrupt sources, , En, , gin, , eer, The 8051 became widely ipopular, after, n, allowing other manufactures g, to make, ., nebutt, and market any flavor of the 8051,, remaining code-compatible, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 13, , Downloaded From : www.EasyEngineering.net
Page 55 :
Downloaded From : www.EasyEngineering.net, , OVERVIEW OF, 8051 FAMILY, , , , The 8051 is a subset of the 8052, The 8031 is a ROM-less 8051, , ww, w.E, , , ¾, , 8051 Family, , ¾, , Add external ROM to it, You lose two ports, and leave only 2 ports, for I/O operations, , asy, , En, , Feature, , gin, , 8051 8052 8031, , ROM (on-chip program, space in bytes), RAM (bytes), Timers, I/O pins, , HANEL, , 4K, , 8K, , 0K, , 128, , 256, , 128, , 3, , 2, , 32, , 32, , eer, i, 2, , 32, , Serial port, , 1, , Interrupt sources, , 6, , ng., 1, 8, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 1, 6, , 15, , Downloaded From : www.EasyEngineering.net
Page 59 :
Downloaded From : www.EasyEngineering.net, , INSIDE THE, 8051, , , , Register are used to store information, temporarily, while the information, could be, , ww, w.E, , Registers, , ¾, , asy, , ¾, , , , a byte of data to be processed, or, an address pointing to the data to be, fetched, , En, , The vast majority of 8051 register are, 8-bit registers, ¾, , gin, , eer, i, , There is only one data type, 8 bits, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 2, , Downloaded From : www.EasyEngineering.net
Page 63 :
Downloaded From : www.EasyEngineering.net, , INSIDE THE, 8051, , , , Notes on programming, , ww, w.E, , MOV, Instruction, (cont’), , ¾, , Value (proceeded with #) can be loaded, directly to registers A, B, or R0 – R7, MOV A, #23H, MOV R5, #0F9H, , asy, , Add a 0 to indicate that, F is a hex number and, not a letter, , If it’s not preceded with #,, it means to load from a, memory location, , ¾, , En, , gin, , If values 0 to F moved into an 8-bit, register, the rest of the bits are assumed, all zeros, , eer, i, , “MOV A, #5”, the result will be A=05; i.e., A, = 00000101 in binary, ¾, , ng., , MOV, HANEL, , net, , Moving a value that is too large into a, register will cause an error, , A, #7F2H ; ILLEGAL: 7F2H>8 bits (FFH), , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 6, , Downloaded From : www.EasyEngineering.net
Page 64 :
Downloaded From : www.EasyEngineering.net, , ;ADD the source operand, , ADD A, source, , INSIDE THE, 8051, , ww, w.E, , ¾, , ADD, Instruction, , ¾, , ;to the accumulator, The ADD instruction tells the CPU to add the source, byte to register A and put the result in register A, Source operand can be either a register or, immediate data, but the destination must always, be register A, , asy, , “ADD R4, A” and “ADD R2, #12H” are invalid, since A must be the destination of any arithmetic, operation, , En, , There are always, many ways to write, the same program,, depending on the, registers used, HANEL, , gin, , MOV A, #25H, ;load 25H into A, MOV R2, #34H, ;load 34H into R2, ADD A, R2 ;add R2 to Accumulator, ;(A = A + R2), , eer, i, , ng., , MOV A, #25H, ;load one operand, ;into A (A=25H), ADD A, #34H, ;add the second, ;operand 34H to A, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 7, , Downloaded From : www.EasyEngineering.net
Page 65 :
Downloaded From : www.EasyEngineering.net, , 8051, ASSEMBLY, PROGRAMMING, , , , In the early days of the computer,, programmers coded in machine language,, consisting of 0s and 1s, , ww, w.E, , Structure of, Assembly, Language, , ¾, , , , Tedious, slow and prone to error, , Assembly languages, which provided, , asy, , mnemonics for the machine code instructions,, plus other features, were developed, ¾, , , , En, , An Assembly language program consist of a series, of lines of Assembly language instructions, , eer, i, , Assembly language is referred to as a low-, , level language, ¾, , HANEL, , gin, , ng., , It deals directly with the internal structure of the, CPU, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 8, , Downloaded From : www.EasyEngineering.net
Page 66 :
Downloaded From : www.EasyEngineering.net, , , , 8051, ASSEMBLY, PROGRAMMING, , Assembly language instruction includes, , ww, w.E, , Structure of, Assembly, Language, , ¾, , ¾, , , , a mnemonic (abbreviation easy to remember), the commands to the CPU, telling it what those, to do with those items, , optionally followed by one or two operands, , a, syEAssembly language program is, A given, a series of n, statements, or lines, gin, eer, ing, .ne, t, ¾, , the data items being manipulated, , Assembly language instructions, Tell the CPU what to do, , ¾, , Directives (or pseudo-instructions), Give directions to the assembler, , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 9, , Downloaded From : www.EasyEngineering.net
Page 68 :
Downloaded From : www.EasyEngineering.net, , ASSEMBLING, AND RUNNING, AN 8051, PROGRAM, , , , The step of Assembly language, program are outlines as follows:, , ww, w.E, , 1), , First we use an editor to type a program,, many excellent editors or word, processors are available that can be used, to create and/or edit the program, , asy, , , , En, , Notice that the editor must be able to produce, an ASCII file, For many assemblers, the file names follow, the usual DOS conventions, but the source file, has the extension “asm“ or “src”, depending, on which assembly you are using, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 11, , Downloaded From : www.EasyEngineering.net
Page 69 :
Downloaded From : www.EasyEngineering.net, , ASSEMBLING, AND RUNNING, AN 8051, PROGRAM, , 2), , ww, w.E, (cont’), , The “asm” source file containing the, program code created in step 1 is fed to, an 8051 assembler, , , , asy, , , 3), , En, , gin, , Assembler require a third step called, , linking, , , , HANEL, , The assembler converts the instructions into, machine code, The assembler will produce an object file and, a list file, The extension for the object file is “obj” while, the extension for the list file is “lst”, , eer, i, , The linker program takes one or more object, code files and produce an absolute object file, with the extension “abs”, This abs file is used by 8051 trainers that, have a monitor program, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 12, , Downloaded From : www.EasyEngineering.net
Page 70 :
Downloaded From : www.EasyEngineering.net, , ASSEMBLING, AND RUNNING, AN 8051, PROGRAM, , 4), , ww, w.E, (cont’), , Next the “abs” file is fed into a program, called “OH” (object to hex converter), which creates a file with extension “hex”, that is ready to burn into ROM, , , , This program comes with all 8051 assemblers, Recent Windows-based assemblers combine, step 2 through 4 into one step, , asy, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 13, , Downloaded From : www.EasyEngineering.net
Page 73 :
Downloaded From : www.EasyEngineering.net, , PROGRAM, COUNTER AND, ROM SPACE, , , , The program counter points to the, address of the next instruction to be, executed, , ww, w.E, , ¾, , Program, Counter, , , , As the CPU fetches the opcode from the, program ROM, the program counter is, increasing to point to the next instruction, , asy, , En, , The program counter is 16 bits wide, ¾, , gin, , This means that it can access program, addresses 0000 to FFFFH, a total of 64K, bytes of code, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 16, , Downloaded From : www.EasyEngineering.net
Page 74 :
Downloaded From : www.EasyEngineering.net, , PROGRAM, COUNTER AND, ROM SPACE, , , , All 8051 members start at memory, address 0000 when they’re powered, up, , ww, w.E, , ¾, , Power up, , Program Counter has the value of 0000, The first opcode is burned into ROM, address 0000H, since this is where the, 8051 looks for the first instruction when it, is booted, We achieve this by the ORG statement in, the source program, , asy, , ¾, , En, , ¾, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 17, , Downloaded From : www.EasyEngineering.net
Page 76 :
Downloaded From : www.EasyEngineering.net, , PROGRAM, COUNTER AND, ROM SPACE, , , , After the program is burned into ROM,, the opcode and operand are placed in, ROM memory location starting at 0000, , ww, w.E, , Placing Code in, ROM, (cont’), , ROM contents, , asy, , En, , Address, , Code, , 0000, , 7D, , 0001, , 25, , 0002, , 7F, , 0003, , 34, , 0004, , 74, , gin, 0008, , eer, i, , 0009, , 12, , 000A, , 80, , 000B, , FE, , 0005, 0006, 0007, , HANEL, , 00, , 2D, 2F, , 24, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 19, , Downloaded From : www.EasyEngineering.net
Page 77 :
Downloaded From : www.EasyEngineering.net, , PROGRAM, COUNTER AND, ROM SPACE, , , , A step-by-step description of the, action of the 8051 upon applying, power on it, , ww, w.E, , 1., , Executing, Program, , When 8051 is powered up, the PC has, 0000 and starts to fetch the first opcode, from location 0000 of program ROM, , asy, , , , 2., , gin, , eer, i, , ng., , Upon executing the opcode 7F, the value, 34H is moved into R7, , , HANEL, , En, , Upon executing the opcode 7D, the CPU, fetches the value 25 and places it in R5, Now one instruction is finished, and then the, PC is incremented to point to 0002, containing, opcode 7F, , The PC is incremented to 0004, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 20, , Downloaded From : www.EasyEngineering.net
Page 78 :
Downloaded From : www.EasyEngineering.net, , PROGRAM, COUNTER AND, ROM SPACE, , , , ww, w.E, , (cont’), , 3., 4., , Executing, Program, (cont’), , The instruction at location 0004 is, executed and now PC = 0006, After the execution of the 1-byte, instruction at location 0006, PC = 0007, Upon execution of this 1-byte instruction, at 0007, PC is incremented to 0008, , asy, , 5., , , , , En, , gin, , This process goes on until all the instructions, are fetched and executed, The fact that program counter points at the, next instruction to be executed explains some, microprocessors call it the instruction pointer, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 21, , Downloaded From : www.EasyEngineering.net
Page 80 :
Downloaded From : www.EasyEngineering.net, , 8051 DATA, TYPES AND, DIRECTIVES, , , , 8051 microcontroller has only one data, type - 8 bits, , ww, w.E, , ¾, ¾, , Data Type, , The size of each register is also 8 bits, It is the job of the programmer to break, down data larger than 8 bits (00 to FFH,, or 0 to 255 in decimal), The data types can be positive or negative, , asy, , ¾, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 23, , Downloaded From : www.EasyEngineering.net
Page 81 :
Downloaded From : www.EasyEngineering.net, , 8051 DATA, TYPES AND, DIRECTIVES, , , , The DB directive is the most widely, used data directive in the assembler, , ww, w.E, , ¾, ¾, , Assembler, Directives, , It is used to define the 8-bit data, When DB is used to define data, the, numbers can be in decimal, binary, hex,, The “D” after the decimal, ASCII formats, number is optional, but using, , asy, , DATA1:, DATA2:, DATA3:, The Assembler will, convert the numbers DATA4:, into hex, DATA6:, , ORG, DB, DB, DB, ORG, DB, ORG, DB, , Define ASCII strings larger, than two characters, HANEL, , En, , “B” (binary) and “H”, (hexadecimal) for the others is, 500H, required, 28, ;DECIMAL (1C in Hex), 00110101B, ;BINARY (35 in Hex), 39H, ;HEX, 510H, Place ASCII in quotation marks, The;ASCII, AssemblerNUMBERS, will assign ASCII, “2591”, code for the numbers or characters, 518H, “My name is Joe”, ;ASCII CHARACTERS, , gin, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 24, , Downloaded From : www.EasyEngineering.net
Page 82 :
Downloaded From : www.EasyEngineering.net, , 8051 DATA, TYPES AND, DIRECTIVES, , , , ORG (origin), , ww, w.E, , ¾, ¾, , Assembler, Directives, (cont’), , , , The ORG directive is used to indicate the, beginning of the address, The number that comes after ORG can be, either in hex and decimal, , asy, , If the number is not followed by H, it is decimal, and the assembler will convert it to hex, , END, ¾, ¾, , En, , gin, , This indicates to the assembler the end of, the source (asm) file, The END directive is the last line of an, 8051 program, , eer, i, , ng., , Mean that in the code anything after the END, directive is ignored by the assembler, , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 25, , Downloaded From : www.EasyEngineering.net
Page 83 :
Downloaded From : www.EasyEngineering.net, , 8051 DATA, TYPES AND, DIRECTIVES, , , , EQU (equate), , ww, w.E, , ¾, ¾, , Assembler, directives, (cont’), , This is used to define a constant without, occupying a memory location, The EQU directive does not set aside, storage for a data item but associates a, constant value with a data label, , asy, , En, , When the label appears in the program, its, constant value will be substituted for the label, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 26, , Downloaded From : www.EasyEngineering.net
Page 84 :
Downloaded From : www.EasyEngineering.net, , 8051 DATA, TYPES AND, DIRECTIVES, , , , EQU (equate), , ww, w.E, , Assembler, directives, (cont’), , ¾, , (cont’), , Assume that there is a constant used in, many different places in the program, and, the programmer wants to change its value, throughout, , asy, , By the use of EQU, one can change it once and, the assembler will change all of its occurrences, , En, , COUNT, ..., MOV, , gin, , EQU 25, ...., R3, #COUNT, , Use EQU for the, counter constant, , eer, i, , ng., , net, , The constant is used to, load the R3 register, , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 27, , Downloaded From : www.EasyEngineering.net
Page 85 :
Downloaded From : www.EasyEngineering.net, , FLAG BITS AND, PSW REGISTER, , , , The program status word (PSW), register, also referred to as the flag, register, is an 8 bit register, , ww, w.E, , Program Status, Word, , ¾, , Only 6 bits are used, , asy, , These four are CY (carry), AC (auxiliary carry), P, (parity), and OV (overflow), – They are called conditional flags, meaning, that they indicate some conditions that, resulted after an instruction was executed, The PSW3 and PSW4 are designed as RS0 and, RS1, and are used to change the bank, , En, , ¾, , HANEL, , gin, , eer, i, , ng., , The two unused bits are user-definable, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 28, , Downloaded From : www.EasyEngineering.net
Page 91 :
Downloaded From : www.EasyEngineering.net, , REGISTER, BANKS AND, STACK, , , , There are 128 bytes of RAM in the, 8051, , ww, w.EThe, 128 bytes are divided into three, different groups as follows:, asy, En, gin, eer, ing, .ne, t, ¾, , Assigned addresses 00 to 7FH, , 1), , A total of 32 bytes from locations 00 to, 1F hex are set aside for register banks, and the stack, A total of 16 bytes from locations 20H to, 2FH are set aside for bit-addressable, read/write memory, A total of 80 bytes from locations 30H to, 7FH are used for read and write storage,, called scratch pad, , , , RAM Memory, Space, Allocation, , 2), , 3), , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 34, , Downloaded From : www.EasyEngineering.net
Page 92 :
Downloaded From : www.EasyEngineering.net, , RAM Allocation in 8051, , 8051, REGISTER, BANKS AND, STACK, , ww, w.E, , RAM Memory, Space, Allocation, (cont’), , 7F, Scratch pad RAM, 30, 2F, , asy, 20, 1F, 18, 17, 10, 0F, , Bit-Addressable RAM, , En, , gin, , Register Bank 3, , eer, i, , Register Bank 2, , ng., , Register Bank 1 (stack), , 08, 07, , Register Bank 0, 00, , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 35, , Downloaded From : www.EasyEngineering.net
Page 93 :
Downloaded From : www.EasyEngineering.net, , 8051, REGISTER, BANKS AND, STACK, , , , These 32 bytes are divided into 4, banks of registers in which each bank, has 8 registers, R0-R7, , ww, w.E, , ¾, , asy, , Register Banks, , En, , ¾, , , , HANEL, , RAM location from 0 to 7 are set aside for, bank 0 of R0-R7 where R0 is RAM location, 0, R1 is RAM location 1, R2 is RAM, location 2, and so on, until memory, location 7 which belongs to R7 of bank 0, It is much easier to refer to these RAM, locations with names such as R0, R1, and, so on, than by their memory locations, , gin, , eer, i, , n, Register bank 0 is the defaultg, when, ., net, 8051 is powered up, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 36, , Downloaded From : www.EasyEngineering.net
Page 97 :
Downloaded From : www.EasyEngineering.net, , 8051, REGISTER, BANKS AND, STACK, , , , The stack is a section of RAM used by, the CPU to store information, temporarily, , ww, w.E, Stack, , ¾, , , , This information could be data or an, address, , asy, , The register used to access the stack, is called the SP (stack pointer) register, ¾, , ¾, , En, , gin, , The stack pointer in the 8051 is only 8 bit, wide, which means that it can take value, of 00 to FFH, When the 8051 is powered up, the SP, register contains value 07, , eer, i, , ng., , net, , RAM location 08 is the first location begin used, for the stack by the 8051, , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 40, , Downloaded From : www.EasyEngineering.net
Page 98 :
Downloaded From : www.EasyEngineering.net, , 8051, REGISTER, BANKS AND, STACK, , , , The storing of a CPU register in the, stack is called a PUSH, , ww, w.E, , ¾, , asy, , ¾, , Stack, , (cont’), , E, Loading thencontents, of the stack back, g, ineis called a POP, into a CPU register, eri, ng., net, This is different from many microprocessors, , , , ¾, , HANEL, , SP is pointing to the last used location of, the stack, As we push data onto the stack, the SP is, incremented by one, , With every pop, the top byte of the stack, is copied to the register specified by the, instruction and the stack pointer is, decremented once, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 41, , Downloaded From : www.EasyEngineering.net
Page 101 :
Downloaded From : www.EasyEngineering.net, , 8051, REGISTER, BANKS AND, STACK, , , , The CPU also uses the stack to save, the address of the instruction just, below the CALL instruction, , ww, w.E, , CALL, Instruction And, Stack, , ¾, , This is how the CPU knows where to, resume when it returns from the called, subroutine, , asy, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 44, , Downloaded From : www.EasyEngineering.net
Page 102 :
Downloaded From : www.EasyEngineering.net, , 8051, REGISTER, BANKS AND, STACK, , , , The reason of incrementing SP after, push is, , ww, w.E, , Incrementing, Stack Pointer, , ¾, , Make sure that the stack is growing, toward RAM location 7FH, from lower to, upper addresses, Ensure that the stack will not reach the, bottom of RAM and consequently run out, of stack space, If the stack pointer were decremented, after push, , asy, , ¾, , ¾, , En, , gin, , eer, i, , ng., , We would be using RAM locations 7, 6, 5, etc., which belong to R7 to R0 of bank 0, the default, register bank, , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 45, , Downloaded From : www.EasyEngineering.net
Page 103 :
Downloaded From : www.EasyEngineering.net, , 8051, REGISTER, BANKS AND, STACK, , , , When 8051 is powered up, register, bank 1 and the stack are using the, same memory space, , ww, w.E, , Stack and Bank, 1 Conflict, , ¾, , We can reallocate another section of RAM, to the stack, , asy, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 46, , Downloaded From : www.EasyEngineering.net
Page 104 :
Downloaded From : www.EasyEngineering.net, , 8051, REGISTER, BANKS AND, STACK, , Example 2-10, , ww, w.E, , Stack And Bank, 1 Conflict, (cont’), , Examining the stack, show the contents of the register and SP after, execution of the following instructions. All value are in hex., MOV SP, #5FH, , ;make RAM location 60H, ;first stack location, , MOV R2, #25H, MOV R1, #12H, MOV R4, #0F3H, PUSH 2, PUSH 1, PUSH 4, , asy, , En, , Solution:, , gin, , After PUSH 2, , HANEL, , 63, , 63, , 62, , 62, , 61, , 61, , 60, , 60, , Start SP = 5F, , SP = 60, , eer, i, , After PUSH 1, , After PUSH 4, , 63, , 63, , 62, , 25, , 61, , 12, , 60, , 25, , SP = 61, , ng., 62, , F3, , 61, , 12, , 60, , 25, , net, , SP = 62, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 47, , Downloaded From : www.EasyEngineering.net
Page 106 :
Downloaded From : www.EasyEngineering.net, , LOOP AND, JUMP, INSTRUCTIONS, , , , Repeating a sequence of instructions a, certain number of times is called a, , ww loop, w.E, asy, E, ¾, , Looping, , A loop can be repeated a, maximum of 255 times, if, R2 is FFH, , Loop action is performed by, DJNZ reg, Label, The register is decremented, If it is not zero, it jumps to the target address, referred to by the label, Prior to the start of loop the register is loaded, with the counter for the number of repetitions, Counter can be R0 – R7 or RAM location, , ngi, , nee, , rin, , ;This program adds value 3 to the ACC ten times, MOV A,#0, ;A=0, clear ACC, MOV R2,#10 ;load counter R2=10, AGAIN: ADD A,#03, ;add 03 to ACC, DJNZ R2,AGAIN ;repeat until R2=0,10 times, MOV R5,A, ;save A in R5, , g.n, e, , t, , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 2, , Downloaded From : www.EasyEngineering.net
Page 110 :
Downloaded From : www.EasyEngineering.net, , 8051 conditional jump instructions, , LOOP AND, JUMP, INSTRUCTIONS, , ww, w.E, , Instructions, JZ, JNZ, DJNZ, CJNE A,byte, CJNE reg,#data, JC, JNC, JB, JNB, JBC, , asy, , Conditional, Jumps, , En, , (cont’), , , , gin, , eer, i, , ng., , All conditional jumps are short jumps, ¾, , HANEL, , Actions, Jump if A = 0, Jump if A ≠ 0, Decrement and Jump if A ≠ 0, Jump if A ≠ byte, Jump if byte ≠ #data, Jump if CY = 1, Jump if CY = 0, Jump if bit = 1, Jump if bit = 0, Jump if bit = 1 and clear bit, , net, , The address of the target must within, -128 to +127 bytes of the contents of PC, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 6, , Downloaded From : www.EasyEngineering.net
Page 111 :
Downloaded From : www.EasyEngineering.net, , The unconditional jump is a jump in, LOOP AND, which control is transferred, JUMP, unconditionally to the target location, INSTRUCTIONS, LJMP (long jump), , , ww, w.E, , Unconditional, Jumps, , asy, , ¾, , 3-byte instruction, First byte is the opcode, Second and third bytes represent the 16-bit, target address, – Any memory location from 0000 to FFFFH, , En, , SJMP, ¾, , g, (short jump) in, 2-byte instruction, , eer, i, , ng., , First byte is the opcode, Second byte is the relative target address, – 00 to FFH (forward +127 and backward, -128 bytes from the current PC), HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 7, , Downloaded From : www.EasyEngineering.net
Page 112 :
Downloaded From : www.EasyEngineering.net, , LOOP AND, JUMP, INSTRUCTIONS, , , , To calculate the target address of a, short jump (SJMP, JNC, JZ, DJNZ, etc.), , ww, w.E, , Calculating, Short Jump, Address, , ¾, , , , The second byte is added to the PC of the, instruction immediately below the jump, , asy, , If the target address is more than -128, to +127 bytes from the address below, the short jump instruction, ¾, , En, , gin, , The assembler will generate an error, stating the jump is out of range, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 8, , Downloaded From : www.EasyEngineering.net
Page 114 :
Downloaded From : www.EasyEngineering.net, , CALL, INSTRUCTIONS, , , , Call instruction is used to call subroutine, , ww, w.E, , ¾, ¾, , Subroutines are often used to perform tasks, that need to be performed frequently, This makes a program more structured in, addition to saving memory space, , call), a(long, syE, ngi, n, , LCALL, ¾, , 3-byte instruction, , First byte is the opcode, Second and third bytes are used for address of, target subroutine, – Subroutine is located anywhere within 64K, byte address space, , ACALL, ¾, , (absolute call), , 2-byte instruction, , eer, i, , ng., , net, , 11 bits are used for address within 2K-byte range, HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 10, , Downloaded From : www.EasyEngineering.net
Page 115 :
Downloaded From : www.EasyEngineering.net, , CALL, INSTRUCTIONS, , , , When a subroutine is called, control is, transferred to that subroutine, the, processor, , ww, w.E, LCALL, , ¾, , Saves on the stack the the address of the, instruction immediately below the LCALL, Begins to fetch instructions form the new, location, , asy, , ¾, , , , En, , gin, , After finishing execution of the, subroutine, ¾, , eer, i, , The instruction RET transfers control back, to the caller, , ng., , net, , Every subroutine needs RET as the last, instruction, , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 11, , Downloaded From : www.EasyEngineering.net
Page 122 :
Downloaded From : www.EasyEngineering.net, , TIME DELAY, FOR VARIOUS, 8051 CHIPS, , , , CPU executing an instruction takes a, certain number of clock cycles, , ww, w.EThe length of machine cycle depends, on, the frequency of the crystal, a, syEconnected to 8051, oscillator, In original n, 8051, one machine cycle, g, lasts 12 oscillator, inperiods, eer, ing, .ne, t, ¾, , These are referred as to as machine cycles, , , , , , Find the period of the machine cycle for 11.0592 MHz crystal, frequency, Solution:, , 11.0592/12 = 921.6 kHz;, machine cycle is 1/921.6 kHz = 1.085μs, , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 18, , Downloaded From : www.EasyEngineering.net
Page 127 :
Downloaded From : www.EasyEngineering.net, , TIME DELAY, FOR VARIOUS, 8051 CHIPS, , , , Two factors can affect the accuracy of, the delay, , ww, w.E, , Delay, Calculation for, Other 8051, , ¾, , Crystal frequency, The duration of the clock period of the machine, cycle is a function of this crystal frequency, , asy, , ¾, , 8051 design, The original machine cycle duration was set at, 12 clocks, Advances in both IC technology and CPU, design in recent years have made the 1-clock, machine cycle a common feature, , En, , gin, , eer, i, , Clocks per machine cycle for various 8051 versions, Chip/Maker, AT89C51 Atmel, P89C54X2 Philips, DS5000 Dallas Semi, DS89C420/30/40/50 Dallas Semi, , HANEL, , ng., , Clocks per Machine Cycle, 12, 6, 4, 1, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 23, , Downloaded From : www.EasyEngineering.net
Page 146 :
Downloaded From : www.EasyEngineering.net, , I/O BIT, MANIPULATION, PROGRAMMING, , Example 4-2, Write the following programs., Create a square wave of 50% duty cycle on bit 0 of port 1., , ww, w, , I/O Ports, and Bit, Addressability, (cont’), , Solution:, The 50% duty cycle means that the “on” and “off” state (or the high, and low portion of the pulse) have the same length. Therefore,, we toggle P1.0 with a time delay in between each state., HERE: SETB, P1.0 ;set to high bit 0 of port 1, LCALL DELAY ;call the delay subroutine, CLR, P1.0, ;P1.0=0, LCALL DELAY, SJMP, HERE, ;keep doing it, Another way to write the above program is:, HERE: CPL, P1.0 ;set to high bit 0 of port 1, LCALL DELAY ;call the delay subroutine, SJMP, HERE, ;keep doing it, , .Ea, syE, 8051, , ngi, , nee, , rin, g.n, , et, , P1.0, , HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 17
Page 147 :
Downloaded From : www.EasyEngineering.net, , I/O BIT, MANIPULATION, PROGRAMMING, , , , ww, w, , I/O Ports, and Bit, Addressability, (cont’), , Instructions that are used for signal-bit, operations are as following, Single-Bit Instructions, , .Ea, syE, , Instruction, , Function, , SETB bit, , Set the bit (bit = 1), , CLR bit, , Clear the bit (bit = 0), , CPL bit, JB, , bit, target, , JNB bit, target, JBC bit, target, , ngi, , Complement the bit (bit = NOT bit), Jump to target if bit = 1 (jump if bit), , nee, , Jump to target if bit = 0 (jump if no bit), Jump to target if bit = 1, clear bit, (jump if bit, then clear), , rin, g.n, , et, , HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 18
Page 148 :
Downloaded From : www.EasyEngineering.net, , I/O BIT, MANIPULATION, PROGRAMMING, , ww, w, , Checking an, Input Bit, , The JNB and JB instructions are widely, used single-bit operations, , , , ¾, , They allow you to monitor a bit and make, a decision depending on whether it’s 0 or 1, These two instructions can be used for any, bits of I/O ports 0, 1, 2, and 3, , .Ea, syE, ¾, , Port 3 is typically not used for any I/O, either, single-bit or byte-wise, , ngi, , nee, , Instructions for Reading an Input Port, Examples, , MOV A,PX, , MOV A,P2, , JNB PX.Y, .., , JNB P2.1,TARGET, , Jump if pin P2.1 is low, , JB, , JB P1.3,TARGET, , Jump if pin P1.3 is high, , MOV C,P2.4, , Copy status of pin P2.4 to CY, , PX.Y, .., , MOV C,PX.Y, , HANEL, , rin, g.n, , Mnemonic, , Description, , Bring into A the data at P2 pins, , et, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 19
Page 150 :
Downloaded From : www.EasyEngineering.net, , I/O BIT, MANIPULATION, PROGRAMMING, , Example 4-4, Assume that bit P2.3 is an input and represents the condition of an, oven. If it goes high, it means that the oven is hot. Monitor the bit, continuously. Whenever it goes high, send a high-to-low pulse to port, P1.5 to turn on a buzzer., , ww, w, , Checking an, Input Bit, (cont’), , .Ea, syE, , Solution:, HERE:, , JNB, SETB, CLR, SJMP, , P2.3,HERE, P1.5, P1.5, HERE, , ngi, , ;keep monitoring for high, ;set bit P1.5=1, ;make high-to-low, ;keep repeating, , nee, , rin, g.n, , et, , HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 21
Page 152 :
Downloaded From : www.EasyEngineering.net, , I/O BIT, MANIPULATION, PROGRAMMING, , Example 4-6, A switch is connected to pin P1.7. Write a program to check the status, of SW and perform the following:, (a) If SW=0, send letter ‘N’ to P2, (b) If SW=1, send letter ‘Y’ to P2, Use the carry flag to check the switch status., , ww, w, , Reading Single, Bit into Carry, Flag, , .Ea, syE, , Solution:, , SETB, AGAIN: MOV, JC, MOV, SJMP, OVER: MOV, SJMP, , P1.7, C,P1.2, OVER, P2,#’N’, AGAIN, P2,#’Y’, AGAIN, , ngi, , ;make P1.7 an input, ;read SW status into CF, ;jump if SW=1, ;SW=0, issue ‘N’ to P2, ;keep monitoring, ;SW=1, issue ‘Y’ to P2, ;keep monitoring, , nee, , rin, g.n, , et, , HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 23
Page 154 :
Downloaded From : www.EasyEngineering.net, , I/O BIT, MANIPULATION, PROGRAMMING, , , , ¾, , ww, w, , Reading Input, Pins vs. Port, Latch, , In reading a port, , , , ¾, , Some instructions read the status of port, pins, Others read the status of an internal port, latch, , when reading ports there, .Therefore,, E, areatwo, possibilities:, s, Readythe, status of the input pin, E, Read the n, internal latch of the output port, g, inethem is a major, Confusion between, source of errors in 8051, programming, e, rinhardware is, Especially where external, g.n, concerned, et, ¾, ¾, , , , ¾, , HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 25
Page 155 :
Downloaded From : www.EasyEngineering.net, , READING, INPUT PINS VS., PORT LATCH, , , , ww, w, , Reading Latch, for Output Port, , Some instructions read the contents of, an internal port latch instead of, reading the status of an external pin, ¾, , For example, look at the ANL P1,A, instruction and the sequence of actions is, executed as follow, , .Ea, syE, , 1. It reads the internal latch of the port and, brings that data into the CPU, 2. This data is ANDed with the contents of, register A, 3. The result is rewritten back to the port latch, 4. The port pin data is changed and now has the, same value as port latch, , ngi, , nee, , rin, g.n, , et, , HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 26
Page 159 :
Downloaded From : www.EasyEngineering.net, , ADDRESSING, MODES, , , , The CPU can access data in various, ways, which are called addressing, , ww modes, w.E, asy, E, ¾, ¾, ¾, ¾, ¾, , Immediate, Register, Direct, Register indirect, Indexed, , ngi, , Accessing, memories, , nee, , rin, , g.n, e, , t, , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 2, , Downloaded From : www.EasyEngineering.net
Page 163 :
Downloaded From : www.EasyEngineering.net, , ACCESSING, MEMORY, , , , It is most often used the direct, addressing mode to access RAM, locations 30 – 7FH, , ww, w.E, , Direct, Addressing, Mode, , ¾, , The entire 128 bytes of RAM can be, accessed, Direct addressing mode, The register bank locations are accessed, by the register names, , asy, , ¾, , En, , MOV A,4, MOV A,R4, , , , gin, , ;is same as, ;which means copy R4 into A, , e, Contrast this with immediate, e, r, ing, addressing mode, ., , Register addressing mode, , ¾, , MOV R0,40H, MOV 56H,A, , HANEL, , net, , There is no “#” sign in the operand, , ;save content of 40H in R0, ;save content of A in 56H, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 6, , Downloaded From : www.EasyEngineering.net
Page 168 :
Downloaded From : www.EasyEngineering.net, , ACCESSING, MEMORY, , , , Only direct addressing mode is allowed, for pushing or popping the stack, , ww, w.E, , Stack and, Direct, Addressing, Mode, , ¾, , PUSH A is invalid, , ¾, , Pushing the accumulator onto the stack, must be coded as PUSH 0E0H, , asy, , Example 5-2, , Solution:, PUSH 05, PUSH 0E0H, POP 0F0H, POP, , HANEL, , En, , Show the code to push R5 and A onto the stack and then pop them, back them into R2 and B, where B = A and R2 = R5, , 02, , gin, , eer, i, , ;push R5 onto stack, ;push register A onto stack, ;pop top of stack into B, ;now register B = register A, ;pop top of stack into R2, ;now R2=R6, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 11, , Downloaded From : www.EasyEngineering.net
Page 169 :
Downloaded From : www.EasyEngineering.net, , ACCESSING, MEMORY, , , , A register is used as a pointer to the, data, , ww, w.E, , ¾, , Register, Indirect, Addressing, Mode, , asy, , ¾, , , , Only register R0 and R1 are used for this, purpose, R2 – R7 cannot be used to hold the, address of an operand located in RAM, , En, , When R0 and R1 hold the addresses of, RAM locations, they must be preceded, by the “@” sign, MOV A,@R0, MOV @R1,B, , HANEL, , gin, , eer, i, , ng., , ;move contents of RAM whose, ;address is held by R0 into A, ;move contents of B into RAM, ;whose address is held by R1, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 12, , Downloaded From : www.EasyEngineering.net
Page 173 :
Downloaded From : www.EasyEngineering.net, , ACCESSING, MEMORY, , , , R0 and R1 are the only registers that, can be used for pointers in register, indirect addressing mode, Since R0 and R1 are 8 bits wide, their, use is limited to access any, information in the internal RAM, Whether accessing externally, connected RAM or on-chip ROM, we, need 16-bit pointer, , ww, w.E, , Register, Indirect, Addressing, Mode, (cont’), , , , , , asy, , En, , ¾, , HANEL, , gin, , eer, i, , ng., , In such case, the DPTR register is used, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 16, , Downloaded From : www.EasyEngineering.net
Page 174 :
Downloaded From : www.EasyEngineering.net, , ACCESSING, MEMORY, , , , Indexed addressing mode is widely, used in accessing data elements of, look-up table entries located in the, program ROM, The instruction used for this purpose is, , ww, w.E, , Indexed, Addressing, Mode and, On-chip ROM, Access, , , , asy, , En, , MOVC A,@A+DPTR, ¾ Use instruction MOVC, “C” means code, ¾, , gin, , The contents of A are added to the 16-bit, register DPTR to form the 16-bit address, of the needed data, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 17, , Downloaded From : www.EasyEngineering.net
Page 177 :
Downloaded From : www.EasyEngineering.net, , ACCESSING, MEMORY, , , , In many applications, the size of, program code does not leave any, room to share the 64K-byte code, space with data, , ww, w.E, , Indexed, Addressing, Mode and, MOVX, , En, , This data memory space is referred to as, external memory and it is accessed only by the, MOVX instruction, , , , gin, , eer, i, , The 8051 has a total of 128K bytes of, memory space, ¾, ¾, , HANEL, , The 8051 has another 64K bytes of, memory space set aside exclusively for, data storage, , asy, , ¾, , ng., , 64K bytes of code and 64K bytes of data, The data space cannot be shared between, code and data, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 20, , Downloaded From : www.EasyEngineering.net
Page 179 :
Downloaded From : www.EasyEngineering.net, , BIT, ADDRESSES, , , , Many microprocessors allow program, to access registers and I/O ports in, byte size only, , ww, w.E, , ¾, , , , However, in many applications we need to, check a single bit, , asy, , One unique and powerful feature of, the 8051 is single-bit operation, ¾, , ¾, , En, , gin, , Single-bit instructions allow the, programmer to set, clear, move, and, complement individual bits of a port,, memory, or register, It is registers, RAM, and I/O ports that, need to be bit-addressable, , eer, i, , ng., , net, , ROM, holding program code for execution, is, not bit-addressable, HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 22, , Downloaded From : www.EasyEngineering.net
Page 183 :
Downloaded From : www.EasyEngineering.net, , BIT, ADDRESSES, , , , To avoid confusion regarding the, addresses 00 – 7FH, , ww, w.E, , ¾, , BitAddressable, RAM, (cont’), , The 128 bytes of RAM have the byte, addresses of 00 – 7FH can be accessed in, byte size using various addressing modes, , asy, , ¾, , Direct and register-indirect, , En, , The 16 bytes of RAM locations 20 – 2FH, have bit address of 00 – 7FH, , gin, , We can use only the single-bit instructions and, these instructions use only direct addressing, mode, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 26, , Downloaded From : www.EasyEngineering.net
Page 184 :
Downloaded From : www.EasyEngineering.net, , BIT, ADDRESSES, , , , Instructions that are used for signal-bit, operations are as following, , ww, w.E, , BitAddressable, RAM, (cont’), , Single-Bit Instructions, , Instruction, , Function, , SETB bit, , Set the bit (bit = 1), , asy, , CLR, CPL, JB, JNB, JBC, , En, , bit, bit, bit, target, bit, target, bit, target, , Clear the bit (bit = 0), Complement the bit (bit = NOT bit), Jump to target if bit = 1 (jump if bit), Jump to target if bit = 0 (jump if no bit), Jump to target if bit = 1, clear bit, (jump if bit, then clear), , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 27, , Downloaded From : www.EasyEngineering.net
Page 191 :
Downloaded From : www.EasyEngineering.net, , BIT, ADDRESSES, , , , The BIT directive is a widely used, directive to assign the bit-addressable, I/O and RAM locations, , ww, w.E, , Using BIT, , ¾, , Allow a program to assign the I/O or RAM, bit at the beginning of the program,, making it easier to modify them, , asy, , En, , gin, , Example 5-22, A switch is connected to pin P1.7 and an LED to pin P2.0. Write a, program to get the status of the switch and send it to the LED., Solution:, LED, SW, HERE:, , HANEL, , BIT, BIT, MOV, MOV, SJMP, , P1.7, P2.0, C,SW, LED,C, HERE, , eer, i, , ng., , ;assign bit, ;assign bit, ;get the bit from the port, ;send the bit to the port, ;repeat forever, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 34, , Downloaded From : www.EasyEngineering.net
Page 192 :
Downloaded From : www.EasyEngineering.net, , BIT, ADDRESSES, , Example 5-20, , ww, w.E, , Using BIT, (cont’), , Assume that bit P2.3 is an input and represents the condition of an, oven. If it goes high, it means that the oven is hot. Monitor the bit, continuously. Whenever it goes high, send a high-to-low pulse to port, P1.5 to turn on a buzzer., , asy, , Solution:, , OVEN_HOT BIT P2.3, BUZZER, BIT P1.5, HERE: JNB, OVEN_HOT,HERE ;keep monitoring, ACALL DELAY, CPL, BUZZER ;sound the buzzer, ACALL DELAY, SJMP, HERE, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 35, , Downloaded From : www.EasyEngineering.net
Page 197 :
Downloaded From : www.EasyEngineering.net, , ADD, ARITHMETIC, INSTRUCTIONS, , , , A,source, , ;A = A + source, , The instruction ADD is used to add two, operands, , ww Destination operand is always in register A, Addition of w, Source operand can be a register,, Unsigned, ., E, immediate data, or in memory, aMemory-to-memory, Numbers, s, arithmetic operations, y, E, are never, allowed in 8051 Assembly, n, language g, ine, eri, ng., net, ¾, ¾, ¾, , Show how the flag register is affected by the following instruction., MOV A,#0F5H ;A=F5 hex, CY =1, since there is a, ADD A,#0BH ;A=F5+0B=00 carry out from D7, , Solution:, +, , HANEL, , F5H, 0BH, 100H, , 1111 0101, + 0000 1011, 0000 0000, , PF =1, because the number, of 1s is zero (an even, number), PF is set to 1., AC =1, since there is a, carry from D3 to D4, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 2
Page 200 :
Downloaded From : www.EasyEngineering.net, , , , ARITHMETIC, INSTRUCTIONS, , The binary representation of the digits, 0 to 9 is called BCD (Binary Coded, Decimal), Digit, BCD, , ww Unpacked BCD, BCD Number w, System, .Ea, syE, ngi, n, eer, Packed BCD, i, ¾, , In unpacked BCD, the lower 4, bits of the number represent the, BCD number, and the rest of the, bits are 0, Ex. 00001001 and 00000101 are, unpacked BCD for 9 and 5, , ¾, , 0000, , 1, , 0001, , 2, , 0010, , 3, , 0011, , 4, , 0100, , 5, , 0101, , 6, , 0110, , 7, , 0111, , 8, , 1000, , 9, , 1001, , ng., n, , In packed BCD, a single byte has, two BCD number in it, one in the, lower 4 bits, and one in the, upper 4 bits, Ex. 0101 1001 is packed BCD for, 59H, , HANEL, , 0, , et, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 5
Page 202 :
Downloaded From : www.EasyEngineering.net, , DA A ;decimal adjust for addition, ARITHMETIC, INSTRUCTIONS, , , , The DA instruction is provided to, correct the aforementioned problem, associated with BCD addition, , ww, DA Instruction w, DA instruction will add 6 to the lower, .EaThe, nibble or higher nibble if need, syE, ngi, nee, rin, g.n, et, ¾, , Example:, , DA works only, after an ADD,, but not after INC, , HANEL, , 6CH, MOV A,#47H, ;A=47H first BCD operand, MOV B,#25H, ;B=25H second BCD operand, ADD A,B, ;hex(binary) addition(A=6CH), DA A, ;adjust for BCD addition, (A=72H), 72H, , The “DA” instruction works only on A. In other word, while the source, can be an operand of any addressing mode, the destination must be in, register A in order for DA to work., , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 7
Page 203 :
Downloaded From : www.EasyEngineering.net, , ARITHMETIC, INSTRUCTIONS, , , , Summary of DA instruction, ¾, , ww, DA Instruction w, .E, (cont’), , After an ADD or ADDC instruction, 1. If the lower nibble (4 bits) is greater than 9, or, if AC=1, add 0110 to the lower 4 bits, 2. If the upper nibble is greater than 9, or if, CY=1, add 0110 to the upper 4 bits, , asy, E, , Example:, HEX, 29, +, 18, 41, +, 6, 47, , ngi, , BCD, 0010 1001, + 0001 1000, 0100 0001, +, 0110, 0100 0111, , nee, , AC=1, , rin, g.n, , et, , Since AC=1 after the, addition, ”DA A” will add 6 to the, lower nibble., The final result is in BCD format., HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 8
Page 205 :
Downloaded From : www.EasyEngineering.net, , ARITHMETIC, INSTRUCTIONS, , , , In many microprocessor there are two, different instructions for subtraction:, SUB and SUBB (subtract with borrow), , ww In the 8051 we have only SUBB, Subtraction of w, The 8051 uses adder circuitry to perform, Unsigned, ., E, the, assubtraction, Numbers, y, En ;A = A – source – CY, SUBB A,source, g, ineof SUBB, we have to, To make SUB out, make CY=0 prior to e, the execution of, r, ing, the instruction, Notice that we use the CY flag.for, the, n, et, borrow, ¾, ¾, , , , ¾, , HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 10
Page 206 :
Downloaded From : www.EasyEngineering.net, , ARITHMETIC, INSTRUCTIONS, , , , SUBB when CY = 0, 1., , ww, Subtraction of w, Unsigned, .E, 2., 3., , Numbers, (cont’), , Take the 2’s complement of the, subtrahend (source operand), Add it to the minuend (A), Invert the carry, , asy, E, , NEXT:, , CLR, MOV, SUBB, JNC, CPL, INC, MOV, , C, A,#4C, ;load A with value 4CH, A,#6EH ;subtract 6E from A, NEXT, ;if CY=0 jump to NEXT, A ;if CY=1, take 1’s complement, A ;and increment to get 2’s comp, R1,A, ;save A in R1, , ngi, , nee, , Solution:, CY=0, the result is positive;, CY=1, the result is negative, and the destination has the, 2’s complement of the result, , HANEL, , 4C, - 6E, -22, , 0100 1100, 0110 1110, CY =1, , rin, g.n, , c 2’s, complement, , 0100 1100, 1001 0010, 01101 1110, , et, , d+, , e Invert carry, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 11
Page 209 :
Downloaded From : www.EasyEngineering.net, , ARITHMETIC, INSTRUCTIONS, , , , The 8051 supports byte over byte, division only, , ww The byte are assumed to be unsigned data, DIV AB, ;divide A by B, A/B, Unsigned w, Division, .Ea, syE, ngi, nee, rin, g.n, et, ¾, , MOV, MOV, MUL, , A,#95, B,#10, AB, , ;load 95 to reg. A, ;load 10 to reg. B, ;A = 09(quotient) and, ;B = 05(remainder), , Unsigned Division Summary (DIV AB), Division, , Numerator, , Denominator, , Quotient, , Remainder, , Byte / byte, , A, , B, , A, , B, , CY is always 0, If B ≠ 0, OV = 0, If B = 0, OV = 1 indicates error, , HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 14
Page 210 :
Downloaded From : www.EasyEngineering.net, , ARITHMETIC, INSTRUCTIONS, , (a) Write a program to get hex data in the range of 00 – FFH from, port 1 and convert it to decimal. Save it in R7, R6 and R5., (b) Assuming that P1 has a value of FDH for data, analyze program., , ww, Application for w, DIV, .E, , Solution:, (a), MOV, MOV, MOV, MOV, DIV, MOV, MOV, DIV, MOV, MOV, , A,#0FFH, P1,A, A,P1, B,#10, AB, R7,B, B,#10, AB, R6,B, R5,A, , asy, E, , ;make P1 an input port, ;read data from P1, ;B=0A hex, ;divide by 10, ;save lower digit, , ngi, , ;divide by 10 once more, ;save the next digit, ;save the last digit, , nee, , (b) To convert a binary (hex) value to decimal, we divide it by 10, repeatedly until the quotient is less than 10. After each division the, remainder is saves., Q, R, FD/0A =, 19, 3 (low digit), 19/0A =, 2, 5 (middle digit), 2 (high digit), Therefore, we have FDH=253., , rin, g.n, , et, , HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 15
Page 212 :
Downloaded From : www.EasyEngineering.net, , Show how the 8051 would represent -34H, , SIGNED, ARITHMETIC, INSTRUCTIONS, , Solution:, 1., 0011 0100, 2., 1100 1011, 3., 1100 1100, , ww, w, Signed 8-bit, .E, , 34H given in binary, invert each bit, add 1 (which is CC in hex), , Signed number representation of -34 in 2’s complement is CCH, , Operands, (cont’), , HANEL, , asy, E, , Decimal, , Binary, , Hex, , -128, -127, -126, ..., -2, -1, 0, +1, +2, ..., +127, , 1000, 1000, 1000, ... ..., 1111, 1111, 0000, 0000, 0000, ... ..., 0111, , 80, 81, 82, ..., FE, FF, 00, 01, 02, ..., 7F, , ngi, , 0000, 0001, 0010, , nee, 1110, 1111, 0000, 0001, 0010, 1111, , rin, g.n, , et, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 17
Page 213 :
Downloaded From : www.EasyEngineering.net, , SIGNED, ARITHMETIC, INSTRUCTIONS, , , , If the result of an operation on signed, numbers is too large for the register, ¾ An overflow has occurred and the, programmer must be noticed, , ww, w, Overflow, .E, Problem, , asy, E, , Examine the following code and analyze the result., MOV, MOV, ADD, , Solution:, +96, + +70, + 166, , A,#+96, R1,#+70, A,R1, , ngi, , ;A=0110 0000 (A=60H), ;R1=0100 0110(R1=46H), ;A=1010 0110, ;A=A6H=-90,INVALID, , nee, , rin, g.n, , 0110 0000, 0100 0110, 1010 0110 and OV =1, , et, , According to the CPU, the result is -90, which is wrong. The CPU, sets OV=1 to indicate the overflow, , HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 18
Page 217 :
Downloaded From : www.EasyEngineering.net, , SIGNED, ARITHMETIC, INSTRUCTIONS, , , , To make the 2’s complement of a, number, , ww, w, 2's, .E, , Complement, , CPL, ADD, , A, A,#1, , asy, E, , ngi, , ;1’s complement (invert), ;add 1 to make 2’s comp., , nee, , rin, g.n, , et, , HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 22
Page 218 :
Downloaded From : www.EasyEngineering.net, , LOGIC AND, COMPARE, INSTRUCTIONS, , ANL destination,source, ;dest = dest AND source, , instruction will perform a logic, ww This, AND on the two operands and place, w, the result in the destination, AND, .EThe, destination is normally the, aaccumulator, syE, The source, operand can be a register, in, n, memory, or g, immediate, ine, eri, ng., net, , , ¾, ¾, , X, , Y, , X AND Y, , 0, , 0, , 0, , 0, , 1, , 0, , 1, , 0, , 0, , 1, , 1, , 1, , HANEL, , Show the results of the following., MOV, ANL, , 35H, 0FH, 05H, , A,#35H, A,#0FH, , ;A = 35H, ;A = A AND 0FH, ANL is often used to, 0 0 1 1 0 1 0 1, mask (set to 0) certain, 0 0 0 0 1 1 1 1, bits of an operand, 0 0 0 0 0 1 0 1, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 23
Page 219 :
Downloaded From : www.EasyEngineering.net, , LOGIC AND, COMPARE, INSTRUCTIONS, , ORL destination,source, ;dest = dest OR source, , The destination and source operands, are ORed and the result is placed in, the destination, , ww, w, OR, .E, , , ¾, ¾, , X, , Y, , X OR Y, , 0, , 0, , 0, , 0, , 1, , 1, , 1, , 0, , 1, , 1, , 1, , 1, , HANEL, , asy, E, , The destination is normally the, accumulator, The source operand can be a register, in, memory, or immediate, , ngi, , nee, , Show the results of the following., MOV, ORL, 04H, 68H, 6CH, , A,#04H, A,#68H, , ;A = 04, ;A = 6C, , 0 0 0 0 0 1 0 0, 0 1 1 0 1 0 0 0, 0 1 1 0 1 1 0 0, , rin, g.n, , et, , ORL instruction can be, used to set certain bits, of an operand to 1, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 24
Page 220 :
Downloaded From : www.EasyEngineering.net, , LOGIC AND, COMPARE, INSTRUCTIONS, , XRL destination,source, ;dest = dest XOR source, , instruction will perform XOR, ww This, operation on the two operands and, w, the result in the destination, XOR, .place, EThe, asydestination is normally the, accumulator, E, noperand, The source, can be a register, in, g, ine, memory, or immediate, eri, ng., net, , , ¾, ¾, , X, , Y, , X XOR Y, , 0, , 0, , 0, , 0, , 1, , 1, , 1, , 0, , 1, , 1, , 1, , 0, , HANEL, , Show the results of the following., MOV, XRL, , 54H, 78H, 2CH, , A,#54H, A,#78H, , 0 1 0 1 0 1 0 0, 0 1 1 1 1 0 0 0, 0 0 1 0 1 1 0 0, , XRL instruction can be, used to toggle certain, bits of an operand, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 25
Page 222 :
Downloaded From : www.EasyEngineering.net, , LOGIC AND, COMPARE, INSTRUCTIONS, , CPL A ;complements the register A, , , This is called 1’s complement, , ww, w, Complement, .E, Accumulator, , , , HANEL, , MOV A, #55H, CPL A, , ;now A=AAH, ;0101 0101(55H), ;becomes 1010 1010(AAH), , asy, To get the, En2’s complement, all we, have to do isg, toi to add 1 to the 1’s, nee, complement, rin, g.n, et, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 27
Page 223 :
Downloaded From : www.EasyEngineering.net, , LOGIC AND, COMPARE, INSTRUCTIONS, , CJNE destination,source,rel. addr., , , The actions of comparing and jumping, are combined into a single instruction, called CJNE (compare and jump if not, equal), , ww, w, Compare, .E, , Instruction, , ¾, ¾, ¾, , asy, E, , The CJNE instruction compares two, operands, and jumps if they are not equal, The destination operand can be in the, accumulator or in one of the Rn registers, The source operand can be in a register, in, memory, or immediate, , ngi, , nee, , rin, g.n, , e, t, It changes the CY flag to indicate if the, , The operands themselves remain unchanged, , ¾, , destination operand is larger or smaller, HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 28
Page 224 :
Downloaded From : www.EasyEngineering.net, , LOGIC AND, COMPARE, INSTRUCTIONS, , CJNE R5,#80,NOT_EQUAL ;check R5 for 80, ..., ;R5 = 80, NOT_EQUAL:, JNC NEXT, ;jump if R5 > 80, ..., ;R5 < 80, NEXT: ..., , ww, w, Compare, .E, , Instruction, (cont’), , CY flag is always, checked for cases, of greater or less, than, but only after, it is determined that, they are not equal, , HANEL, , , , asy, E, , Compare, , Carry Flag, , destination ≥ source, , CY = 0, , destination < source, , CY = 1, , ngi, , n, e, Notice in the CJNEeinstruction, that any, r, ing with an, Rn register can be compared, immediate value, ., n, There is no need for register A to e, bet, involved, ¾, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 29
Page 225 :
Downloaded From : www.EasyEngineering.net, , , , LOGIC AND, COMPARE, INSTRUCTIONS, , The compare instruction is really a, subtraction, except that the operands, remain unchanged, , ww Flags are changed according to the, execution of the SUBB instruction, w, Compare, ., E, Instruction, asy, En, gin, eer, ing, .ne, t, (cont’), , ¾, , Write a program to read the temperature and test it for the value 75., According to the test results, place the temperature value into the, registers indicated by the following., If T = 75 then A = 75, If T < 75 then R1 = T, If T > 75 then R2 = T, Solution:, , OVER:, , NEXT:, EXIT:, , HANEL, , MOV, MOV, CJNE, SJMP, JNC, MOV, SJMP, MOV, ..., , P1,#0FFH, A,P1, A,#75,OVER, EXIT, NEXT, R1,A, EXIT, R2,A, , ;make P1 an input port, ;read P1 port, ;jump if A is not 75, ;A=75, exit, ;if CY=0 then A>75, ;CY=1, A<75, save in R1, ; and exit, ;A>75, save it in R2, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 30
Page 230 :
Downloaded From : www.EasyEngineering.net, , ROTATE, INSTRUCTION, AND DATA, SERIALIZATION, , , , Serializing data is a way of sending a, byte of data one bit at a time through, a single pin of microcontroller, , ww, the serial port, discussed in Chapter, w.EUsing, 10, Serializing Data, astransfer, To, data one bit at a time and, y the sequence of data and spaces, controlE, nthem, in between, gin, eer, ing, .ne, t, ¾, ¾, , HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 35
Page 236 :
Downloaded From : www.EasyEngineering.net, , ROTATE, INSTRUCTION, AND DATA, SERIALIZATION, , (a) Find the contents of register A in the following code., (b) In the absence of a SWAP instruction, how would you, exchange the nibbles? Write a simple program to show the, process., , ww, w.E, , SWAP, , Solution:, (a), , (cont’), , (b), , asy, E, MOV, SWAP, , A,#72H, A, , ;A = 72H, ;A = 27H, , MOV, RL, RL, RL, RL, , A,#72H, A, A, A, A, , ;A, ;A, ;A, ;A, ;A, , ngi, , =, =, =, =, =, , nee, , 0111, 0111, 0111, 0111, 0111, , 0010, 0010, 0010, 0010, 0010, , rin, g.n, , et, , HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 41
Page 237 :
Downloaded From : www.EasyEngineering.net, , BCD AND ASCII, APPLICATION, PROGRAMS, , ASCII code and BCD for digits 0 - 9, , ww, w.E, Key, , ASCII (hex), , Binary, , BCD (unpacked), , 0, , 30, , 011 0000, , 0000 0000, , 1, , 31, , 011 0001, , 0000 0001, , 2, , 32, , 011 0010, , 0000 0010, , 33, , 011 0011, , 0000 0011, , 34, , 011 0100, , 0000 0100, , 35, , 011 0101, , 0000 0101, , 011 0110, , 0000 0110, , 011 0111, , 0000 0111, , 011 1000, , 0000 1000, , 011 1001, , 0000 1001, , 3, 4, 5, 6, , asy, E, 36, , 7, , 37, , 8, , 38, , 9, , 39, , ngi, , nee, , rin, g.n, , et, , HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 42
Page 242 :
Downloaded From : www.EasyEngineering.net, , BCD AND ASCII, APPLICATION, PROGRAMS, , , , To ensure the integrity of the ROM, contents, every system must perform, the checksum calculation, , ww, The process of checksum will detect any, w, Checksum Byte, corruption of the contents of ROM, ., E, in ROM, asychecksum process uses what is called, The, a checksum, En byte, gin, eer, ing, .ne, t, ¾, ¾, , The checksum byte is an extra byte that is, tagged to the end of series of bytes of data, , HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 47
Page 243 :
Downloaded From : www.EasyEngineering.net, , BCD AND ASCII, APPLICATION, PROGRAMS, , , , To calculate the checksum byte of a, series of bytes of data, , ww Add, the bytes together and drop the, carries, w, Checksum Byte, Take the 2’s complement of the total sum,, ., E, in ROM, asyit becomes the last byte of the series, and, Enthe checksum operation,, To perform, ginincluding the, add all the bytes,, checksum byte ee, rin, The result must be zero, If it is not zero, one or moreg, bytes, of data, ., n, et, have been changed, ¾, ¾, , (cont’), , , , ¾, ¾, , HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 48
Page 244 :
Downloaded From : www.EasyEngineering.net, , BCD AND ASCII, APPLICATION, PROGRAMS, , Assume that we have 4 bytes of hexadecimal data: 25H, 62H, 3FH, and, 52H.(a) Find the checksum byte, (b) perform the checksum operation to, ensure data integrity, and (c) if the second byte 62H has been changed, to 22H, show how checksum detects the error., , ww, w, Checksum Byte, .E, in ROM, (cont’), , Solution:, (a) Find the checksum byte., 25H, The checksum is calculated by first adding the, +, 62H, bytes. The sum is 118H, and dropping the carry,, +, 3FH, we get 18H. The checksum byte is the 2’s, +, 52H, complement of 18H, which is E8H, 118H, (b) Perform the checksum operation to ensure data integrity., 25H, +, 62H, Adding the series of bytes including the checksum, +, 3FH, byte must result in zero. This indicates that all the, +, 52H, bytes are unchanged and no byte is corrupted., +, E8H, 200H (dropping the carries), (c) If the second byte 62H has been changed to 22H, show how, checksum detects the error., 25H, +, 22H, Adding the series of bytes including the checksum, +, 3FH, byte shows that the result is not zero, which indicates, +, 52H, that one or more bytes have been corrupted., +, E8H, 1C0H (dropping the carry, we get C0H), , asy, E, , ngi, , nee, , rin, g.n, , et, , HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 49
Page 245 :
Downloaded From : www.EasyEngineering.net, , BCD AND ASCII, APPLICATION, PROGRAMS, , , , Many ADC (analog-to-digital converter), chips provide output data in binary, (hex), , ww, To display the data on an LCD or PC, w, Binary (Hex), screen, we need to convert it to ASCII, ., E, to ASCII, a, s, yE, Conversion, ngi, nee, rin, g.n, et, ¾, , Convert 8-bit binary (hex) data to decimal, digits, 000 – 255, Convert the decimal digits to ASCII digits,, 30H – 39H, , HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 50
Page 247 :
Downloaded From : www.EasyEngineering.net, , WHY, PROGRAM, 8051 IN C, , , , Compilers produce hex files that is, downloaded to ROM of microcontroller, , ww, w.E, , ¾, , , , , , Microcontrollers have limited on-chip ROM, Code space for 8051 is limited to 64K bytes, , asy, , C programming is less time consuming,, but has larger hex file size, The reasons for writing programs in C, , En, , ¾, ¾, ¾, ¾, HANEL, , The size of hex file is the main concern, , gin, , It is easier and less time consuming to, write in C than Assembly, C is easier to modify and update, You can use code available in function, libraries, C code is portable to other microcontroller, with little of no modification, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 2, , Downloaded From : www.EasyEngineering.net
Page 248 :
Downloaded From : www.EasyEngineering.net, , DATA TYPES, , , , A good understanding of C data types, for 8051 can help programmers to, create smaller hex files, , ww, w.E, , ¾, , Unsigned char, Signed char, Unsigned int, Signed int, Sbit (single bit), Bit and sfr, , asy, , ¾, ¾, ¾, ¾, ¾, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 3, , Downloaded From : www.EasyEngineering.net
Page 249 :
Downloaded From : www.EasyEngineering.net, , DATA TYPES, , , , The character data type is the most, natural choice, , ww, w.EUnsigned char is an 8-bit data type in, the, of 0 – 255 (00 – FFH), asrange, yE, ngi, nee, C compilers use the signed, char as the, r, i, default if we do not put thenkeyword, g, .ne, unsigned, t, , Unsigned char, , ¾, , 8051 is an 8-bit microcontroller, , ¾, , One of the most widely used data types, for the 8051, , , , Counter value, ASCII characters, , , , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 4, , Downloaded From : www.EasyEngineering.net
Page 250 :
Downloaded From : www.EasyEngineering.net, , Write an 8051 C program to send values 00 – FF to port P1., , DATA TYPES, , Solution:, , ww, w.E, , Unsigned char, (cont’), , 1., , #include <reg51.h>, void main(void), 2., {, unsigned char z;, for (z=0;z<=255;z++), P1=z;, }, , asy, , En, , Pay careful attention to, the size of the data, Try to use unsigned char, instead of int if possible, , Write an 8051 C program to send hex values for ASCII characters of, 0, 1, 2, 3, 4, 5, A, B, C, and D to port P1., Solution:, , gin, , eer, i, , #include <reg51.h>, void main(void), {, unsigned char mynum[]=“012345ABCD”;, unsigned char z;, for (z=0;z<=10;z++), P1=mynum[z];, }, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 5, , Downloaded From : www.EasyEngineering.net
Page 252 :
Downloaded From : www.EasyEngineering.net, , , , DATA TYPES, , The signed char is an 8-bit data type, ¾, , Use the MSB D7 to represent – or +, Give us values from –128 to +127, , ¾, , temperature, , ww, should stick with the unsigned char, w.EWe, unless the data needs to be, represented, asy as signed numbers, En, gin, eer, ing, .ne, t, , Signed char, , ¾, , , , Write an 8051 C program to send values of –4 to +4 to port P1., Solution:, , //Singed numbers, #include <reg51.h>, void main(void), {, char mynum[]={+1,-1,+2,-2,+3,-3,+4,-4};, unsigned char z;, for (z=0;z<=8;z++), P1=mynum[z];, }, , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 7, , Downloaded From : www.EasyEngineering.net
Page 253 :
Downloaded From : www.EasyEngineering.net, , DATA TYPES, , , , The unsigned int is a 16-bit data type, , ww, w.E, , ¾, , Unsigned and, Signed int, , ¾, , asy, , ¾, ¾, , , , En, , gin, , e, Signed int is a 16-bit data, eritype, ng., ne, ¾, ¾, , HANEL, , Takes a value in the range of 0 to 65535, (0000 – FFFFH), Define 16-bit variables such as memory, addresses, Set counter values of more than 256, Since registers and memory accesses are, in 8-bit chunks, the misuse of int variables, will result in a larger hex file, Use the MSB D15 to represent – or +, We have 15 bits for the magnitude of the, number from –32768 to +32767, , t, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 8, , Downloaded From : www.EasyEngineering.net
Page 255 :
Downloaded From : www.EasyEngineering.net, , DATA TYPES, , , , The bit data type allows access to, single bits of bit-addressable memory, spaces 20 – 2FH, To access the byte-size SFR registers,, we use the sfr data type, , ww, w.E, , Bit and sfr, , , , asy, , Data Type, , unsigned char, (signed) char, unsigned int, (signed) int, sbit, bit, sfr, , HANEL, , En, , Size in Bits, , Data Range/Usage, , 8-bit, 8-bit, 16-bit, 16-bit, 1-bit, 1-bit, 8-bit, , 0 to 255, -128 to +127, 0 to 65535, -32768 to +32767, SFR bit-addressable only, RAM bit-addressable only, RAM addresses 80 – FFH only, , gin, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 10, , Downloaded From : www.EasyEngineering.net
Page 256 :
Downloaded From : www.EasyEngineering.net, , TIME DELAY, , , , There are two way s to create a time, delay in 8051 C, , ww, w.E, , ¾, ¾, , Using the 8051 timer (Chap. 9), Using a simple for loop, be mindful of three factors that can affect, the accuracy of the delay, , asy, , En, , The 8051 design, – The number of machine cycle, – The number of clock periods per machine, cycle, The crystal frequency connected to the X1 – X2, input pins, Compiler choice, – C compiler converts the C statements and, functions to Assembly language instructions, – Different compilers produce different code, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 11, , Downloaded From : www.EasyEngineering.net
Page 257 :
Downloaded From : www.EasyEngineering.net, , TIME DELAY, , ww, w.E, (cont’), , Write an 8051 C program to toggle bits of P1 continuously forever, with some delay., Solution:, //Toggle P1 forever with some delay in between, //“on” and “off”, #include <reg51.h>, We must use the oscilloscope to, void main(void), measure the exact duration, {, unsigned int x;, for (;;), //repeat forever, {, p1=0x55;, for (x=0;x<40000;x++); //delay size, //unknown, p1=0xAA;, for (x=0;x<40000;x++);, }, }, , asy, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 12, , Downloaded From : www.EasyEngineering.net
Page 264 :
Downloaded From : www.EasyEngineering.net, , I/O, PROGRAMMING, , A door sensor is connected to the P1.1 pin, and a buzzer is connected, to P1.7. Write an 8051 C program to monitor the door sensor, and, when it opens, sound the buzzer. You can sound the buzzer by, sending a square wave of a few hundred Hz., , ww, w.E, , Solution:, , Bit-addressable, I/O, (cont’), , #include <reg51.h>, void MSDelay(unsigned int);, sbit Dsensor=P1^1;, sbit Buzzer=P1^7;, , asy, , En, , void main(void), {, Dsensor=1;, //make P1.1 an input, while (1), {, while (Dsensor==1)//while it opens, {, Buzzer=0;, MSDelay(200);, Buzzer=1;, MSDelay(200);, }, }, }, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 19, , Downloaded From : www.EasyEngineering.net
Page 265 :
Downloaded From : www.EasyEngineering.net, , I/O, PROGRAMMING, , The data pins of an LCD are connected to P1. The information is, latched into the LCD whenever its Enable pin goes from high to low., Write an 8051 C program to send “The Earth is but One Country” to, this LCD., , ww, w.E, , Bit-addressable, I/O, (cont’), , Solution:, , asy, , #include <reg51.h>, #define LCDData P1, sbit En=P2^0;, , En, , //LCDData declaration, //the enable pin, , void main(void), {, unsigned char message[], =“The Earth is but One Country”;, unsigned char z;, for (z=0;z<28;z++) //send 28 characters, {, LCDData=message[z];, En=1;, //a highEn=0;, //-to-low pulse to latch data, }, }, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 20, , Downloaded From : www.EasyEngineering.net
Page 267 :
Downloaded From : www.EasyEngineering.net, , I/O, PROGRAMMING, , ww, w.E, , Accessing SFR, Addresses, 80 - FFH, (cont’), , Write an 8051 C program to turn bit P1.5 on and off 50,000 times., Solution:, sbit MYBIT=0x95;, , We can access a single bit of any, SFR if we specify the bit address, , asy, , void main(void), {, unsigned int z;, for (z=0;z<50000;z++), {, MYBIT=1;, MYBIT=0;, }, }, , En, , gin, , eer, i, , ng., , Notice that there is no #include <reg51.h>., This allows us to access any byte of the SFR RAM, space 80 – FFH. This is widely used for the new, generation of 8051 microcontrollers., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 22, , Downloaded From : www.EasyEngineering.net
Page 269 :
Downloaded From : www.EasyEngineering.net, , LOGIC, OPERATIONS, , , , Logical operators, , ww Bit-wise operators, w.E, asy, En, gin, ee, ¾, , AND (&&), OR (||), and NOT (!), , ¾, , AND (&), OR (|), EX-OR (^), Inverter (~),, Shift Right (>>), and Shift Left (<<), , , , Bit-wise, Operators in C, , These operators are widely used in software, engineering for embedded systems and control, , Bit-wise Logic Operators for C, A, 0, 0, 1, 1, , HANEL, , B, 0, 1, 0, 1, , AND, , OR, , EX-OR, , Inverter, , A&B, 0, 0, 0, 1, , A|B, 0, 1, 1, 1, , A^B, 0, 1, 1, 0, , ~B, 1, 0, , rin, , g.n, e, , t, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 24, , Downloaded From : www.EasyEngineering.net
Page 280 :
Downloaded From : www.EasyEngineering.net, , ACCESSING, CODE ROM, , , , The 8051 C compiler allocates RAM, locations, , ww, w.E, , ¾, , RAM Data, Space Usage, by 8051 C, Compiler, , ¾, , Bank 0 – addresses 0 – 7, Individual variables – addresses 08 and, beyond, Array elements – addresses right after, variables, , asy, , ¾, , En, , gin, , Array elements need contiguous RAM locations, and that limits the size of the array due to the, fact that we have only 128 bytes of RAM for, everything, ¾, , HANEL, , eer, i, , ng., , Stack – addresses right after array, elements, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 35, , Downloaded From : www.EasyEngineering.net
Page 281 :
Downloaded From : www.EasyEngineering.net, , ACCESSING, CODE ROM, , ww, w.E, , RAM Data, Space Usage, by 8051 C, Compiler, (cont’), , Compile and single-step the following program on your 8051, simulator. Examine the contents of the 128-byte RAM space to locate, the ASCII values., Solution:, , asy, , #include <reg51.h>, , En, , void main(void), {, unsigned char mynum[]=“ABCDEF”; //RAM space, unsigned char z;, for (z=0;z<=6;z++), P1=mynum[z];, }, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 36, , Downloaded From : www.EasyEngineering.net
Page 282 :
Downloaded From : www.EasyEngineering.net, , ACCESSING, CODE ROM, , ww, w.E, , Write, compile and single-step the following program on your 8051, simulator. Examine the contents of the code space to locate the values., Solution:, , RAM Data, Space Usage, by 8051 C, Compiler, (cont’), , #include <reg51.h>, , asy, , void main(void), {, unsigned char mydata[100]; //RAM space, unsigned char x,z=0;, for (x=0;x<100;x++), {, z--;, mydata[x]=z;, P1=z;, }, }, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 37, , Downloaded From : www.EasyEngineering.net
Page 283 :
Downloaded From : www.EasyEngineering.net, , ACCESSING, CODE ROM, , , , One of the new features of the 8052, was an extra 128 bytes of RAM space, , ww, w.E, , ¾, , 8052 RAM Data, Space, , , , asy, , En, , We compile the C programs for the, 8052 microcontroller, ¾, ¾, , HANEL, , The extra 128 bytes of RAM helps the, 8051/52 C compiler to manage its, registers and resources much more, effectively, , gin, , eer, i, , Use the reg52.h header file, Choose the8052 option when compiling, the program, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 38, , Downloaded From : www.EasyEngineering.net
Page 284 :
Downloaded From : www.EasyEngineering.net, , ACCESSING, CODE ROM, , ww, w.E, (cont’), , Compile and single-step the following program on your 8051, simulator. Examine the contents of the code space to locate the ASCII, values., To make the C compiler use the, Solution:, code space instead of the RAM, space, we need to put the, #include <reg51.h>, keyword code in front of the, variable declaration, void main(void), {, code unsigned char mynum[]=“ABCDEF”;, unsigned char z;, for (z=0;z<=6;z++), P1=mynum[z];, }, , asy, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 39, , Downloaded From : www.EasyEngineering.net
Page 285 :
Downloaded From : www.EasyEngineering.net, , ACCESSING, CODE ROM, , ww, w.E, (cont’), , Compare and contrast the following programs and discuss the, advantages and disadvantages of each one., (a), , #include <reg51.h>, void main(void), {, P1=‘H’;, P1=‘E’;, P1=‘L’;, P1=‘L’;, P1=‘O’;, }, , asy, , En, , ..., , HANEL, , Short and simple, but the, individual characters are, embedded into the program and it, mixes the code and data together, , gin, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 40, , Downloaded From : www.EasyEngineering.net
Page 286 :
Downloaded From : www.EasyEngineering.net, , ACCESSING, CODE ROM, , ..., , ww, w.E, (cont’), , Use the RAM data space to store, array elements, therefore the size, of the array is limited, , (b), #include <reg51.h>, void main(void), {, unsigned char mydata[]=“HELLO”;, unsigned char z;, for (z=0;z<=5;z++), Use a separate area of the, P1=mydata[z];, }, code space for data. This, allows the size of the array to, (c), be as long as you want if you, #include <reg51.h>, have the on-chip ROM., void main(void), {, code unsigned char mydata[]=“HELLO”;, unsigned char z;, for (z=0;z<=5;z++), P1=mydata[z];, }, However, the more code space you use for data,, the less space is left for your program code, , asy, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 41, , Downloaded From : www.EasyEngineering.net
Page 287 :
Downloaded From : www.EasyEngineering.net, , DATA, SERIALIZATION, , , , Serializing data is a way of sending a, byte of data one bit at a time through, a single pin of microcontroller, , ww, w.E, , ¾, , Using the serial port (Chap. 10), Transfer data one bit a time and control, the sequence of data and spaces in, between them, , asy, , ¾, , En, , gin, , In many new generations of devices such as, LCD, ADC, and ROM the serial versions are, becoming popular since they take less space on, a PCB, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 42, , Downloaded From : www.EasyEngineering.net
Page 293 :
Downloaded From : www.EasyEngineering.net, , PIN, DESCRIPTION, , , , 8051 family members (e.g, 8751,, 89C51, 89C52, DS89C4x0), , ww, w.E, , ¾, , Have 40 pins dedicated for various, functions such as I/O, -RD, -WR, address,, data, and interrupts, Come in different packages, such as, , asy, , ¾, , En, , DIP(dual in-line package),, QFP(quad flat package), and, LLC(leadless chip carrier), , ¾, , HANEL, , gin, , eer, i, , Some companies provide a 20-pin version, of the 8051 with a reduced number of, I/O ports for less demanding applications, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 2, , Downloaded From : www.EasyEngineering.net
Page 308 :
Downloaded From : www.EasyEngineering.net, , EXPLAINING, INTEL HEX, FILE, , , , Intel hex file is a widely used file, format, , ww, w.E, , ¾, , , , asy, , Loaders that come with every ROM, burner (programmer) support the Intel, hex file format, ¾, , ¾, , HANEL, , Designed to standardize the loading of, executable machine codes into a ROM chip, , En, , gin, , In many newer Windows-based, assemblers the Intel hex file is produced, automatically (by selecting the right, setting), In DOS-based PC you need a utility called, OH (object-to-hex) to produce that, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 17, , Downloaded From : www.EasyEngineering.net
Page 309 :
Downloaded From : www.EasyEngineering.net, , EXPLAINING, INTEL HEX, FILE, , , , In the DOS environment, , ww, w.E, (cont’), , ¾, , The object file is fed into the linker, program to produce the abs file, The abs file is used by systems that have a, monitor program, , asy, , ¾, , Then the abs file is fed into the OH utility, to create the Intel hex file, , En, , gin, , The hex file is used only by the loader of an, EPROM programmer to load it into the ROM, chip, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 18, , Downloaded From : www.EasyEngineering.net
Page 312 :
Downloaded From : www.EasyEngineering.net, , Each line starts with a colon, , EXPLAINING, INTEL HEX, FILE, , ww, w.E, (cont’), , :CC, :10, :10, :07, :00, , Type –, 00, there are more, lines to come after, this line, 01, this is the last, line and the, loading should, stop after this line, , Count byte – how many bytes,, 00 to 16, are in the line, , asy, , 16-bit address – The loader, places the first byte of data, into this memory address, , AAAA, 0000, 0010, 0020, 0000, , TT, 00, 00, 00, 01, , En, , DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD, 75805575905575A0557DFA111C7580AA, 7590AA75A0AA7DFA111C80E47C237B4F, DBFEDCFADDF622, FF, , gin, , eer, i, , SS, 9F, 01, 35, , ng., , Real information (data or code) – There is a maximum, of 16 bytes in this part. The loader places this, information into successive memory locations of ROM, Single byte – this last byte is the checksum, byte of everything in that line, HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 21, , Downloaded From : www.EasyEngineering.net
Page 313 :
Downloaded From : www.EasyEngineering.net, , EXPLAINING, INTEL HEX, FILE, , Example 8-4, , ww, w.E, (cont’), , Verify the checksum byte for line 3 of Figure 8-9. Verify also that, the information is not corrupted., Solution:, , asy, , :07, :07 0020, 0020 00, 00 DBFEDCFADDF622, DBFEDCFADDF622, , En, , 35, 35, , 07+00+20+00+DB+FE+DC+FA+DD+F6+22=5CBH, Dropping the carry 5, , gin, , 2’s complement, , CBH, , eer, i, , 35H, , ng., , If we add all the information including the checksum byte, and drop, the carries, we get 00., 5CBH + 35H = 600H, , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 22, , Downloaded From : www.EasyEngineering.net
Page 315 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, TIMERS, , , , The 8051 has two timers/counters,, they can be used either as, , ww, w.E, , ¾, ¾, , , , a, syTimer, Both, 0 and Timer 1 are 16 bits, wide En, gin, eer, ing, .ne, t, ¾, , HANEL, , Timers to generate a time delay or as, Event counters to count events happening, outside the microcontroller, , Since 8051 has an 8-bit architecture, each, 16-bits timer is accessed as two separate, registers of low byte and high byte, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 2, , Downloaded From : www.EasyEngineering.net
Page 317 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, TIMERS, , , , Both timers 0 and 1 use the same, register, called TMOD (timer mode), to, set the various timer operation modes, TMOD is a 8-bit register, , ww, w.E, , TMOD, Register, , , , asy, , ¾, ¾, ¾, , The lower 4 bits are for Timer 0, The upper 4 bits are for Timer 1, In each case,, , En, , gin, , The lower 2 bits are used to set the timer mode, The upper 2 bits to specify the operation, (MSB), GATE, , C/T, , M1, , Timer1, , HANEL, , M0, , eer, i, , GATE, , C/T, , ng., M1, , Timer0, , (LSB), M0, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 4, , Downloaded From : www.EasyEngineering.net
Page 318 :
Downloaded From : www.EasyEngineering.net, , (MSB), , PROGRAMMING, TIMERS, , GATE, , ww, w.E, , TMOD, Register, (cont’), , C/T, , M1, , M0, , GATE, , Timer1, , asy, , Gating control when set., Timer/counter is enable, only while the INTx pin is, high and the TRx control, pin is set, When cleared, the timer is, enabled whenever the TRx, control bit is set, , HANEL, , (LSB), C/T, , M1, , M0, , Timer0, , M1, , M0, , 0, , 0, , En, 0, , 1, , 1, , 0, , 1, , 1, , Operating Mode, , Mode, , 0, , 13-bit timer mode, 8-bit timer/counter THx with TLx as 5-bit, prescaler, , 1, , 16-bit timer mode, 16-bit timer/counter THx and TLx are, cascaded; there is no prescaler, , gin, 2, , 8-bit auto reload, 8-bit auto reload timer/counter; THx holds a, value which is to be reloaded TLx each time, it overfolws, , 3, , Split timer mode, , eer, i, , ng., , net, , Timer or counter selected, Cleared for timer operation (input from internal, system clock), Set for counter operation (input from Tx input pin), , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 5, , Downloaded From : www.EasyEngineering.net
Page 319 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, TIMERS, , Example 9-1, Indicate which mode and which timer are selected for each of the following., (a) MOV TMOD, #01H (b) MOV TMOD, #20H (c) MOV TMOD, #12H, , ww, w.E, , TMOD, Register, (cont’), , Solution:, We convert the value from hex to binary. From Figure 9-3 we have:, (a) TMOD = 00000001, mode 1 of timer 0 is selected., (b) TMOD = 00100000, mode 2 of timer 1 is selected., (c) TMOD = 00010010, mode 2 of timer 0, and mode 1 of timer 1 are, selected., , asy, , En, , gin, , If C/T = 0, it is used, Example 9-2, as a timer for time, delay generation., Find the timer’s clock frequency and its period for various 8051-based system,, The clock source for, with the crystal frequency 11.0592 MHz when C/T bit of TMOD is 0., the time delay is the, Solution:, crystal frequency of, XTAL, ÷12, the 8051, , eer, i, , oscillator, , 1/12 × 11.0529 MHz = 921.6 MHz;, T = 1/921.6 kHz = 1.085 us, , HANEL, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 6, , Downloaded From : www.EasyEngineering.net
Page 320 :
Downloaded From : www.EasyEngineering.net, , , , PROGRAMMING, TIMERS, , Timers of 8051 do starting and stopping, by either software or hardware control, , ww, w.E, , TMOD, Register, GATE, , ¾, , In using software to start and stop the timer, where GATE=0, The start and stop of the timer are controlled by, way of software by the TR (timer start) bits TR0, and TR1, – The SETB instruction starts it, and it is, stopped by the CLR instruction, – These instructions start and stop the timers, as long as GATE=0 in the TMOD register, , asy, , En, , ¾, , gin, , The hardware way of starting and stopping, the timer by an external source is achieved, by making GATE=1 in the TMOD register, , eer, i, , ng., , • Timer 0, mode 2, • C/T = 0 to use, XTAL clock source, Find the value for TMOD if we want to program timer 0 in mode 2,, • gate = 0 to use, use 8051 XTAL for the clock source, and use instructions to start, internal (software) start, and stop the timer., and stop method., TMOD = 0000 0010, , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 7, , Downloaded From : www.EasyEngineering.net
Page 321 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, TIMERS, , , , The following are the characteristics, and operations of mode1:, , ww, w.E, , Mode 1, Programming, , 1., , It is a 16-bit timer; therefore, it allows, value of 0000 to FFFFH to be loaded into, the timer’s register TL and TH, After TH and TL are loaded with a 16-bit, initial value, the timer must be started, , asy, , 2., , , , 3., , gin, , After the timer is started, it starts to, count up, , , XTAL, oscillator, , En, , This is done by SETB TR0 for timer 0 and, SETB TR1 for timer 1, , It counts up until it reaches its limit of FFFFH, , ng., , TH, , ÷12, C/T = 0, , HANEL, , eer, i, , TR, , TL, , net, , TF goes high, when FFFF → 0, , TF, , Overflow, flag, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 8, , Downloaded From : www.EasyEngineering.net
Page 322 :
Downloaded From : www.EasyEngineering.net, , 3., , PROGRAMMING, TIMERS, , ww, w.E, , Mode 1, Programming, (cont’), , (cont’), When it rolls over from FFFFH to 0000, it sets, high a flag bit called TF (timer flag), – Each timer has its own timer flag: TF0 for, timer 0, and TF1 for timer 1, – This timer flag can be monitored, When this timer flag is raised, one option, would be to stop the timer with the, instructions CLR TR0 or CLR TR1, for timer 0, and timer 1, respectively, , asy, , 4., , En, , After the timer reaches its limit and rolls, over, in order to repeat the process, , , , XTAL, oscillator, , gin, , ng., , TH, , ÷12, C/T = 0, , HANEL, , eer, i, , TH and TL must be reloaded with the original, value, and, TF must be reloaded to 0, , TR, , TL, , net, , TF goes high, when FFFF → 0, , TF, , Overflow, flag, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 9, , Downloaded From : www.EasyEngineering.net
Page 323 :
Downloaded From : www.EasyEngineering.net, , , , PROGRAMMING, TIMERS, , To generate a time delay, 1., , ww, w.E, , Mode 1, Programming, , Steps to Mode 1, Program, , Load the TMOD value register indicating, which timer (timer 0 or timer 1) is to be, used and which timer mode (0 or 1) is, selected, Load registers TL and TH with initial count, value, Start the timer, Keep monitoring the timer flag (TF) with, the JNB TFx,target instruction to see, if it is raised, , asy, , 2., 3., 4., , En, , , 5., 6., 7., , HANEL, , gin, , eer, i, , Get out of the loop when TF becomes high, , ng., , Stop the timer, Clear the TF flag for the next round, Go back to Step 2 to load TH and TL, again, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 10, , Downloaded From : www.EasyEngineering.net
Page 326 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, TIMERS, , Example 9-5, In Example 9-4, calculate the amount of time delay in the DELAY, subroutine generated by the timer. Assume XTAL = 11.0592 MHz., , ww, w.E, , Mode 1, Programming, , Steps to Mode 1, Program, (cont’), , Solution:, The timer works with a clock frequency of 1/12 of the XTAL, frequency; therefore, we have 11.0592 MHz / 12 = 921.6 kHz as the, timer frequency. As a result, each clock has a period of T =, 1/921.6kHz = 1.085us. In other words, Timer 0 counts up each 1.085, us resulting in delay = number of counts × 1.085us., , asy, , En, , The number of counts for the roll over is FFFFH – FFF2H = 0DH (13, decimal). However, we add one to 13 because of the extra clock, needed when it rolls over from FFFF to 0 and raise the TF flag. This, gives 14 × 1.085us = 15.19us for half the pulse. For the entire period it, is T = 2 × 15.19us = 30.38us as the time delay generated by the timer., , gin, , (a) in hex, (FFFF – YYXX + 1) ×, 1.085 us, where YYXX, are TH, TL initial, values respectively., Notice that value, YYXX are in hex., , HANEL, , eer, i, , ng., , (b) in decimal, Convert YYXX values, of the TH, TL register, to decimal to get a, NNNNN decimal, then, (65536 - NNNN) ×, 1.085 us, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 13, , Downloaded From : www.EasyEngineering.net
Page 327 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, TIMERS, , Example 9-6, In Example 9-5, calculate the frequency of the square wave generated, on pin P1.5., , ww, w.E, , Mode 1, Programming, , Steps to Mode 1, Program, (cont’), , Solution:, In the timer delay calculation of Example 9-5, we did not include the, overhead due to instruction in the loop. To get a more accurate timing,, we need to add clock cycles due to this instructions in the loop. To do, that, we use the machine cycle from Table A-1 in Appendix A, as, shown below., Cycles, HERE: MOV TL0,#0F2H, 2, MOV TH0,#0FFH, 2, CPL P1.5, 1, ACALL DELAY, 2, SJMP HERE, 2, DELAY:, SETB TR0, 1, AGAIN: JNB TF0,AGAIN, 14, CLR TR0, 1, CLR TF0, 1, RET, 2, Total, 28, T = 2 × 28 × 1.085 us = 60.76 us and F = 16458.2 Hz, , asy, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 14, , Downloaded From : www.EasyEngineering.net
Page 329 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, TIMERS, , Example 9-8, Modify TL and TH in Example 9-7 to get the largest time delay, possible. Find the delay in ms. In your calculation, exclude the, overhead due to the instructions in the loop., , ww, w.E, , Mode 1, Programming, , Steps to Mode 1, Program, (cont’), , Solution:, To get the largest delay we make TL and TH both 0. This will count, up from 0000 to FFFFH and then roll over to zero., , asy, , CLR, MOV, HERE: MOV, MOV, SETB, SETB, AGAIN: JNB, CLR, CLR, CLR, , P2.3, ;Clear P2.3, TMOD,#01 ;Timer 0, 16-bitmode, TL0,#0 ;TL0=0, the low byte, TH0,#0 ;TH0=0, the high byte, P2.3, ;SET high P2.3, TR0, ;Start timer 0, TF0,AGAIN ;Monitor timer flag 0, TR0, ;Stop the timer 0, TF0, ;Clear timer 0 flag, P2.3, , En, , gin, , eer, i, , ng., , Making TH and TL both zero means that the timer will count from, 0000 to FFFF, and then roll over to raise the TF flag. As a result, it, goes through a total Of 65536 states. Therefore, we have delay =, (65536 - 0) × 1.085 us = 71.1065ms., HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 16, , Downloaded From : www.EasyEngineering.net
Page 330 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, TIMERS, , Example 9-9, The following program generates a square wave on P1.5 continuously, using timer 1 for a time delay. Find the frequency of the square, wave if XTAL = 11.0592 MHz. In your calculation do not, include the overhead due to Instructions in the loop., , ww, w.E, , Mode 1, Programming, , Steps to Mode 1, Program, (cont’), , MOV, AGAIN: MOV, MOV, SETB, BACK: JNB, CLR, CPL, CLR, SJMP, , asy, , TMOD,#10;Timer 1, mod 1 (16-bitmode), TL1,#34H ;TL1=34H, low byte of timer, TH1,#76H ;TH1=76H, high byte timer, TR1, ;start the timer 1, TF1,BACK ;till timer rolls over, TR1, ;stop the timer 1, P1.5, ;comp. p1. to get hi, lo, TF1, ;clear timer flag 1, AGAIN, ;is not auto-reload, , En, , gin, , eer, i, , Solution:, Since FFFFH – 7634H = 89CBH + 1 = 89CCH and 89CCH = 35276, clock count and 35276 × 1.085 us = 38.274 ms for half of the, square wave. The frequency = 13.064Hz., Also notice that the high portion and low portion of the square wave, pulse are equal. In the above calculation, the overhead due to all, the instruction in the loop is not included., , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 17, , Downloaded From : www.EasyEngineering.net
Page 331 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, TIMERS, , , , To calculate the values to be loaded, into the TL and TH registers, look at, the following example, , ww, w.E, , Mode 1, Programming, Finding the, Loaded Timer, Values, , ¾, , Assume XTAL = 11.0592 MHz, we can, use the following steps for finding the TH,, TL registers’ values, , asy, , En, , 1. Divide the desired time delay by 1.085 us, 2. Perform 65536 – n, where n is the decimal, value we got in Step1, 3. Convert the result of Step2 to hex, where, yyxx is the initial hex value to be loaded into, the timer’s register, 4. Set TL = xx and TH = yy, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 18, , Downloaded From : www.EasyEngineering.net
Page 332 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, TIMERS, , Example 9-10, Assume that XTAL = 11.0592 MHz. What value do we need to load, the timer’s register if we want to have a time delay of 5 ms, (milliseconds)? Show the program for timer 0 to create a pulse width, of 5 ms on P2.3., , ww, w.E, , Mode 1, Programming, Finding the, Loaded Timer, Values, (cont’), , HANEL, , Solution:, Since XTAL = 11.0592 MHz, the counter counts up every 1.085 us., This means that out of many 1.085 us intervals we must make a 5 ms, pulse. To get that, we divide one by the other. We need 5 ms / 1.085, us = 4608 clocks. To Achieve that we need to load into TL and TH, the value 65536 – 4608 = EE00H. Therefore, we have TH = EE and, TL = 00., , asy, , En, , CLR, MOV, HERE: MOV, MOV, SETB, SETB, AGAIN: JNB, CLR, CLR, , gin, , eer, i, , P2.3, ;Clear P2.3, TMOD,#01 ;Timer 0, 16-bitmode, TL0,#0 ;TL0=0, the low byte, TH0,#0EEH ;TH0=EE, the high byte, P2.3, ;SET high P2.3, TR0, ;Start timer 0, TF0,AGAIN ;Monitor timer flag 0, TR0, ;Stop the timer 0, TF0, ;Clear timer 0 flag, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 19, , Downloaded From : www.EasyEngineering.net
Page 333 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, TIMERS, , Example 9-11, Assume that XTAL = 11.0592 MHz, write a program to generate a, square wave of 2 kHz frequency on pin P1.5., , ww, w.E, , Mode 1, Programming, Finding the, Loaded Timer, Values, (cont’), , HANEL, , Solution:, This is similar to Example 9-10, except that we must toggle the bit to, generate the square wave. Look at the following steps., (a) T = 1 / f = 1 / 2 kHz = 500 us the period of square wave., (b) 1 / 2 of it for the high and low portion of the pulse is 250 us., (c) 250 us / 1.085 us = 230 and 65536 – 230 = 65306 which in hex, is FF1AH., (d) TL = 1A and TH = FF, all in hex. The program is as follow., , asy, , En, , MOV, AGAIN: MOV, MOV, SETB, BACK: JNB, CLR, CLR, CLR, SJMP, , gin, , eer, i, , TMOD,#01 ;Timer 0, 16-bitmode, TL1,#1AH ;TL1=1A, low byte of timer, TH1,#0FFH ;TH1=FF, the high byte, TR1, ;Start timer 1, TF1,BACK ;until timer rolls over, TR1, ;Stop the timer 1, P1.5, ;Clear timer flag 1, TF1, ;Clear timer 1 flag, AGAIN, ;Reload timer, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 20, , Downloaded From : www.EasyEngineering.net
Page 334 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, TIMERS, , Example 9-12, Assume XTAL = 11.0592 MHz, write a program to generate a square, wave of 50 kHz frequency on pin P2.3., , ww, w.E, , Mode 1, Programming, Finding the, Loaded Timer, Values, (cont’), , HANEL, , Solution:, Look at the following steps., (a) T = 1 / 50 = 20 ms, the period of square wave., (b) 1 / 2 of it for the high and low portion of the pulse is 10 ms., (c) 10 ms / 1.085 us = 9216 and 65536 – 9216 = 56320 in decimal,, and in hex it is DC00H., (d) TL = 00 and TH = DC (hex)., , asy, , MOV, AGAIN: MOV, MOV, SETB, BACK: JNB, CLR, CLR, SJMP, , En, , gin, , TMOD,#10H, TL1,#00, TH1,#0DCH, TR1, TF1,BACK, TR1, P2.3, AGAIN, , ;Timer 1, mod 1, ;TL1=00,low byte of timer, ;TH1=DC, the high byte, ;Start timer 1, ;until timer rolls over, ;Stop the timer 1, ;Comp. p2.3 to get hi, lo, ;Reload timer, ;mode 1 isn’t auto-reload, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 21, , Downloaded From : www.EasyEngineering.net
Page 336 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, TIMERS, , , , The following are the characteristics, and operations of mode 2:, , ww, w.E, , Mode 2, Programming, , 1., , It is an 8-bit timer; therefore, it allows, only values of 00 to FFH to be loaded, into the timer’s register TH, After TH is loaded with the 8-bit value,, the 8051 gives a copy of it to TL, , asy, , 2., , , , , 3., , gin, , eer, i, , After the timer is started, it starts to, count up by incrementing the TL register, , , , HANEL, , En, , Then the timer must be started, This is done by the instruction SETB TR0 for, timer 0 and SETB TR1 for timer 1, , ng., , It counts up until it reaches its limit of FFH, When it rolls over from FFH to 00, it sets high, the TF (timer flag), , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 23, , Downloaded From : www.EasyEngineering.net
Page 337 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, TIMERS, , 4., , ww, w.E, , Mode 2, Programming, (cont’), , When the TL register rolls from FFH to 0, and TF is set to 1, TL is reloaded, automatically with the original value kept, by the TH register, , , To repeat the process, we must simply clear, TF and let it go without any need by the, programmer to reload the original value, This makes mode 2 an auto-reload, in, contrast with mode 1 in which the, programmer has to reload TH and TL, , asy, , , XTAL, oscillator, , En, , gin, , eer, i, , ÷12, C/T = 0, , ng., , TR, , Reload, , TH, , HANEL, , TF, , TL, , Overflow, flag, , net, , TF goes high, when FF → 0, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 24, , Downloaded From : www.EasyEngineering.net
Page 338 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, TIMERS, , , , To generate a time delay, , ww, w.E, , 1., , Mode 2, Programming, , 2., , Steps to Mode 2, Program, , 3., , Load the TMOD value register indicating, which timer (timer 0 or timer 1) is to be, used, and the timer mode (mode 2) is, selected, Load the TH registers with the initial, count value, Start timer, Keep monitoring the timer flag (TF) with, the JNB TFx,target instruction to see, whether it is raised, , asy, , 4., , En, , , 5., 6., , HANEL, , gin, , eer, i, , ng., , Get out of the loop when TF goes high, , Clear the TF flag, Go back to Step4, since mode 2 is autoreload, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 25, , Downloaded From : www.EasyEngineering.net
Page 339 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, TIMERS, , Example 9-14, Assume XTAL = 11.0592 MHz, find the frequency of the square, wave generated on pin P1.0 in the following program, , ww, w.E, , Mode 2, Programming, , Steps to Mode 2, Program, (cont’), , MOV, MOV, SETB, JNB, CPL, CLR, SJMP, , asy, , BACK:, , TMOD,#20H, TH1,#5, TR1, TF1,BACK, P1.0, TF1, BACK, , En, , ;T1/8-bit/auto reload, ;TH1 = 5, ;start the timer 1, ;till timer rolls over, ;P1.0 to hi, lo, ;clear Timer 1 flag, ;mode 2 is auto-reload, , gin, , Solution:, First notice the target address of SJMP. In mode 2 we do not need to, reload TH since it is auto-reload. Now (256 - 05) × 1.085 us =, 251 × 1.085 us = 272.33 us is the high portion of the pulse. Since, it is a 50% duty cycle square wave, the period T is twice that; as, a result T = 2 × 272.33 us = 544.67 us and the frequency =, 1.83597 kHz, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 26, , Downloaded From : www.EasyEngineering.net
Page 341 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, TIMERS, , Example 9-16, Assuming that we are programming the timers for mode 2, find the, value (in hex) loaded into TH for each of the following cases., , ww, w.E, , Mode 2, Programming, , (a) MOV, (c) MOV, (e) MOV, , (b) MOV, (d) MOV, , TH1,#-200, TH1,#-3, TH0,#-48, , asy, , TH0,#-60, TH1,#-12, , Solution:, Steps to Mode 2, You can use the Windows scientific calculator to verify the result, Program, provided by the assembler. In Windows calculator, select, decimal and enter 200. Then select hex, then +/- to get the TH, (cont’), value. Remember that we only use the right two digits and ignore, the rest since our data is an 8-bit data., Decimal, 2’s complement (TH value), -3, FDH, -12, F4H, The advantage of using, The number 200 is the, negative values is that you, -48, D0H, timer count till the TF, don’t need to calculate the, -60, C4H, is set to 1, value loaded to THx, -200, 38H, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 28, , Downloaded From : www.EasyEngineering.net
Page 342 :
Downloaded From : www.EasyEngineering.net, , COUNTER, PROGRAMMING, , , , Timers can also be used as counters, counting events happening outside the, 8051, , ww, w.E, , ¾, , When it is used as a counter, it is a pulse, outside of the 8051 that increments the, TH, TL registers, TMOD and TH, TL registers are the same, as for the timer discussed previously, , asy, , ¾, , , , g, intimer, Programming the, in the last, e, section also applies toeprogramming, it, r, ing, as a counter, .ne, t, ¾, , HANEL, , En, , Except the source of the frequency, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 29, , Downloaded From : www.EasyEngineering.net
Page 343 :
Downloaded From : www.EasyEngineering.net, , COUNTER, PROGRAMMING, , , , The C/T bit in the TMOD registers, decides the source of the clock for the, timer, , ww, w.E, , C/T Bit in, TMOD Register, , ¾, , When C/T = 1, the timer is used as a, counter and gets its pulses from outside, the 8051, , asy, , En, , The counter counts up as pulses are fed from, pins 14 and 15, these pins are called T0 (timer, 0 input) and T1 (timer 1 input), , gin, , eer, i, , Port 3 pins used for Timers 0 and 1, , HANEL, , ng., , Pin, , Port Pin, , Function, , Description, , 14, , P3.4, , T0, , Timer/counter 0 external input, , 15, , P3.5, , T1, , Timer/counter 1 external input, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 30, , Downloaded From : www.EasyEngineering.net
Page 345 :
Downloaded From : www.EasyEngineering.net, , COUNTER, PROGRAMMING, , Timer with external input (Mode 1), , ww, w.E, , C/T Bit in, TMOD Register, (cont’), , Timer, external, input pin, 3.4 or 3.5, , Overflow, flag, , asy, , TH, , C/T = 1, , TF, , TL, , TF goes high, when FFFF → 0, , TR, , En, , gin, , Timer with external input (Mode 2), Timer, external, input pin, 3.4 or 3.5, C/T = 1, , eer, i, , TL, TR, , Reload, , TH, , HANEL, , Overflow, flag, , ng., TF, , net, , TF goes high, when FF → 0, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 32, , Downloaded From : www.EasyEngineering.net
Page 348 :
Downloaded From : www.EasyEngineering.net, , COUNTER, PROGRAMMING, , , , If GATE = 1, the start and stop of the, timer are done externally through pins, P3.2 and P3.3 for timers 0 and 1,, respectively, , ww, w.E, , TCON, Register, , Case of GATE = 1, , asy, , ¾, , This hardware way allows to start or stop, the timer externally at any time via a, simple switch, , En, , XTAL, oscillator, , gin, , Tx Pin, Pin 3.4 or 3.5, Gate, INT0 Pin, Pin 3.2 or 3.3, , HANEL, , ÷12, , eer, i, , C/T = 0, , ng., , C/T = 1, , TR, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 35, , Downloaded From : www.EasyEngineering.net
Page 350 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, TIMERS IN C, , , , To speed up the 8051, many recent, versions of the 8051 have reduced the, number of clocks per machine cycle, from 12 to four, or even one, The frequency for the timer is always, 1/12th the frequency of the crystal, attached to the 8051, regardless of the, 8051 version, , ww, w.E, , Calculating, Delay Length, Using Timers, , , , asy, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 37, , Downloaded From : www.EasyEngineering.net
Page 355 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, TIMERS IN C, , Example 9-23, Write an 8051 C program to toggle only pin P1.5 continuously every, 250 ms. Use Timer 0, mode 2 (8-bit auto-reload) to create the, delay., , ww, w.E, , Times 0/1, Delay Using, Mode 2 (8-bit, Auto-reload), , Solution:, #include <reg51.h>, void T0M2Delay(void);, sbit mybit=P1^5;, void main(void){, Due to overhead of the for loop, unsigned char x,y;, in C, we put 36 instead of 40, while (1) {, mybit=~mybit;, for (x=0;x<250;x++), for (y=0;y<36;y++) //we put 36, not 40, T0M2Delay();, }, }, void T0M2Delay(void){, TMOD=0x02;, 256 – 23 = 233, TH0=-23;, TR0=1;, 23 × 1.085 μs = 25 μs and, while (TF0==0);, 25 μs × 250 × 40 = 250 ms, TR0=0;, TF0=0;, }, , asy, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 42, , Downloaded From : www.EasyEngineering.net
Page 360 :
Downloaded From : www.EasyEngineering.net, , BASICS OF, SERIAL, COMMUNICATION, , , , Computers transfer data in two ways:, , ww, w.E, , ¾, , Parallel, Often 8 or more lines (wire conductors) are, used to transfer data to a device that is only a, few feet away, , asy, , ¾, , Serial, , En, , To transfer to a device located many meters, away, the serial method is used, The data is sent one bit at a time, , Serial Transfer, , gin, , eer, i, , Parallel Transfer, , ng., , D0, , Sender, , Receiver, , Sender, , D7, , HANEL, , net, Receiver, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 2, , Downloaded From : www.EasyEngineering.net
Page 361 :
Downloaded From : www.EasyEngineering.net, , BASICS OF, SERIAL, COMMUNICATION, , , , At the transmitting end, the byte of, data must be converted to serial bits, using parallel-in-serial-out shift register, At the receiving end, there is a serialin-parallel-out shift register to receive, the serial data and pack them into byte, When the distance is short, the digital, signal can be transferred as it is on a, simple wire and requires no modulation, If data is to be transferred on the, telephone line, it must be converted, from 0s and 1s to audio tones, , ww, w.E, , , (cont’), , , , , , asy, , En, , ¾, , HANEL, , gin, , eer, i, , ng., , net, , This conversion is performed by a device, called a modem, “Modulator/demodulator”, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 3, , Downloaded From : www.EasyEngineering.net
Page 362 :
Downloaded From : www.EasyEngineering.net, , BASICS OF, SERIAL, COMMUNICATION, , , , Serial data communication uses two, methods, , ww, w.E, (cont’), , , , ¾, , Synchronous method transfers a block of, , ¾, , Asynchronous method transfers a single, , data at a time, , a, s, y, It is possible, to write software to use, either ofE, these, methods, but the, n, programs cangbe, and long, intedious, eer, ing, .ne, t, ¾, , byte at a time, , There are special IC chips made by many, manufacturers for serial communications, UART (universal asynchronous Receivertransmitter), USART (universal synchronous-asynchronous, Receiver-transmitter), , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 4, , Downloaded From : www.EasyEngineering.net
Page 363 :
Downloaded From : www.EasyEngineering.net, , BASICS OF, SERIAL, COMMUNICATION, , , , If data can be transmitted and received,, it is a duplex transmission, , ww, w.E, , Half- and FullDuplex, Transmission, , ¾, ¾, , , , If data transmitted one way a time, it is, referred to as half duplex, If data can go both ways at a time, it is full, , duplex, , asy, , This is contrast to simplex transmission, , Simplex, , Half Duplex, , En, , gin, , Transmitter, Receiver, , Full Duplex, , Transmitter, Receiver, , HANEL, , Receiver, , Transmitter, , eer, i, , Receiver, , ng., , Transmitter, , net, , Receiver, , Transmitter, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 5, , Downloaded From : www.EasyEngineering.net
Page 364 :
Downloaded From : www.EasyEngineering.net, , BASICS OF, SERIAL, COMMUNICATION, , , , A protocol is a set of rules agreed by, both the sender and receiver on, , ww, w.E, , Start and Stop, Bits, , ¾, ¾, ¾, , , , asy, , Asynchronous serial data, communication is widely used for, character-oriented transmissions, ¾, ¾, , , , HANEL, , How the data is packed, How many bits constitute a character, When the data begins and ends, , En, , gin, , Each character is placed in between start, and stop bits, this is called framing, Block-oriented data transfers use the, synchronous method, , eer, i, , ng., , The start bit is always one bit, but the, stop bit can be one or two bits, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 6, , Downloaded From : www.EasyEngineering.net
Page 365 :
Downloaded From : www.EasyEngineering.net, , BASICS OF, SERIAL, COMMUNICATION, , , , The start bit is always a 0 (low) and the, stop bit(s) is 1 (high), , ww, w.E, , Start and Stop, Bits, (cont’), , ASCII character “A” (8-bit binary 0100 0001), , asy, , Space, , Stop, Bit, , 0, , En, , D7, , Goes out last, , The 0 (low) is, referred to as space, , HANEL, , 1, , 0, , 0, , 0, , gin, , The transmission begins with a, start bit followed by D0, the, LSB, then the rest of the bits, until MSB (D7), and finally,, the one stop bit indicating the, end of the character, , 0, , 0, , 1, , Start Mark, Bit, , eer, i, , D0, , Goes out first, , ng., , net, , When there is no, transfer, the signal, is 1 (high), which is, referred to as mark, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 7, , Downloaded From : www.EasyEngineering.net
Page 366 :
Downloaded From : www.EasyEngineering.net, , BASICS OF, SERIAL, COMMUNICATION, , , , Due to the extended ASCII characters,, 8-bit ASCII data is common, , ww, w.EIn modern PCs the use of one stop bit, is standard, asy, En, gin, eer, ing, .ne, t, , Start and Stop, Bits, (cont’), , HANEL, , ¾, , In older systems, ASCII characters were 7bit, , ¾, , In older systems, due to the slowness of, the receiving mechanical device, two stop, bits were used to give the device sufficient, time to organize itself before transmission, of the next byte, , , , Department of Computer Science and Information Engineering, National Cheng Kung University, , 8, , Downloaded From : www.EasyEngineering.net
Page 367 :
Downloaded From : www.EasyEngineering.net, , BASICS OF, SERIAL, COMMUNICATION, , , , Assuming that we are transferring a, text file of ASCII characters using 1, stop bit, we have a total of 10 bits for, each character, , ww, w.E, , Start and Stop, Bits, (cont’), , ¾, , , , This gives 25% overhead, i.e. each 8-bit, character with an extra 2 bits, , asy, , In some systems in order to maintain, data integrity, the parity bit of the, character byte is included in the data, frame, , En, , ¾, , gin, , eer, i, , UART chips allow programming of the, parity bit for odd-, even-, and no-parity, options, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 9, , Downloaded From : www.EasyEngineering.net
Page 368 :
Downloaded From : www.EasyEngineering.net, , BASICS OF, SERIAL, COMMUNICATION, , , , The rate of data transfer in serial data, communication is stated in bps (bits per, second), Another widely used terminology for, bps is baud rate, , ww, w.E, , , asy, , ¾, , Data Transfer, Rate, , ¾, , , , It is modem terminology and is defined as, the number of signal changes per second, In modems, there are occasions when a, single change of signal transfers several, bits of data, , En, , gin, , eer, i, , As far as the conductor wire is, concerned, the baud rate and bps are, the same, and we use the terms, interchangeably, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 10, , Downloaded From : www.EasyEngineering.net
Page 369 :
Downloaded From : www.EasyEngineering.net, , BASICS OF, SERIAL, COMMUNICATION, , , , The data transfer rate of given, computer system depends on, communication ports incorporated into, that system, , ww, w.E, , Data Transfer, Rate, (cont’), , ¾, , IBM PC/XT could transfer data at the rate, of 100 to 9600 bps, Pentium-based PCs transfer data at rates as, high as 56K bps, In asynchronous serial data communication,, the baud rate is limited to 100K bps, , asy, , ¾, ¾, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 11, , Downloaded From : www.EasyEngineering.net
Page 370 :
Downloaded From : www.EasyEngineering.net, , BASICS OF, SERIAL, COMMUNICATION, , , , An interfacing standard RS232 was set, by the Electronics Industries Association, (EIA) in 1960, The standard was set long before the, advent of the TTL logic family, its input, and output voltage levels are not TTL, compatible, , ww, w.E, , RS232, Standards, , , , asy, , ¾, , En, , In RS232, a 1 is represented by -3 ~ -25 V,, while a 0 bit is +3 ~ +25 V, making -3 to, +3 undefined, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 12, , Downloaded From : www.EasyEngineering.net
Page 371 :
Downloaded From : www.EasyEngineering.net, , RS232 DB-25 Pins, , BASICS OF, SERIAL, COMMUNICATION, , Pin, , Description, , Pin, , Description, , 1, , Protective ground, , 14, , Secondary transmitted data, , 2, , Transmitted data (TxD), , 15, , Transmitted signal element timing, , 3, , Received data (RxD), , 16, , Secondary receive data, , 4, , Request to send (-RTS), , 17, , Receive signal element timing, , 5, , Clear to send (-CTS), , 18, , Unassigned, , Data set ready (-DSR), , 19, , Secondary receive data, , Signal ground (GND), , 20, , Data terminal ready (-DTR), , Data carrier detect (-DCD), , 21, , Signal quality detector, , 9/10, , Reserved for data testing, , 22, , Ring indicator (RI), , 11, , Unassigned, , 23, , Data signal rate select, , 12, , Secondary data carrier detect, , 24, , Transmit signal element timing, , 13, , Secondary clear to send, , 25, , Unassigned, , ww, w.E, 6, , RS232, Standards, (cont’), , 7, 8, , asy, , En, , gin, , RS232 Connector DB-25, , HANEL, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 13, , Downloaded From : www.EasyEngineering.net
Page 372 :
Downloaded From : www.EasyEngineering.net, , BASICS OF, SERIAL, COMMUNICATION, , , , Since not all pins are used in PC cables,, IBM introduced the DB-9 version of the, serial I/O standard, , ww, w.E, , RS232, Standards, (cont’), , HANEL, , RS232 Connector DB-9, , asy, , En, , gin, , RS232 DB-9 Pins, Pin, , Description, , 1, , Data carrier detect (-DCD), , 2, , Received data (RxD), , 3, , Transmitted data (TxD), , 4, , Data terminal ready (DTR), , 5, , Signal ground (GND), , 6, , Data set ready (-DSR), , 7, , Request to send (-RTS), , 8, , Clear to send (-CTS), , 9, , Ring indicator (RI), , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 14, , Downloaded From : www.EasyEngineering.net
Page 374 :
Downloaded From : www.EasyEngineering.net, , BASICS OF, SERIAL, COMMUNICATION, , , , DTR (data terminal ready), , ww, w.EDSR (data set ready), asy, E, RTS (request, ngtoisend), nee, ri, CTS (clear to send), ¾, , When terminal is turned on, it sends out, signal DTR to indicate that it is ready for, communication, , ¾, , When DCE is turned on and has gone, through the self-test, it assert DSR to, indicate that it is ready to communicate, , ¾, , When the DTE device has byte to transmit,, it assert RTS to signal the modem that it, has a byte of data to transmit, , , , RS232 Pins, , , , , , ¾, , HANEL, , ng., , When the modem has room for storing the, data it is to receive, it sends out signal CTS, to DTE to indicate that it can receive the, data now, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 16, , Downloaded From : www.EasyEngineering.net
Page 375 :
Downloaded From : www.EasyEngineering.net, , BASICS OF, SERIAL, COMMUNICATION, , , , DCD (data carrier detect), , ww, w.ERI (ring indicator), asy, En, gin, ee, ¾, , The modem asserts signal DCD to inform, the DTE that a valid carrier has been, detected and that contact between it and, the other modem is established, , ¾, , An output from the modem and an input to, a PC indicates that the telephone is ringing, It goes on and off in synchronous with the, ringing sound, , , , RS232 Pins, (cont’), , ¾, , rin, , g.n, e, , t, , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 17, , Downloaded From : www.EasyEngineering.net
Page 376 :
Downloaded From : www.EasyEngineering.net, , 8051, CONNECTION, TO RS232, , , , A line driver such as the MAX232 chip is, required to convert RS232 voltage, levels to TTL levels, and vice versa, 8051 has two pins that are used, specifically for transferring and, receiving data serially, , ww, w.E, , , asy, , ¾, ¾, , These two pins are called TxD and RxD and, are part of the port 3 group (P3.0 and P3.1), These pins are TTL compatible; therefore,, they require a line driver to make them, RS232 compatible, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 18, , Downloaded From : www.EasyEngineering.net
Page 379 :
Downloaded From : www.EasyEngineering.net, , SERIAL, COMMUNICATION, PROGRAMMING, , , , To allow data transfer between the PC, and an 8051 system without any error,, we must make sure that the baud rate, of 8051 system matches the baud rate, of the PC’s COM port, Hyperterminal function supports baud, rates much higher than listed below, , ww, w.E, , , asy, , En, , PC Baud Rates, , gin, , 110, 150, 300, 600, , 1200, 2400, 4800, 9600, 19200, , HANEL, , eer, i, , ng., , net, , Baud rates supported by, 486/Pentium IBM PC BIOS, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 21, , Downloaded From : www.EasyEngineering.net
Page 380 :
Downloaded From : www.EasyEngineering.net, , With XTAL = 11.0592 MHz, find the TH1 value needed to have the, following baud rates. (a) 9600 (b) 2400 (c) 1200, , SERIAL, COMMUNICATION, PROGRAMMING, , ww, w.E, (cont’), , Solution:, The machine cycle frequency of 8051 = 11.0592 / 12 = 921.6 kHz,, and 921.6 kHz / 32 = 28,800 Hz is frequency by UART to timer 1 to, set baud rate., (a) 28,800 / 3 = 9600, where -3 = FD (hex) is loaded into TH1, (b) 28,800 / 12 = 2400, where -12 = F4 (hex) is loaded into TH1, (c) 28,800 / 24 = 1200, where -24 = E8 (hex) is loaded into TH1, , asy, , En, , Notice that dividing 1/12 of the crystal frequency by 32 is the default, value upon activation of the 8051 RESET pin., 11.0592 MHz, , gin, , XTAL, oscillator, , ÷ 12, , Baud Rate, , TF is set to 1 every 12, ticks, so it functions as, a frequency divider, HANEL, , eer, i, , Machine cycle freq, 921.6 kHz, , -3, , FD, , 4800, , -6, , FA, , 2400, , -12, , F4, , 1200, , -24, , E8, , To timer 1, To set the, Baud rate, , ng., , TH1 (Decimal) TH1 (Hex), , 9600, , 28800 Hz, , ÷ 32, By UART, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 22, , Downloaded From : www.EasyEngineering.net
Page 381 :
Downloaded From : www.EasyEngineering.net, , SERIAL, COMMUNICATION, PROGRAMMING, , , , SBUF is an 8-bit register used solely for, serial communication, , ww, w.E, , SBUF Register, , ¾, , For a byte data to be transferred via the, TxD line, it must be placed in the SBUF, register, , The moment a byte is written into SBUF, it is, framed with the start and stop bits and, transferred serially via the TxD line, , asy, , ¾, , En, , SBUF holds the byte of data when it is, received by 8051 RxD line, , gin, , When the bits are received serially via RxD, the, 8051 deframes it by eliminating the stop and, start bits, making a byte out of the data received,, and then placing it in SBUF, , MOV SBUF,#’D’, MOV SBUF,A, MOV A,SBUF, , HANEL, , eer, i, , ng., , net, , ;load SBUF=44h, ASCII for ‘D’, ;copy accumulator into SBUF, ;copy SBUF into accumulator, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 23, , Downloaded From : www.EasyEngineering.net
Page 383 :
Downloaded From : www.EasyEngineering.net, , SERIAL, COMMUNICATION, PROGRAMMING, , , , SM0, SM1, , ww, w.E, , ¾, , They determine the framing of data by, specifying the number of bits per character,, and the start and stop bits, , asy, , SCON Register, , SM0, , SM1, , 0, , 0, , 0, , (cont’), , 1, 1, , , , SM2, ¾, , HANEL, , En, , Serial Mode 0, , 1, 0, 1, , Serial Mode 1, 8-bit data,, 1 stop bit, 1 start bit, , gin, , Serial Mode 2, Serial Mode 3, , eer, i, , Only mode 1 is, of interest to us, , This enables the multiprocessing capability, of the 8051, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 25, , Downloaded From : www.EasyEngineering.net
Page 384 :
Downloaded From : www.EasyEngineering.net, , , , SERIAL, COMMUNICATION, PROGRAMMING, , REN (receive enable), ¾, , It is a bit-adressable register, , ww, w.ETI (transmit interrupt), asy, En, g, ine, RI (receive interrupt), eri, , When it is high, it allows 8051 to receive data on, RxD pin, If low, the receiver is disable, , , , ¾, , SCON Register, , When 8051 finishes the transfer of 8-bit, character, , It raises TI flag to indicate that it is ready to, transfer another byte, TI bit is raised at the beginning of the stop bit, , (cont’), , , , ¾, , When 8051 receives data serially via RxD, it, gets rid of the start and stop bits and, places the byte in SBUF register, , ng., , net, , It raises the RI flag bit to indicate that a byte, has been received and should be picked up, before it is lost, RI is raised halfway through the stop bit, , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 26, , Downloaded From : www.EasyEngineering.net
Page 385 :
Downloaded From : www.EasyEngineering.net, , , , SERIAL, COMMUNICATION, PROGRAMMING, , In programming the 8051 to transfer, character bytes serially, , ww, w.E, , Programming, Serial Data, Transmitting, , 1., , 2., , asy, , 3., , 4., 5., 6., 7., , 8., HANEL, , TMOD register is loaded with the value, 20H, indicating the use of timer 1 in mode, 2 (8-bit auto-reload) to set baud rate, The TH1 is loaded with one of the values, to set baud rate for serial data transfer, The SCON register is loaded with the value, 50H, indicating serial mode 1, where an 8bit data is framed with start and stop bits, TR1 is set to 1 to start timer 1, TI is cleared by CLR TI instruction, The character byte to be transferred, serially is written into SBUF register, The TI flag bit is monitored with the use of, instruction JNB TI,xx to see if the, character has been transferred completely, To transfer the next byte, go to step 5, , En, , gin, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 27, , Downloaded From : www.EasyEngineering.net
Page 388 :
Downloaded From : www.EasyEngineering.net, , SERIAL, COMMUNICATION, PROGRAMMING, , , , The steps that 8051 goes through in, transmitting a character via TxD, , ww, w.E, , Importance of, TI Flag, , 1., 2., 3., , The byte character to be transmitted is, written into the SBUF register, The start bit is transferred, The 8-bit character is transferred on bit at, a time, The stop bit is transferred, , asy, , 4., , 5., , En, , It is during the transfer of the stop bit that, 8051 raises the TI flag, indicating that the last, character was transmitted, , gin, , eer, i, , By monitoring the TI flag, we make sure, that we are not overloading the SBUF, , ng., , If we write another byte into the SBUF before, TI is raised, the untransmitted portion of the, previous byte will be lost, , 6., , HANEL, , net, , After SBUF is loaded with a new byte, the, TI flag bit must be forced to 0 by CLR TI, in order for this new byte to be transferred, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 30, , Downloaded From : www.EasyEngineering.net
Page 389 :
Downloaded From : www.EasyEngineering.net, , SERIAL, COMMUNICATION, PROGRAMMING, , , , By checking the TI flag bit, we know, whether or not the 8051 is ready to, transfer another byte, , ww, w.E, , ¾, , asy, , ¾, , Importance of, TI Flag, , ¾, , (cont’), , , , En, , gin, , e, eri by, The TI bit can be checked, ng., ne, ¾, ¾, , HANEL, , It must be noted that TI flag bit is raised by, 8051 itself when it finishes data transfer, It must be cleared by the programmer with, instruction CLR TI, If we write a byte into SBUF before the TI, flag bit is raised, we risk the loss of a, portion of the byte being transferred, The instruction JNB TI,xx, Using an interrupt, , Department of Computer Science and Information Engineering, National Cheng Kung University, , t, 31, , Downloaded From : www.EasyEngineering.net
Page 390 :
Downloaded From : www.EasyEngineering.net, , SERIAL, COMMUNICATION, PROGRAMMING, , , , In programming the 8051 to receive, character bytes serially, , ww, w.E, , Programming, Serial Data, Receiving, , 1., , asy, , 2., 3., , 4., 5., 6., , 7., 8., HANEL, , TMOD register is loaded with the value, 20H, indicating the use of timer 1 in mode, 2 (8-bit auto-reload) to set baud rate, TH1 is loaded to set baud rate, The SCON register is loaded with the value, 50H, indicating serial mode 1, where an 8bit data is framed with start and stop bits, TR1 is set to 1 to start timer 1, RI is cleared by CLR RI instruction, The RI flag bit is monitored with the use of, instruction JNB RI,xx to see if an entire, character has been received yet, When RI is raised, SBUF has the byte, its, contents are moved into a safe place, To receive the next character, go to step 5, , En, , gin, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 32, , Downloaded From : www.EasyEngineering.net
Page 395 :
Downloaded From : www.EasyEngineering.net, , SERIAL, COMMUNICATION, PROGRAMMING, , , , In receiving bit via its RxD pin, 8051, goes through the following steps, , ww, w.E, , Importance of, RI Flag, , 1., , It receives the start bit, Indicating that the next bit is the first bit of the, character byte it is about to receive, , asy, , 2., 3., , The 8-bit character is received one bit at, time, The stop bit is received, , En, , gin, , When receiving the stop bit 8051 makes RI = 1,, indicating that an entire character byte has, been received and must be picked up before it, gets overwritten by an incoming character, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 37, , Downloaded From : www.EasyEngineering.net
Page 396 :
Downloaded From : www.EasyEngineering.net, , (cont’), , SERIAL, COMMUNICATION, PROGRAMMING, , 4., , Importance of, RI Flag, , 5., , ww, w.E, (cont’), , By checking the RI flag bit when it is, raised, we know that a character has been, received and is sitting in the SBUF register, We copy the SBUF contents to a safe place in, some other register or memory before it is lost, , asy, , After the SBUF contents are copied into a, safe place, the RI flag bit must be forced, to 0 by CLR RI in order to allow the next, received character byte to be placed in, SBUF, , En, , gin, , eer, i, , Failure to do this causes loss of the received, character, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 38, , Downloaded From : www.EasyEngineering.net
Page 397 :
Downloaded From : www.EasyEngineering.net, , SERIAL, COMMUNICATION, PROGRAMMING, , , , By checking the RI flag bit, we know, whether or not the 8051 received a, character byte, , ww, w.E, , ¾, , asy, , ¾, , Importance of, RI Flag, , ¾, , (cont’), , ¾, , , , En, , gin, , e, e, rinby, The RI bit can be checked, g.n, e, ¾, ¾, , HANEL, , If we failed to copy SBUF into a safe place,, we risk the loss of the received byte, It must be noted that RI flag bit is raised by, 8051 when it finish receive data, It must be cleared by the programmer with, instruction CLR RI, If we copy SBUF into a safe place before, the RI flag bit is raised, we risk copying, garbage, The instruction JNB RI,xx, Using an interrupt, , Department of Computer Science and Information Engineering, National Cheng Kung University, , t, 39, , Downloaded From : www.EasyEngineering.net
Page 401 :
Downloaded From : www.EasyEngineering.net, , Example 10-6 (cont’), , SERIAL, COMMUNICATION, PROGRAMMING, , ww, w.E, , Doubling Baud, Rate, (cont’), , Solution:, (a) This program transfers ASCII letter B (01000010, binary) continuously, (b) With XTAL = 11.0592 MHz and SMOD = 1 in the, above program, we have:, , asy, , 11.0592 / 12 = 921.6 kHz machine cycle frequency., 921.6 / 16 = 57,600 Hz frequency used by timer 1, to set the baud rate., 57600 / 3 = 19,200, the baud rate., , En, , gin, , Find the TH1 value (in both decimal and hex ) to set the baud rate, to each of the following. (a) 9600 (b) 4800 if SMOD=1. Assume, that XTAL 11.0592 MHz, , eer, i, , ng., , Solution:, With XTAL = 11.0592 and SMOD = 1, we have timer frequency =, 57,600 Hz., (a) 57600 / 9600 = 6; so TH1 = -6 or TH1 = FAH, (b) 57600 / 4800 = 12; so TH1 = -12 or TH1 = F4H, HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 43, , Downloaded From : www.EasyEngineering.net
Page 402 :
Downloaded From : www.EasyEngineering.net, , SERIAL, COMMUNICATION, PROGRAMMING, , Example 10-8, Find the baud rate if TH1 = -2, SMOD = 1, and XTAL = 11.0592, MHz. Is this baud rate supported by IBM compatible PCs?, , ww, w.E, , Doubling Baud, Rate, (cont’), , Solution:, With XTAL = 11.0592 and SMOD = 1, we have timer frequency =, 57,600 Hz. The baud rate is 57,600/2 = 28,800. This baud rate is, not supported by the BIOS of the PCs; however, the PC can be, programmed to do data transfer at such a speed. Also,, HyperTerminal in Windows supports this and other baud rates., , asy, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 44, , Downloaded From : www.EasyEngineering.net
Page 408 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, THE SECOND, SERIAL PORT, , , , Upon reset, DS89c4x0 uses Timer 1 for, setting baud rate of both serial ports, , ww, w.E, (cont’), , ¾, , While each serial port has its own SCON, and SBUF registers, both ports can use, Timer1 for setting the baud rate, SBUF and SCON refer to the SFR registers, of the first serial port, , asy, , ¾, , En, , gin, , Since the older 8051 assemblers do not support, this new second serial port, we need to define, them in program, To avoid confusion, in DS89C4x0 programs we, use SCON0 and SBUF0 for the first and SCON1, and SBUF1for the second serial ports, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 50, , Downloaded From : www.EasyEngineering.net
Page 412 :
Downloaded From : www.EasyEngineering.net, , SERIAL PORT, PROGRAMMING, IN C, , Example 10-15, Write a C program for 8051 to transfer the letter “A” serially at 4800, baud continuously. Use 8-bit data and 1 stop bit., , ww, w.E, , Transmitting, and Receiving, Data, , HANEL, , Solution:, #include <reg51.h>, void main(void){, TMOD=0x20;, TH1=0xFA;, SCON=0x50;, TR1=1;, while (1) {, SBUF=‘A’;, while (TI==0);, TI=0;, }, }, , asy, , En, , //use Timer 1, mode 2, //4800 baud rate, , gin, , //place value in buffer, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 54, , Downloaded From : www.EasyEngineering.net
Page 415 :
Downloaded From : www.EasyEngineering.net, , SERIAL PORT, PROGRAMMING, IN C, , Example 10-19, Write an 8051 C Program to send the two messages “Normal Speed”, and “High Speed” to the serial port. Assuming that SW is connected, to pin P2.0, monitor its status and set the baud rate as follows:, SW = 0, 28,800 baud rate, SW = 1, 56K baud rate, Assume that XTAL = 11.0592 MHz for both cases., , ww, w.E, , Transmitting, and Receiving, Data, (cont’), , asy, , Solution:, #include <reg51.h>, sbit MYSW=P2^0;, //input switch, void main(void){, unsigned char z;, unsigned char Mess1[]=“Normal Speed”;, unsigned char Mess2[]=“High Speed”;, TMOD=0x20;, //use Timer 1, mode 2, TH1=0xFF;, //28800 for normal, SCON=0x50;, TR1=1;, //start timer, , En, , ....., , HANEL, , gin, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 57, , Downloaded From : www.EasyEngineering.net
Page 420 :
Downloaded From : www.EasyEngineering.net, , INTERRUPTS, , , , An interrupt is an external or internal, event that interrupts the, microcontroller to inform it that a, device needs its service, A single microcontroller can serve, several devices by two ways, , ww, w.E, , Interrupts vs., Polling, , , , asy, , ¾, , En, , Interrupts, , gin, , Whenever any device needs its service, the, device notifies the microcontroller by sending it, an interrupt signal, Upon receiving an interrupt signal, the, microcontroller interrupts whatever it is doing, and serves the device, The program which is associated with the, interrupt is called the interrupt service routine, (ISR) or interrupt handler, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 2, , Downloaded From : www.EasyEngineering.net
Page 421 :
Downloaded From : www.EasyEngineering.net, , INTERRUPTS, , , , (cont’), , ww, w.E, , ¾, , Interrupts vs., Polling, , The microcontroller continuously monitors the, status of a given device, When the conditions met, it performs the, service, After that, it moves on to monitor the next, device until every one is serviced, , asy, , (cont’), , , , En, , Polling can monitor the status of, several devices and serve each of, them as certain conditions are met, ¾, , ¾, , HANEL, , Polling, , gin, , eer, i, , The polling method is not efficient, since it, wastes much of the microcontroller’s time, by polling devices that do not need service, ex. JNB TF,target, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 3, , Downloaded From : www.EasyEngineering.net
Page 422 :
Downloaded From : www.EasyEngineering.net, , INTERRUPTS, , , , The advantage of interrupts is that the, microcontroller can serve many, devices (not all at the same time), , ww, w.E, , Interrupts vs., Polling, , ¾, , asy, , (cont’), , ¾, , , , En, , gin, , e, The microcontroller can, also ignore, e, r, inservice, (mask) a device request for, g.n, et, ¾, , HANEL, , Each devices can get the attention of the, microcontroller based on the assigned, priority, For the polling method, it is not possible to, assign priority since it checks all devices in, a round-robin fashion, , This is not possible for the polling method, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 4, , Downloaded From : www.EasyEngineering.net
Page 423 :
Downloaded From : www.EasyEngineering.net, , INTERRUPTS, , , , For every interrupt, there must be an, interrupt service routine (ISR), or, interrupt handler, , ww, w.E, , Interrupt, Service Routine, , ¾, , asy, , ¾, , ¾, , HANEL, , When an interrupt is invoked, the microcontroller runs the interrupt service, routine, For every interrupt, there is a fixed, location in memory that holds the address, of its ISR, The group of memory locations set aside, to hold the addresses of ISRs is called, interrupt vector table, , En, , gin, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 5, , Downloaded From : www.EasyEngineering.net
Page 424 :
Downloaded From : www.EasyEngineering.net, , INTERRUPTS, , , , Upon activation of an interrupt, the, microcontroller goes through the, following steps, , ww, w.E, , Steps in, Executing an, Interrupt, , 1., , It finishes the instruction it is executing, and saves the address of the next, instruction (PC) on the stack, It also saves the current status of all the, interrupts internally (i.e: not on the stack), It jumps to a fixed location in memory,, called the interrupt vector table, that, holds the address of the ISR, , asy, , 2., 3., , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 6, , Downloaded From : www.EasyEngineering.net
Page 425 :
Downloaded From : www.EasyEngineering.net, , INTERRUPTS, , (cont’), , ww, w.E, , Steps in, Executing an, Interrupt, (cont’), , 4., , The microcontroller gets the address of, the ISR from the interrupt vector table, and jumps to it, , , asy, , 5., , En, , gin, , Upon executing the RETI instruction, the, microcontroller returns to the place, where it was interrupted, , , , , HANEL, , It starts to execute the interrupt service, subroutine until it reaches the last instruction, of the subroutine which is RETI (return from, interrupt), , eer, i, , ng., , First, it gets the program counter (PC), address from the stack by popping the top, two bytes of the stack into the PC, Then it starts to execute from that address, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 7, , Downloaded From : www.EasyEngineering.net
Page 426 :
Downloaded From : www.EasyEngineering.net, , INTERRUPTS, , , , Six interrupts are allocated as follows, , ww, w.E, , Six Interrupts, in 8051, , ¾, ¾, , Reset – power-up reset, Two interrupts are set aside for the timers:, one for timer 0 and one for timer 1, Two interrupts are set aside for hardware, external interrupts, , asy, , ¾, , En, , P3.2 and P3.3 are for the external hardware, interrupts INT0 (or EX1), and INT1 (or EX2), , ¾, , gin, , Serial communication has a single, interrupt that belongs to both receive and, transfer, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 8, , Downloaded From : www.EasyEngineering.net
Page 427 :
Downloaded From : www.EasyEngineering.net, , INTERRUPTS, , Interrupt vector table, , ww, w.E, , Six Interrupts, in 8051, (cont’), , Interrupt, , ROM Location, (hex), , Pin, , Reset, , 0000, , 9, , External HW (INT0), , 0003, , P3.2 (12), , Timer 0 (TF0), , 000B, , External HW (INT1), , 0013, , Timer 1 (TF1), , 001B, , asy, , En, , P3.3 (13), , gin, , Serial COM (RI and TI), , 0023, , eer, i, , ORG 0, ;wake-up ROM reset location, LJMP MAIN ;by-pass int. vector table, ;---- the wake-up program, ORG 30H, Only three bytes of ROM space, MAIN:, assigned to the reset pin. We put, ...., the LJMP as the first instruction, END, and redirect the processor away, , ng., , net, , from the interrupt vector table., , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 9, , Downloaded From : www.EasyEngineering.net
Page 428 :
Downloaded From : www.EasyEngineering.net, , INTERRUPTS, , , , Upon reset, all interrupts are disabled, (masked), meaning that none will be, responded to by the microcontroller if, they are activated, The interrupts must be enabled by, software in order for the, microcontroller to respond to them, , ww, w.E, , Enabling and, Disabling an, Interrupt, , , , asy, , ¾, , En, , gin, , There is a register called IE (interrupt, enable) that is responsible for enabling, (unmasking) and disabling (masking) the, interrupts, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 10, , Downloaded From : www.EasyEngineering.net
Page 429 :
Downloaded From : www.EasyEngineering.net, , INTERRUPTS, , IE (Interrupt Enable) Register, , ww, w.E, , Enabling and, Disabling an, Interrupt, (cont’), , D7, EA, , EA, , --, , ET2, , ES, , ET1, , EX1, , ET0, , EX0, , asy, , EA (enable all) must be set to 1 in order, for rest of the register to take effect, , IE.7, , Disables all interrupts, , IE.6, , Not implemented, reserved for future use, , ET2, , IE.5, , Enables or disables timer 2 overflow or capture, interrupt (8952), , ES, , IE.4, , Enables or disables the serial port interrupt, , ET1, , IE.3, , Enables or disables timer 1 overflow interrupt, , EX1, , IE.2, , Enables or disables external interrupt 1, , ET0, , IE.1, , Enables or disables timer 0 overflow interrupt, , EX0, , IE.0, , Enables or disables external interrupt 0, , --, , HANEL, , D0, , En, , gin, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 11, , Downloaded From : www.EasyEngineering.net
Page 430 :
Downloaded From : www.EasyEngineering.net, , INTERRUPTS, , , , To enable an interrupt, we take the, following steps:, , ww, w.E, , Enabling and, Disabling an, Interrupt, (cont’), , 1., , Bit D7 of the IE register (EA) must be set, to high to allow the rest of register to, take effect, The value of EA, , asy, , 2., , En, , ¾ If EA = 1, interrupts are enabled and will be, responded to if their corresponding bits in IE, are high, ¾ If EA = 0, no interrupt will be responded to,, even if the associated bit in the IE register is, high, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 12, , Downloaded From : www.EasyEngineering.net
Page 431 :
Downloaded From : www.EasyEngineering.net, , INTERRUPTS, , Example 11-1, Show the instructions to (a) enable the serial interrupt, timer 0, interrupt, and external hardware interrupt 1 (EX1),and (b) disable, (mask) the timer 0 interrupt, then (c) show how to disable all the, interrupts with a single instruction., , ww, w.E, , Enabling and, Disabling an, Interrupt, (cont’), , asy, , Solution:, (a) MOV, , IE,#10010110B ;enable serial,, ;timer 0, EX1, , En, , gin, , Another way to perform the same manipulation is, SETB IE.7 ;EA=1, global enable, SETB IE.4 ;enable serial interrupt, SETB IE.1 ;enable Timer 0 interrupt, SETB IE.2 ;enable EX1, , HANEL, , eer, i, , ng., , (b) CLR, , IE.1, , ;mask (disable) timer 0, ;interrupt only, , (c) CLR, , IE.7, , ;disable all interrupts, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 13, , Downloaded From : www.EasyEngineering.net
Page 432 :
Downloaded From : www.EasyEngineering.net, , , , TIMER, INTERRUPTS, , The timer flag (TF) is raised when the, timer rolls over, , ww, w.E, , ¾, , In polling TF, we have to wait until the TF, is raised, The problem with this method is that the, microcontroller is tied down while waiting for TF, to be raised, and can not do anything else, , asy, , ¾, , Using interrupts solves this problem and,, avoids tying down the controller, , En, , gin, , If the timer interrupt in the IE register is, enabled, whenever the timer rolls over, TF is, raised, and the microcontroller is interrupted in, whatever it is doing, and jumps to the interrupt, vector table to service the ISR, In this way, the microcontroller can do other, until it is notified that the timer has rolled over, TF0, , 1, HANEL, , eer, i, , Timer 0 Interrupt Vector, , TF1, , 000BH, , 1, , Jumps to, , ng., , net, , Timer 1 Interrupt Vector, Jumps to, , 001BH, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 14, , Downloaded From : www.EasyEngineering.net
Page 433 :
Downloaded From : www.EasyEngineering.net, , TIMER, INTERRUPTS, , Example 11-2, Write a program that continuously get 8-bit data from P0 and sends it, to P1 while simultaneously creating a square wave of 200 μs period, on pin P2.1. Use timer 0 to create the square wave. Assume that, XTAL = 11.0592 MHz., , ww, w.E, (cont’), , Solution:, , asy, , We will use timer 0 in mode 2 (auto reload). TH0 = 100/1.085 us = 92, , En, , ;--upon wake-up go to main, avoid using, ;memory allocated to Interrupt Vector Table, ORG 0000H, LJMP MAIN ;by-pass interrupt vector table, ;, ;--ISR for timer 0 to generate square wave, ORG 000BH ;Timer 0 interrupt vector table, CPL P2.1 ;toggle P2.1 pin, RETI, ;return from ISR, ..., , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 15, , Downloaded From : www.EasyEngineering.net
Page 435 :
Downloaded From : www.EasyEngineering.net, , TIMER, INTERRUPTS, , Example 11-3, Rewrite Example 11-2 to create a square wave that has a high portion, of 1085 us and a low portion of 15 us. Assume XTAL=11.0592MHz., Use timer 1., , ww, w.E, (cont’), , Solution:, Since 1085 us is 1000 × 1.085 we need to use mode 1 of timer 1., , asy, , ;--upon wake-up go to main, avoid using, ;memory allocated to Interrupt Vector Table, ORG 0000H, LJMP MAIN, ;by-pass int. vector table, ;--ISR for timer 1 to generate square wave, ORG 001BH, ;Timer 1 int. vector table, LJMP ISR_T1, ;jump to ISR, ..., , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 17, , Downloaded From : www.EasyEngineering.net
Page 440 :
Downloaded From : www.EasyEngineering.net, , EXTERNAL, HARDWARE, INTERRUPTS, , , , In the level-triggered mode, INT0 and, INT1 pins are normally high, , ww, w.E, , ¾, ¾, , asy, , Level-Triggered, Interrupt, , ¾, , , , HANEL, , If a low-level signal is applied to them, it, triggers the interrupt, Then the microcontroller stops whatever it, is doing and jumps to the interrupt vector, table to service that interrupt, The low-level signal at the INT pin must, be removed before the execution of the, last instruction of the ISR, RETI; otherwise,, another interrupt will be generated, , En, , gin, , eer, This is called a level-triggered, or leveli, n, activated interrupt and is theg, default, mode upon reset of the 8051 .n, et, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 22, , Downloaded From : www.EasyEngineering.net
Page 441 :
Downloaded From : www.EasyEngineering.net, , EXTERNAL, HARDWARE, INTERRUPTS, , Example 11-5, Assume that the INT1 pin is connected to a switch that is normally, high. Whenever it goes low, it should turn on an LED. The LED is, connected to P1.3 and is normally off. When it is turned on it should, stay on for a fraction of a second. As long as the switch is pressed low,, the LED should stay on., Vcc, , ww, w.E, , Level-Triggered, Interrupt, (cont’), , asy, , P1.3, , Solution:, , ORG 0000H, LJMP MAIN ;by-pass interrupt, ;vector table, ;--ISR for INT1 to turn on LED, ORG 0013H, ;INT1 ISR, SETB P1.3, ;turn on LED, MOV R3,#255, BACK: DJNZ R3,BACK, ;keep LED on for a, CLR P1.3, ;turn off the LED, RETI, ;return from ISR, , En, , gin, , eer, i, , to LED, , INT1, , Pressing the switch, while, will cause the LED, to be turned on. If, it is kept activated,, the LED stays on, , ng., , net, , ;--MAIN program for initialization, ORG 30H, MAIN: MOV IE,#10000100B ;enable external INT 1, HERE: SJMP HERE, ;stay here until get interrupted, END, , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 23, , Downloaded From : www.EasyEngineering.net
Page 442 :
Downloaded From : www.EasyEngineering.net, , EXTERNAL, HARDWARE, INTERRUPTS, , , , Pins P3.2 and P3.3 are used for normal, I/O unless the INT0 and INT1 bits in, the IE register are enabled, , ww, w.E, , Sampling Low, Level-Triggered, Interrupt, , ¾, , After the hardware interrupts in the IE, register are enabled, the controller keeps, sampling the INTn pin for a low-level signal, once each machine cycle, According to one manufacturer’s data sheet,, , asy, , ¾, , En, , gin, , The pin must be held in a low state until the, start of the execution of ISR, If the INTn pin is brought back to a logic high, before the start of the execution of ISR there, will be no interrupt, If INTn pin is left at a logic low after the RETI, instruction of the ISR, another interrupt will be, activated after one instruction is executed, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 24, , Downloaded From : www.EasyEngineering.net
Page 443 :
Downloaded From : www.EasyEngineering.net, , EXTERNAL, HARDWARE, INTERRUPTS, , ¾, , ww, w.E, , Sampling Low, Level-Triggered, Interrupt, (cont’), , To ensure the activation of the hardware, interrupt at the INTn pin, make sure that, the duration of the low-level signal is, around 4 machine cycles, but no more, This is due to the fact that the level-triggered, interrupt is not latched, Thus the pin must be held in a low state until, the start of the ISR execution, , asy, , En, , 1 MC, , gin, , eer, i, , 4 machine cycles, , 1.085us, , 4 × 1.085us, , To INT0 or, INT1 pins, , ng., , net, , note: On reset, IT0 (TCON.0) and IT1 (TCON.2) are both, low, making external interrupt level-triggered, , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 25, , Downloaded From : www.EasyEngineering.net
Page 446 :
Downloaded From : www.EasyEngineering.net, , EXTERNAL, HARDWARE, INTERRUPTS, , TCON (Timer/Counter) Register (Bit-addressable) (cont’), , ww, w.E, , Edge-Triggered, Interrupt, (cont’), , IE1, , asy, , External interrupt 1 edge flag. Set by, CPU when the external interrupt edge, (H-to-L transition) is detected. Cleared, by CPU when the interrupt is processed, , IT1, , TCON.2, , Interrupt 1 type control bit. Set/cleared, by software to specify falling edge/lowlevel triggered external interrupt, , IE0, , TCON.1, , External interrupt 0 edge flag. Set by, CPU when the external interrupt edge, (H-to-L transition) is detected. Cleared, by CPU when the interrupt is processed, , IT0, , HANEL, , TCON.3, , En, , TCON.0, , gin, , eer, i, , ng., , Interrupt 0 type control bit. Set/cleared, by software to specify falling edge/lowlevel triggered external interrupt, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 28, , Downloaded From : www.EasyEngineering.net
Page 447 :
Downloaded From : www.EasyEngineering.net, , EXTERNAL, HARDWARE, INTERRUPTS, , Assume that pin 3.3 (INT1) is connected to a pulse generator, write a, program in which the falling edge of the pulse will send a high to, P1.3, which is connected to an LED (or buzzer). In other words, the, LED is turned on and off at the same rate as the pulses are applied to, the INT1 pin., , ww, w.E, , Edge-Triggered, Interrupt, (cont’), , The on-state duration, depends on the time, delay inside the ISR, for INT1, , HANEL, , asy, , When the falling edge of the signal, is applied to pin INT1, the LED, will be turned on momentarily., , Solution:, , ORG 0000H, LJMP MAIN, ;--ISR for hardware interrupt INT1 to turn on LED, ORG 0013H ;INT1 ISR, SETB P1.3, ;turn on LED, MOV R3,#255, BACK: DJNZ R3,BACK ;keep the buzzer on for a while, CLR P1.3, ;turn off the buzzer, RETI, ;return from ISR, ;------MAIN program for initialization, ORG 30H, MAIN: SETB TCON.2 ;make INT1 edge-triggered int., MOV IE,#10000100B ;enable External INT 1, HERE: SJMP HERE, ;stay here until get interrupted, END, , En, , gin, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 29, , Downloaded From : www.EasyEngineering.net
Page 448 :
Downloaded From : www.EasyEngineering.net, , EXTERNAL, HARDWARE, INTERRUPTS, , , , In edge-triggered interrupts, , ww, w.E, , Sampling EdgeTriggered, Interrupt, , ¾, , The external source must be held high for, at least one machine cycle, and then held, low for at least one machine cycle, The falling edge of pins INT0 and INT1, are latched by the 8051 and are held by, the TCON.1 and TCON.3 bits of TCON, register, , asy, , ¾, , En, , gin, , Function as interrupt-in-service flags, It indicates that the interrupt is being serviced, now and on this INTn pin, and no new interrupt, will be responded to until this service is finished, , eer, i, , Minimum pulse duration to, detect edge-triggered, interrupts XTAL=11.0592MHz, , HANEL, , ng., , 1 MC, , 1.085us, , net, 1 MC, , 1.085us, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 30, , Downloaded From : www.EasyEngineering.net
Page 449 :
Downloaded From : www.EasyEngineering.net, , EXTERNAL, HARDWARE, INTERRUPTS, , , , Regarding the IT0 and IT1 bits in the, TCON register, the following two points, must be emphasized, , ww, w.E, , Sampling EdgeTriggered, Interrupt, (cont’), , ¾, , When the ISRs are finished (that is, upon, execution of RETI), these bits (TCON.1 and, TCON.3) are cleared, indicating that the, interrupt is finished and the 8051 is ready, to respond to another interrupt on that pin, During the time that the interrupt service, routine is being executed, the INTn pin is, ignored, no matter how many times it, makes a high-to-low transition, , asy, , ¾, , En, , gin, , eer, i, , ng., , RETI clears the corresponding bit in TCON, register (TCON.1 or TCON.3), There is no need for instruction CLR TCON.1, before RETI in the ISR associated with INT0, HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 31, , Downloaded From : www.EasyEngineering.net
Page 450 :
Downloaded From : www.EasyEngineering.net, , EXTERNAL, HARDWARE, INTERRUPTS, , Example 11-7, What is the difference between the RET and RETI instructions?, Explain why we can not use RET instead of RETI as the last, instruction of an ISR., , ww, w.E, , Sampling EdgeTriggered, Interrupt, (cont’), , Solution:, Both perform the same actions of popping off the top two bytes of the, stack into the program counter, and marking the 8051 return to where, it left off., , asy, , En, , However, RETI also performs an additional task of clearing the, interrupt-in-service flag, indicating that the servicing of the interrupt, is over and the 8051 now can accept a new interrupt on that pin. If, you use RET instead of RETI as the last instruction of the interrupt, service routine, you simply block any new interrupt on that pin after, the first interrupt, since the pin status would indicate that the interrupt, is still being serviced. In the cases of TF0, TF1, TCON.1, and, TCON.3, they are cleared due to the execution of RETI., , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 32, , Downloaded From : www.EasyEngineering.net
Page 451 :
Downloaded From : www.EasyEngineering.net, , SERIAL, COMMUNICATION, INTERRUPT, , , , TI (transfer interrupt) is raised when, the last bit of the framed data, the, stop bit, is transferred, indicating that, the SBUF register is ready to transfer, the next byte, RI (received interrupt) is raised when, the entire frame of data, including the, stop bit, is received, , ww, w.E, , , asy, , En, , ¾, , gin, , eer, i, , In other words, when the SBUF register, has a byte, RI is raised to indicate that the, received byte needs to be picked up, before it is lost (overrun) by new incoming, serial data, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 33, , Downloaded From : www.EasyEngineering.net
Page 452 :
Downloaded From : www.EasyEngineering.net, , SERIAL, COMMUNICATION, INTERRUPT, , , , In the 8051 there is only one interrupt, set aside for serial communication, , ww, w.E, , ¾, , asy, , ¾, , RI and TI Flags, and Interrupts, , This interrupt is used to both send and, receive data, If the interrupt bit in the IE register (IE.4), is enabled, when RI or TI is raised the, 8051 gets interrupted and jumps to, memory location 0023H to execute the ISR, In that ISR we must examine the TI and RI, flags to see which one caused the interrupt, and respond accordingly, , En, , ¾, , TI, , gin, , eer, i, , ng., , 0023H, RI, , net, , Serial interrupt is invoked by TI or RI flags, HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 34, , Downloaded From : www.EasyEngineering.net
Page 453 :
Downloaded From : www.EasyEngineering.net, , SERIAL, COMMUNICATION, INTERRUPT, , , , The serial interrupt is used mainly for, receiving data and is never used for, sending data serially, , ww, w.E, , Use of Serial, COM in 8051, , ¾, , This is like getting a telephone call in, which we need a ring to be notified, If we need to make a phone call there are, other ways to remind ourselves and there, is no need for ringing, However in receiving the phone call, we, must respond immediately no matter what, we are doing or we will miss the call, , asy, , ¾, , ¾, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 35, , Downloaded From : www.EasyEngineering.net
Page 455 :
Downloaded From : www.EasyEngineering.net, , SERIAL, COMMUNICATION, INTERRUPT, , ..., ;-----------------SERIAL PORT ISR, ORG 100H, SERIAL: JB TI,TRANS;jump if TI is high, MOV A,SBUF ;otherwise due to receive, CLR RI, ;clear RI since CPU doesn’t, RETI, ;return from ISR, TRANS: CLR TI, ;clear TI since CPU doesn’t, RETI, ;return from ISR, END, , ww, w.E, , Use of Serial, COM in 8051, (cont’), , asy, , En, , gin, , The moment a byte is written into SBUF it is framed and transferred, serially. As a result, when the last bit (stop bit) is transferred the TI is, raised, and that causes the serial interrupt to be invoked since the, corresponding bit in the IE register is high. In the serial ISR, we check, for both TI and RI since both could have invoked interrupt., , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 37, , Downloaded From : www.EasyEngineering.net
Page 461 :
Downloaded From : www.EasyEngineering.net, , INTERRUPT, PRIORITY, , , , When the 8051 is powered up, the, priorities are assigned according to, the following, , ww, w.E, , ¾, , In reality, the priority scheme is nothing, but an internal polling sequence in which, the 8051 polls the interrupts in the, sequence listed and responds accordingly, , asy, , En, , gin, , Interrupt Priority Upon Reset, , eer, i, , Highest To Lowest Priority, External Interrupt 0, Timer Interrupt 0, External Interrupt 1, , HANEL, , (INT0), , ng., , (TF0), , (INT1), , Timer Interrupt 1, , (TF1), , Serial Communication, , (RI + TI), , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 43, , Downloaded From : www.EasyEngineering.net
Page 462 :
Downloaded From : www.EasyEngineering.net, , INTERRUPT, PRIORITY, , Example 11-11, Discuss what happens if interrupts INT0, TF0, and INT1 are, activated at the same time. Assume priority levels were set by the, power-up reset and the external hardware interrupts are edgetriggered., , ww, w.E, (cont’), , asy, , Solution:, If these three interrupts are activated at the same time, they are, latched and kept internally. Then the 8051 checks all five interrupts, according to the sequence listed in Table 11-3. If any is activated, it, services it in sequence. Therefore, when the above three interrupts, are activated, IE0 (external interrupt 0) is serviced first, then timer 0, (TF0), and finally IE1 (external interrupt 1)., , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 44, , Downloaded From : www.EasyEngineering.net
Page 463 :
Downloaded From : www.EasyEngineering.net, , INTERRUPT, PRIORITY, , , , We can alter the sequence of interrupt, priority by assigning a higher priority, to any one of the interrupts by, programming a register called IP, (interrupt priority), , ww, w.E, (cont’), , asy, , ¾, , ¾, , To give a higher priority to any of the, interrupts, we make the corresponding bit, in the IP register high, When two or more interrupt bits in the IP, register are set to high, , En, , gin, , eer, i, , ng., , While these interrupts have a higher priority, than others, they are serviced according to the, sequence of Table 11-13, , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 45, , Downloaded From : www.EasyEngineering.net
Page 464 :
Downloaded From : www.EasyEngineering.net, , INTERRUPT, PRIORITY, , Interrupt Priority Register (Bit-addressable), , ww, w.E, , IP.7, , Reserved, , IP.6, , Reserved, , PT2, , IP.5, , PS, , IP.4, , D7, , (cont’), , --, , --, , --, , D0, --, , asy, , PT2, , En, , PS, , PT1, , PT0, , PX0, , Timer 2 interrupt priority bit (8052 only), , Serial port interrupt priority bit, , gin, , PT1, , IP.3, , Timer 1 interrupt priority bit, , PX1, , IP.2, , External interrupt 1 priority bit, , PT0, , IP.1, , Timer 0 interrupt priority bit, , PX0, , IP.0, , External interrupt 0 priority bit, , eer, i, , Priority bit=1 assigns high priority, Priority bit=0 assigns low priority, , HANEL, , PX1, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 46, , Downloaded From : www.EasyEngineering.net
Page 465 :
Downloaded From : www.EasyEngineering.net, , INTERRUPT, PRIORITY, , Example 11-12, (a) Program the IP register to assign the highest priority to, INT1(external interrupt 1), then, (b) discuss what happens if INT0, INT1, and TF0 are activated at the, same time. Assume the interrupts are both edge-triggered., , ww, w.E, (cont’), , asy, , Solution:, (a) MOV IP,#00000100B ;IP.2=1 assign INT1 higher priority. The, instruction SETB IP.2 also will do the same thing as the above, line since IP is bit-addressable., (b) The instruction in Step (a) assigned a higher priority to INT1 than, the others; therefore, when INT0, INT1, and TF0 interrupts are, activated at the same time, the 8051 services INT1 first, then it, services INT0, then TF0. This is due to the fact that INT1 has a, higher priority than the other two because of the instruction in, Step (a). The instruction in Step (a) makes both the INT0 and, TF0 bits in the IP register 0. As a result, the sequence in Table, 11-3 is followed which gives a higher priority to INT0 over TF0, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 47, , Downloaded From : www.EasyEngineering.net
Page 466 :
Downloaded From : www.EasyEngineering.net, , INTERRUPT, PRIORITY, , Example 11-13, Assume that after reset, the interrupt priority is set the instruction, MOV IP,#00001100B. Discuss the sequence in which the, interrupts are serviced., , ww, w.E, (cont’), , Solution:, The instruction “MOV IP #00001100B” (B is for binary) and timer 1, (TF1)to a higher priority level compared with the reset of the, interrupts. However, since they are polled according to Table,, they will have the following priority., , asy, , Highest Priority, , Lowest Priority, , HANEL, , En, , gin, , External Interrupt 1, Timer Interrupt 1, External Interrupt 0, Timer Interrupt 0, Serial Communication, , eer, i, , (INT1), (TF1), (INT0), (TF0), (RI+TI), , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 48, , Downloaded From : www.EasyEngineering.net
Page 467 :
Downloaded From : www.EasyEngineering.net, , INTERRUPT, PRIORITY, , , , In the 8051 a low-priority interrupt can, be interrupted by a higher-priority, interrupt but not by another lowpriority interrupt, , ww, w.E, , Interrupt inside, an Interrupt, , asy, , ¾, , Although all the interrupts are latched and, kept internally, no low-priority interrupt, can get the immediate attention of the, CPU until the 8051 has finished servicing, the high-priority interrupts, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 49, , Downloaded From : www.EasyEngineering.net
Page 468 :
Downloaded From : www.EasyEngineering.net, , INTERRUPT, PRIORITY, , , , To test an ISR by way of simulation, can be done with simple instructions to, set the interrupts high and thereby, cause the 8051 to jump to the, interrupt vector table, , ww, w.E, , Triggering, Interrupt by, Software, , asy, , ¾, , ex. If the IE bit for timer 1 is set, an, instruction such as SETB TF1 will, interrupt the 8051 in whatever it is doing, and will force it to jump to the interrupt, vector table, , En, , gin, , eer, i, , ng., , We do not need to wait for timer 1 go roll over, to have an interrupt, , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 50, , Downloaded From : www.EasyEngineering.net
Page 469 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, IN C, , , , The 8051 compiler have extensive, support for the interrupts, , ww, w.E, , ¾, , They assign a unique number to each of, the 8051 interrupts, , asy, , Interrupt, , Name, , Numbers, , External Interrupt 0, , (INT0), , 0, , Timer Interrupt 0, , (TF0), , 1, , External Interrupt 1, , (INT1), , 2, , Timer Interrupt 1, , (TF1), , 3, , (RI + TI), , 4, , (TF2), , 5, , En, , gin, , Serial Communication, Timer 2 (8052 only), ¾, , eer, i, , ng., , It can assign a register bank to an ISR, , net, , This avoids code overhead due to the pushes, and pops of the R0 – R7 registers, , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 51, , Downloaded From : www.EasyEngineering.net
Page 470 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, IN C, , Example 11-14, Write a C program that continuously gets a single bit of data from P1.7, and sends it to P1.0, while simultaneously creating a square wave of, 200 μs period on pin P2.5. Use Timer 0 to create the square wave., Assume that XTAL = 11.0592 MHz., , ww, w.E, (cont’), , Solution:, We will use timer 0 mode 2 (auto-reload). One half of the period is, 100 μs. 100/1.085 μs = 92, and TH0 = 256 - 92 = 164 or A4H, , asy, , #include <reg51.h>, sbit SW, =P1^7;, sbit IND =P1^0;, sbit WAVE =P2^5;, void timer0(void) interrupt 1 {, WAVE=~WAVE; //toggle pin, }, void main() {, SW=1;, //make switch input, TMOD=0x02;, TH0=0xA4;, //TH0=-92, IE=0x82;, //enable interrupt for timer 0, while (1) {, IND=SW;, //send switch to LED, }, }, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 52, , Downloaded From : www.EasyEngineering.net
Page 471 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, IN C, , Example 11-16, Write a C program using interrupts to do the following:, (a) Receive data serially and send it to P0, (b) Read port P1, transmit data serially, and give a copy to P2, (c) Make timer 0 generate a square wave of 5 kHz frequency on P0.1, Assume that XTAL = 11.0592 MHz. Set the baud rate at 4800., , ww, w.E, (cont’), , Solution:, , asy, , #include <reg51.h>, sbit WAVE =P0^1;, , En, , void timer0() interrupt 1 {, WAVE=~WAVE; //toggle pin, }, void serial0(), if (TI==1) {, TI=0;, }, else {, P0=SBUF;, RI=0;, }, }, ....., , HANEL, , gin, , eer, i, , interrupt 4 {, , //clear interrupt, , ng., , //put value on pins, //clear interrupt, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 53, , Downloaded From : www.EasyEngineering.net
Page 473 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, IN C, , Example 11-17, Write a C program using interrupts to do the following:, (a) Generate a 10 KHz frequency on P2.1 using T0 8-bit auto-reload, (b) Use timer 1 as an event counter to count up a 1-Hz pulse and, display it on P0. The pulse is connected to EX1., Assume that XTAL = 11.0592 MHz. Set the baud rate at 9600., , ww, w.E, (cont’), , asy, , Solution:, , En, , #include <reg51.h>, sbit WAVE =P2^1;, Unsigned char cnt;, , gin, , void timer0() interrupt 1 {, WAVE=~WAVE; //toggle pin, }, , eer, i, , ng., , void timer1() interrupt 3 {, cnt++;, //increment counter, P0=cnt;, //display value on pins, }, ....., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 55, , Downloaded From : www.EasyEngineering.net
Page 476 :
Downloaded From : www.EasyEngineering.net, , SEMICONDUCTOR, MEMORY, , , , The number of bits that a, semiconductor memory chip can store, is called chip capacity, , ww, w.E, , Memory, Capacity, , ¾, , , , It can be in units of Kbits (kilobits), Mbits, (megabits), and so on, , asy, , This must be distinguished from the, storage capacity of computer systems, ¾, , En, , gin, , While the memory capacity of a memory, IC chip is always given bits, the memory, capacity of a computer system is given in, bytes, , eer, i, , ng., , 16M memory chip – 16 megabits, A computer comes with 16M memory – 16, megabytes, , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 2, , Downloaded From : www.EasyEngineering.net
Page 477 :
Downloaded From : www.EasyEngineering.net, , SEMICONDUCTOR, MEMORY, , , , Memory chips are organized into a, number of locations within the IC, , ww, w.E, , ¾, , asy, , Memory, Organization, , , , The number of locations within a memory IC, depends on the address pins, The number of bits that each location can hold, is always equal to the number of data pins, , En, , gin, , To summarize, ¾, ¾, ¾, , HANEL, , Each location can hold 1 bit, 4 bits, 8 bits,, or even 16 bits, depending on how it is, designed internally, , eer, i, , A memory chip contain 2x location, where x, is the number of address pins, Each location contains y bits, where y is, the number of data pins on the chip, The entire chip will contain 2x × y bits, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 3, , Downloaded From : www.EasyEngineering.net
Page 478 :
Downloaded From : www.EasyEngineering.net, , SEMICONDUCTOR, MEMORY, , , , One of the most important, characteristics of a memory chip is the, speed at which its data can be, accessed, , ww, w.E, Speed, , To access the data, the address is, presented to the address pins, the READ, pin is activated, and after a certain amount, of time has elapsed, the data shows up at, the data pins, The shorter this elapsed time, the better,, and consequently, the more expensive the, memory chip, The speed of the memory chip is, commonly referred to as its access time, , asy, , ¾, , En, , ¾, , ¾, , HANEL, , gin, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 4, , Downloaded From : www.EasyEngineering.net
Page 479 :
Downloaded From : www.EasyEngineering.net, , SEMICONDUCTOR, MEMORY, , Example, A given memory chip has 12 address pins and 4 data pins. Find:, (a) The organization, and (b) the capacity., , ww, w.E, Speed, (cont’), , Solution:, (a) This memory chip has 4096 locations (212 = 4096), and, each location can hold 4 bits of data. This gives an, organization of 4096 × 4, often represented as 4K × 4., (b) The capacity is equal to 16K bits since there is a total of, 4K locations and each location can hold 4 bits of data., , asy, , En, , Example, A 512K memory chip has 8 pins for data. Find:, (a) The organization, and (b) the number of address pins for, this memory chip., , gin, , eer, i, , Solution:, (a) A memory chip with 8 data pins means that each location, within the chip can hold 8 bits of data. To find the number, of locations within this memory chip, divide the capacity, by the number of data pins. 512K/8 = 64K; therefore, the, organization for this memory chip is 64K × 8, (b) The chip has 16 address lines since 216 = 64K, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 5, , Downloaded From : www.EasyEngineering.net
Page 480 :
Downloaded From : www.EasyEngineering.net, , SEMICONDUCTOR, MEMORY, , , , ROM is a type of memory that does not, lose its contents when the power is, turned off, , ww, w.E, , ¾, , ROM, (Read-only, Memory), , , , asy, , There are different types of read-only, memory, ¾, ¾, ¾, ¾, ¾, , HANEL, , ROM is also called nonvolatile memory, , En, , gin, , PROM, EPROM, EEPROM, Flash EPROM, Mask ROM, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 6, , Downloaded From : www.EasyEngineering.net
Page 481 :
Downloaded From : www.EasyEngineering.net, , SEMICONDUCTOR, MEMORY, , , , PROM refers to the kind of ROM that, the user can burn information into, , ww, w.E, , ¾, ¾, , ROM, , , , PROM, (Programmable, ROM), , asy, , If the information burned into PROM is, wrong, that PROM must be discarded, since its internal fuses are blown, permanently, , En, , ¾, ¾, , HANEL, , PROM is a user-programmable memory, For every bit of the PROM, there exists a, fuse, , gin, , eer, i, , PROM is also referred to as OTP (one-time, programmable), Programming ROM, also called burning, ROM, requires special equipment called a, ROM burner or ROM programmer, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 7, , Downloaded From : www.EasyEngineering.net
Page 482 :
Downloaded From : www.EasyEngineering.net, , SEMICONDUCTOR, MEMORY, , , , EPROM was invented to allow making, changes in the contents of PROM after, it is burned, , ww, w.E, ROM, , EPROM (Erasable, Programmable, ROM), , ¾, , , , asy, , A widely used EPROM is called UVEPROM, ¾, ¾, , ¾, , HANEL, , In EPROM, one can program the memory, chip and erase it thousands of times, , En, , gin, , UV stands for ultra-violet, The only problem with UV-EPROM is that, erasing its contents can take up to 20, minutes, All UV-EPROM chips have a window that is, used to shine ultraviolet (UV) radiation to, erase its contents, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 8, , Downloaded From : www.EasyEngineering.net
Page 483 :
Downloaded From : www.EasyEngineering.net, , SEMICONDUCTOR, MEMORY, , , , To program a UV-EPROM chip, the, following steps must be taken:, , ww, w.E, ROM, , EPROM (Erasable, Programmable, ROM), (cont’), , ¾, , Its contents must be erased, To erase a chip, it is removed from its socket on, the system board and placed in EPROM erasure, equipment to expose it to UV radiation for 15-20, minutes, , asy, , ¾, , En, , Program the chip, , gin, , To program a UV-EPROM chip, place it in the, ROM burner, To burn code or data into EPROM, the ROM, burner uses 12.5 volts, Vpp in the UV-EPROM, data sheet or higher, depending on the EPROM, type, Place the chip back into its system board socket, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 9, , Downloaded From : www.EasyEngineering.net
Page 484 :
Downloaded From : www.EasyEngineering.net, , SEMICONDUCTOR, MEMORY, , , , There is an EPROM programmer, (burner), and there is also separate, EPROM erasure equipment, The major disadvantage of UV-EPROM,, is that it cannot be programmed while, in the system board, Notice the pattern of the IC numbers, , ww, w.E, , , ROM, , EPROM (Erasable, Programmable, ROM), (cont’), , , , asy, , En, , gin, , Ex. 27128-25 refers to UV-EPROM that has a capacity, of 128K bits and access time of 250 nanoseconds, ¾, , eer, i, , 27xx always refers to UV-EPROM chips, , ng., , For ROM chip 27128, find the number of data and address pins., , net, , Solution:, The 27128 has a capacity of 128K bits. It has 16K × 8, organization (all ROMs have 8 data pins), which indicates that, there are 8 pins for data, and 14 pins for address (214 = 16K), HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 10, , Downloaded From : www.EasyEngineering.net
Page 485 :
Downloaded From : www.EasyEngineering.net, , SEMICONDUCTOR, MEMORY, , , , EEPROM has several advantage over, EPROM, , ww, w.E, ROM, , EEPROM, (Electrically, Erasable, Programmable, ROM), , ¾, , Its method of erasure is electrical and, therefore instant, as opposed to the 20minute erasure time required for UVEPROM, One can select which byte to be erased, in, contrast to UV-EPROM, in which the entire, contents of ROM are erased, One can program and erase its contents, while it is still in the system board, , asy, , ¾, , ¾, , En, , gin, , eer, i, , ng., , EEPROM does not require an external erasure, and programming device, The designer incorporate into the system board, the circuitry to program the EEPROM, , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 11, , Downloaded From : www.EasyEngineering.net
Page 486 :
Downloaded From : www.EasyEngineering.net, , SEMICONDUCTOR, MEMORY, , , , Flash EPROM has become a popular, user-programmable memory chip since, the early 1990s, , ww, w.E, ROM, , Flash Memory, EPROM, , ¾, , The process of erasure of the entire, contents takes less than a second, or might, say in a flash, , asy, , En, , The erasure method is electrical, It is commonly called flash memory, , ¾, , gin, , The major difference between EEPROM, and flash memory is, , eer, i, , Flash memory’s contents are erased, then the, entire device is erased, – There are some flash memories are recently, made so that the erasure can be done block, by block, One can erase a desired section or byte on, EEPROM, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 12, , Downloaded From : www.EasyEngineering.net
Page 487 :
Downloaded From : www.EasyEngineering.net, , , , SEMICONDUCTOR, MEMORY, , It is believed that flash memory will, replace part of the hard disk as a mass, storage medium, , ww, w.E, ROM, , Flash Memory, EPROM, (cont’), , ¾, , The flash memory can be programmed, while it is in its socket on the system board, , asy, , ¾, , ¾, , Widely used as a way to upgrade PC BIOS ROM, , Flash memory is semiconductor memory, with access time in the range of 100 ns, compared with disk access time in the, range of tens of milliseconds, Flash memory’s program/erase cycles must, become infinite, like hard disks, , En, , gin, , eer, i, , ng., , Program/erase cycle refers to the number of, times that a chip can be erased and, programmed before it becomes unusable, The program/erase cycle is 100,000 for flash, and EEPROM, 1000 for UV-EPROM, HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 13, , Downloaded From : www.EasyEngineering.net
Page 488 :
Downloaded From : www.EasyEngineering.net, , SEMICONDUCTOR, MEMORY, , , , Mask ROM refers to a kind of ROM in, which the contents are programmed by, the IC manufacturer, not userprogrammable, , ww, w.E, , ¾, , Mask ROM, , ¾, , ¾, , HANEL, , The terminology mask is used in IC, fabrication, Since the process is costly, mask ROM is, used when the needed volume is high and, it is absolutely certain that the contents will, not change, The main advantage of mask ROM is its, cost, since it is significantly cheaper than, other kinds of ROM, but if an error in the, data/code is found, the entire batch must, be thrown away, , asy, , ROM, , En, , gin, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 14, , Downloaded From : www.EasyEngineering.net
Page 489 :
Downloaded From : www.EasyEngineering.net, , SEMICONDUCTOR, MEMORY, , , , RAM memory is called volatile memory, since cutting off the power to the IC, will result in the loss of data, , ww, w.E, , ¾, , Sometimes RAM is also referred to as, RAWM (read and write memory), in, contrast to ROM, which cannot be written, to, , asy, , RAM (Random, Access, Memory), , , , E, ngitypes of RAM, There are three, nee, rin, g.n, e, ¾, ¾, ¾, , Static RAM (SRAM), NV-RAM (nonvolatile RAM), Dynamic RAM (DRAM), , t, , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 15, , Downloaded From : www.EasyEngineering.net
Page 490 :
Downloaded From : www.EasyEngineering.net, , SEMICONDUCTOR, MEMORY, , , , Storage cells in static RAM memory are, made of flip-flops and therefore do not, require refreshing in order to keep their, data, The problem with the use of flip-flops, for storage cells is that each cell require, at least 6 transistors to build, and the, cell holds only 1 bit of data, , ww, w.E, RAM, , SRAM (Static, RAM), , , , asy, , ¾, ¾, , HANEL, , En, , gin, , In recent years, the cells have been made, of 4 transistors, which still is too many, The use of 4-transistor cells plus the use of, CMOS technology has given birth to a highcapacity SRAM, but its capacity is far below, DRAM, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 16, , Downloaded From : www.EasyEngineering.net
Page 491 :
Downloaded From : www.EasyEngineering.net, , SEMICONDUCTOR, MEMORY, , , , NV-RAM combines the best of RAM and, ROM, , ww, w.ENV-RAM chip internally is made of the, asy components, following, En, gin, eer, ing, .ne, t, RAM, , NV-RAM, (Nonvolatile RAM), , ¾, , The read and write ability of RAM, plus the, nonvolatility of ROM, , ¾, , It uses extremely power-efficient SRAM, cells built out of CMOS, It uses an internal lithium battery as a, backup energy source, It uses an intelligent control circuitry, , , , ¾, ¾, , The main job of this control circuitry is to, monitor the Vcc pin constantly to detect loss of, the external power supply, , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 17, , Downloaded From : www.EasyEngineering.net
Page 492 :
Downloaded From : www.EasyEngineering.net, , SEMICONDUCTOR, MEMORY, , , , To ensure the integrity of the ROM, contents, every system must perform, the checksum calculation, , ww, w.E, , ¾, , RAM, , Checksum Byte, ROM, , The process of checksum will detect any, corruption of the contents of ROM, The checksum process uses what is called, a checksum byte, , asy, , ¾, , En, , gin, , The checksum byte is an extra byte that is, tagged to the end of series of bytes of data, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 18, , Downloaded From : www.EasyEngineering.net
Page 493 :
Downloaded From : www.EasyEngineering.net, , SEMICONDUCTOR, MEMORY, , , , To calculate the checksum byte of a, series of bytes of data, , ww, w.E, , ¾, ¾, , RAM, , Checksum Byte, ROM, (cont’), , , , asy, , En, , To perform the checksum operation,, add all the bytes, including the, checksum byte, ¾, ¾, , HANEL, , Add the bytes together and drop the carries, Take the 2’s complement of the total sum,, and that is the checksum byte, which, becomes the last byte of the series, , gin, , eer, i, , The result must be zero, If it is not zero, one or more bytes of data, have been changed, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 19, , Downloaded From : www.EasyEngineering.net
Page 494 :
Downloaded From : www.EasyEngineering.net, , SEMICONDUCTOR, MEMORY, , Assume that we have 4 bytes of hexadecimal data: 25H, 62H, 3FH, and, 52H.(a) Find the checksum byte, (b) perform the checksum operation to, ensure data integrity, and (c) if the second byte 62H has been changed, to 22H, show how checksum detects the error., , ww, w.E, RAM, , Checksum Byte, ROM, (cont’), , Solution:, (a) Find the checksum byte., 25H, The checksum is calculated by first adding the, +, 62H, bytes. The sum is 118H, and dropping the carry,, +, 3FH, we get 18H. The checksum byte is the 2’s, +, 52H, complement of 18H, which is E8H, 118H, (b) Perform the checksum operation to ensure data integrity., 25H, +, 62H, Adding the series of bytes including the checksum, +, 3FH, byte must result in zero. This indicates that all the, +, 52H, bytes are unchanged and no byte is corrupted., +, E8H, 200H (dropping the carries), (c) If the second byte 62H has been changed to 22H, show how, checksum detects the error., 25H, +, 22H, Adding the series of bytes including the checksum, +, 3FH, byte shows that the result is not zero, which indicates, +, 52H, that one or more bytes have been corrupted., +, E8H, 1C0H (dropping the carry, we get C0H), , asy, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 20, , Downloaded From : www.EasyEngineering.net
Page 495 :
Downloaded From : www.EasyEngineering.net, , SEMICONDUCTOR, MEMORY, , , , Dynamic RAM uses a capacitor to store, each bit, , ww, w.E, , ¾, ¾, , RAM, , DRAM (Dynamic, RAM), , , , It cuts down the number of transistors, needed to build the cell, It requires constant refreshing due to, leakage, , a, Thesadvantages, and disadvantages of, y, En, DRAM memory, gin, eer, ing, .ne, t, ¾, , ¾, , The major advantages are high density, (capacity), cheaper cost per bit, and lower, power consumption per bit, The disadvantages is that, it must be refreshed periodically, due to the fact, that the capacitor cell loses its charge;, While it is being refreshed, the data cannot be, accessed, , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 21, , Downloaded From : www.EasyEngineering.net
Page 496 :
Downloaded From : www.EasyEngineering.net, , SEMICONDUCTOR, MEMORY, , , , In DRAM there is a problem of packing, a large number of cells into a single, chip with the normal number of pins, assigned to addresses, , ww, w.E, RAM, , Packing Issue in, DRAM, , asy, , ¾, , En, , gin, , For example, a 64K-bit chip (64K×1) must have, 16 address lines and 1 data line, requiring 16, pins to send in the address, , ¾, , HANEL, , Using conventional method of data access,, large number of pins defeats the purpose, of high density and small packaging, , eer, i, , The method used is to split the address in, half and send in each half of the address, through the same pins, thereby requiring, fewer address pins, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 22, , Downloaded From : www.EasyEngineering.net
Page 497 :
Downloaded From : www.EasyEngineering.net, , SEMICONDUCTOR, MEMORY, , , , Internally, the DRAM structure is, divided into a square of rows and, columns, The first half of the address is called, the row and the second half is called, column, , ww, w.E, RAM, , Packing Issue in, DRAM, (cont’), , , , asy, , ¾, , ¾, , HANEL, , En, , The first half of the address is sent in, through the address pins, and by activating, RAS (row address strobe), the internal, latches inside DRAM grab the first half of, the address, After that, the second half of the address is, sent in through the same pins, and by, activating CAS (column address strobe),, the internal latches inside DRAM latch the, second half of the address, , gin, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 23, , Downloaded From : www.EasyEngineering.net
Page 498 :
Downloaded From : www.EasyEngineering.net, , SEMICONDUCTOR, MEMORY, , , , In the discussion of ROM, we noted, that all of them have 8 pins for data, , ww, w.E, RAM, , DRAM, Organization, , ¾, , This is not the case for DRAM memory, chips, which can have any of the x1, x4, x8,, x16 organizations, , asy, , En, , Discuss the number of pins set aside for address in each of the, following memory chips. (a) 16K×4 DRAM (b) 16K×4 SRAM, , gin, , Solution :, Since 214 = 16K :, (a) For DRAM we have 7 pins (A0-A6) for the address pins and 2, pins for RAS and CAS, (b) For SRAM we have 14 pins for address and no pins for RAS, and CAS since they are associated only with DRAM. In both, cases we have 4 pins for the data bus., , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 24, , Downloaded From : www.EasyEngineering.net
Page 499 :
Downloaded From : www.EasyEngineering.net, , MEMORY, ADDRESS, DECODING, , , , The CPU provides the address of the, data desired, but it is the job of the, decoding circuitry to locate the selected, memory block, , ww, w.E, , asy, , ¾, , ¾, , Memory chips have one or more pins called, CS (chip select), which must be activated, for the memory’s contents to be accessed, Sometimes the chip select is also referred, to as chip enable (CE), , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 25, , Downloaded From : www.EasyEngineering.net
Page 500 :
Downloaded From : www.EasyEngineering.net, , MEMORY, ADDRESS, DECODING, , , , In connecting a memory chip to the, CPU, note the following points, , ww, w.E, (cont’), , ¾, , The data bus of the CPU is connected, directly to the data pins of the memory chip, Control signals RD (read) and WR (memory, write) from the CPU are connected to the, OE (output enable) and WE (write enable), pins of the memory chip, In the case of the address buses, while the, lower bits of the address from the CPU go, directly to the memory chip address pins,, the upper ones are used to activate the CS, pin of the memory chip, , asy, , ¾, , En, , ¾, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 26, , Downloaded From : www.EasyEngineering.net
Page 503 :
Downloaded From : www.EasyEngineering.net, , MEMORY, ADDRESS, DECODING, , , , This is one of the most widely used, address decoders, , ww, w.E, , Using 74LS138, 3-8 Decoder, , ¾, , The 3 inputs A, B, and C generate 8 activelow outputs Y0 – Y7, Each Y output is connected to CS of a memory, chip, allowing control of 8 memory blocks by a, single 74LS138, , asy, , ¾, , En, , In the 74LS138, where A, B, and C select, which output is activated, there are three, additional inputs, G2A, G2B, and G1, , gin, , eer, i, , G2A and G2B are both active low, and G1 is, active high, If any one of the inputs G1, G2A, or G2B is not, connected to an address signal, they must be, activated permanently either by Vcc or ground,, depending on the activation level, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 29, , Downloaded From : www.EasyEngineering.net
Page 506 :
Downloaded From : www.EasyEngineering.net, , MEMORY, ADDRESS, DECODING, , , , Other widely used decoders are, programmable logic chips such as PAL, and GAL chips, , ww, w.E, , ¾, , Using, Programmable, Logic, , One disadvantage of these chips is that, one must have access to a PAL/GAL, software and burner, whereas the 74LS138, needs neither of these, The advantage of these chips is that they, are much more versatile since they can be, programmed for any combination of, address ranges, , asy, , ¾, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 32, , Downloaded From : www.EasyEngineering.net
Page 507 :
Downloaded From : www.EasyEngineering.net, , INTERFACING, EXTERNAL, ROM, , , , The 8031 chip is a ROMless version of, the 8051, , ww, w.E, , ¾, , It is exactly like any member of the 8051, family as far as executing the instructions, and features are concerned, but it has no, on-chip ROM, To make the 8031 execute 8051 code, it, must be connected to external ROM, memory containing the program code, , asy, , ¾, , , , HANEL, , En, , gin, , eer, i, , 8031 is ideal for many systems where, the on-chip ROM of 8051 is not, sufficient, since it allows the program, size to be as large as 64K bytes, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 33, , Downloaded From : www.EasyEngineering.net
Page 514 :
Downloaded From : www.EasyEngineering.net, , INTERFACING, EXTERNAL, ROM, , , , In an 8751 system we could use onchip ROM for boot code and an external, ROM will contain the user’s program, , ww, w.E, , We still have EA = Vcc,, , ¾, , On-Chip and, Off-Chip Code, ROM, , asy, , Upon reset 8051 executes the on-chip program, first, then, When it reaches the end of the on-chip ROM, it, switches to external ROM for rest of program, , En, , gin, , On-chip and Off-chip Program Code Access, 8031/51, EA = GND, , 0000, Off, Chip, , ~, , FFFF, , HANEL, , ~, , eer, i, , 8051, EA = Vcc, , 0000, On-chip, 0FFF, 1000, Off, Chip, , ~, FFFF, , ng., , 0000, , On-chip, , 1FFF, 2000, , ~, , 8052, EA = Vcc, , ~, , FFFF, , net, , Off, Chip, , ~, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 40, , Downloaded From : www.EasyEngineering.net
Page 515 :
Downloaded From : www.EasyEngineering.net, , INTERFACING, EXTERNAL, ROM, , Discuss the program ROM space allocation for each of the following, cases., (a) EA = 0 for the 8751 (89C51) chip., (b) EA = Vcc with both on-chip and off-chip ROM for the 8751., (c) EA = Vcc with both on-chip and off-chip ROM for the 8752., , ww, w.E, , On-Chip and, Off-Chip Code, ROM, (cont’), , Solution:, (a) When EA = 0, the EA pin is strapped to GND, and all program, fetches are directed to external memory regardless of whether or not, the 8751 has some on-chip ROM for program code. This external, ROM can be as high as 64K bytes with address space of 0000 –, FFFFH. In this case an 8751(89C51) is the same as the 8031 system., (b) With the 8751 (89C51) system where EA=Vcc, it fetches the, program code of address 0000 – 0FFFH from on-chip ROM since it, has 4K bytes of on-chip program ROM and any fetches from, addresses 1000H – FFFFH are directed to external ROM., (c) With the 8752 (89C52) system where EA=Vcc, it fetches the, program code of addresses 0000 – 1FFFH from on-chip ROM since, it has 8K bytes of on-chip program ROM and any fetches from, addresses 2000H – FFFFH are directed to external ROM, , asy, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 41, , Downloaded From : www.EasyEngineering.net
Page 516 :
Downloaded From : www.EasyEngineering.net, , 8051 DATA, MEMORY, SPACE, , , , The 8051 has 128K bytes of address, space, , ww, w.E, , Data Memory, Space, , ¾, , 64K bytes are set aside for program code, Program space is accessed using the program, counter (PC) to locate and fetch instructions, In some example we placed data in the code, space and used the instruction, MOVC A,@A+DPTR to get data, where C stands, for code, , asy, , En, , ¾, , gin, , eer, i, , The other 64K bytes are set aside for data, The data memory space is accessed using the, DPTR register and an instruction called MOVX,, where X stands for external, – The data memory space must be, implemented externally, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 42, , Downloaded From : www.EasyEngineering.net
Page 517 :
Downloaded From : www.EasyEngineering.net, , 8051 DATA, MEMORY, SPACE, , , , We use RD to connect the 8031/51 to, external ROM containing data, , ww, w.E, , External ROM, for Data, , ¾, , For the ROM containing the program code,, PSEN is used to fetch the code, , asy, , En, , gin, , eer, i, , ng., , net, , 8051 Connection to External Data ROM, HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 43, , Downloaded From : www.EasyEngineering.net
Page 519 :
Downloaded From : www.EasyEngineering.net, , 8051 DATA, MEMORY, SPACE, , Show the design of an 8031-based system with 8K bytes of program, ROM and 8K bytes of data ROM., , ww, w.E, , MOVX, Instruction, (cont’), , Solution:, Figure 14-14 shows the design. Notice the role of PSEN and RD in, each ROM. For program ROM, PSEN is used to activate both OE and, CE. For data ROM, we use RD to active OE, while CE is activated by a, Simple decoder., , asy, , En, , gin, , eer, i, , ng., , net, , 8031 Connection to External Data ROM and External Program ROM, , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 45, , Downloaded From : www.EasyEngineering.net
Page 522 :
Downloaded From : www.EasyEngineering.net, , 8051 DATA, MEMORY, SPACE, , , , Assume that we have an 8031-based, system connected to a single 64K×8, (27512) external ROM chip, , ww, w.E, , ¾, , Single External, ROM for Code, and Data, , The single external ROM chip is used for, both program code and data storage, , asy, , ¾, , For example, the space 0000 – 7FFFH is, allocated to program code, and address space, 8000H – FFFFH is set aside for data, , En, , gin, , In accessing the data, we use the MOVX, instruction, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 48, , Downloaded From : www.EasyEngineering.net
Page 523 :
Downloaded From : www.EasyEngineering.net, , 8051 DATA, MEMORY, SPACE, , , , To allow a single ROM chip to provide, both program code space and data, space, we use an AND gate to signal, the OE pin of the ROM chip, , ww, w.E, , Single External, ROM for Code, and Data, (cont’), , asy, , En, , gin, , eer, i, , ng., , net, , A Single ROM for BOTH Program and Data, HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 49, , Downloaded From : www.EasyEngineering.net
Page 524 :
Downloaded From : www.EasyEngineering.net, , 8051 DATA, MEMORY, SPACE, , Assume that we need an 8031 system with 16KB of program space,, 16KB of data ROM starting at 0000, and 16K of NV-RAM starting at, 8000H. Show the design using a 74LS138 for the address decoder., , ww, w.E, , 8031 System, with ROM and, RAM, , Solution:, The solution is diagrammed in Figure 14-17. Notice that there is no, need for a decoder for program ROM, but we need a 74LS138 decoder, For data ROM and RAM. Also notice that G1 = Vcc, G2A = GND,, G2B = GND, and the C input of the 74LS138 is also grounded since we, Use Y0 – Y3 only. 8031 Connection to External Program ROM,, , asy, , En, , Data RAM, and Data ROM, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 50, , Downloaded From : www.EasyEngineering.net
Page 525 :
Downloaded From : www.EasyEngineering.net, , 8051 DATA, MEMORY, SPACE, , , , In some applications we need a large, amount of memory to store data, , ww, w.E, , Interfacing to, Large External, Memory, , ¾, , , , The 8051 can support only 64K bytes of, external data memory since DPTR is 16-bit, , asy, , To solve this problem, we connect A0 –, A15 of the 8051 directly to the external, memory’s A0 – A15 pins, and use some, of the P1 pins to access the 64K bytes, blocks inside the single 256K×8, memory chip, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 51, , Downloaded From : www.EasyEngineering.net
Page 527 :
Downloaded From : www.EasyEngineering.net, , 8051 DATA, MEMORY, SPACE, , In a certain application, we need 256K bytes of NV-RAM to store data, collected by an 8051 microcontroller. (a) Show the connection of an, 8051 to a single 256K×8 NV-RAM chip. (b) Show how various blocks, of this single chip are accessed, , ww, w.E, , Interfacing to, Large External, Memory, (cont’), , Solution:, (a) The 256K×8 NV-RAM has 18 address pins (A0 – A17) and 8 data, lines. As shown in Figure 14-18, A0 – A15 go directly to the, memory chip while A16 and A17 are controlled by P1.0 and P1.1,, respectively. Also notice that chip select of external RAM is, connected to P1.2 of the 8051., (b) The 256K bytes of memory are divided into four blocks, and each, block is accessed as follows :, Chip select, A17, A16, P1.2, P1.1, P1.0, Block address space, 0, 0, 0, 00000H - 0FFFFH, 0, 0, 1, 10000H - 1FFFFH, 0, 1, 0, 20000H - 2FFFFH, 0, 1, 1, 30000H - 3FFFFH, 1, x, x, External RAM disabled, …., , asy, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 53, , Downloaded From : www.EasyEngineering.net
Page 529 :
Downloaded From : www.EasyEngineering.net, , ww, , INTERFACING, LCD TO 8051, LCD Operation, , w.E, , Home Automation, Networking, and Entertainment Lab, , Dept. of Computer Science and Information Engineering, National Cheng Kung University, , Pin Descriptions for LCD, , INTERFACING, LCD TO 8051, LCD Pin, Descriptions, , - Send displayed, information or, instruction, command codes to, the LCD, - Read the contents, of the LCD’s, internal registers, HANEL, , HANEL, , I/O, , Descriptions, , 1, , VSS, , --, , Ground, , 2, , VCC, , --, , +5V power supply, , 3, , VEE, , --, , Power supply to control contrast, , 4, , RS, , I, , RS=0 to select command register,, RS=1 to select data register, , I, , ¾, , asy, En, gin, , Symbol, , R/W, , The declining prices of LCD, The ability to display numbers, characters,, and graphics, Incorporation of a refreshing controller into, the LCD, thereby relieving the CPU of the, task of refreshing the LCD, Ease of programming for characters and, graphics, , ¾, ¾, , Pin, , 5, , LCD is finding widespread use replacing, LEDs, ¾, , REAL-WORLD INTERFACING I, LCD, ADC, AND SENSORS, , Chung-Ping Young, 楊中平, , , , 6, , E, , I/O, , Enable, , 7, , DB0, , I/O, , The 8-bit data bus, , eer, i, , INTERFACING, LCD TO 8051, , LCD Command, Codes, , R/W=0 for write,, R/W=1 for read, , used by the, LCD to latch, information, presented to, its data bus, , Department of Computer Science and Information Engineering, National Cheng Kung University, , LCD Command Codes, Code (Hex), , Command to LCD Instruction Register, , 1, , Clear display screen, , 2, , Return home, , 4, , Decrement cursor (shift cursor to left), , 6, , Increment cursor (shift cursor to right), , 5, , Shift display right, , 7, , Shift display left, , 8, , Display off, cursor off, , A, , Display off, cursor on, , C, , Display on, cursor off, , E, , Display on, cursor blinking, , F, , Display on, cursor blinking, , 10, , Shift cursor position to left, , 14, , Shift cursor position to right, , 18, , Shift the entire display to the left, , 1C, , Shift the entire display to the right, , 80, , Force cursor to beginning to 1st line, , ng., , net, , 8, , DB1, , I/O, , The 8-bit data bus, , 9, , DB2, , I/O, , The 8-bit data bus, , 10, , DB3, , I/O, , The 8-bit data bus, , 11, , DB4, , I/O, , The 8-bit data bus, , 12, , DB5, , I/O, , The 8-bit data bus, , 13, , DB6, , I/O, , The 8-bit data bus, , C0, , Force cursor to beginning to 2nd line, , 14, , DB7, , I/O, , The 8-bit data bus, , 38, , 2 lines and 5x7 matrix, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 3, , HANEL, , 2, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 4, , 1, Downloaded From : www.EasyEngineering.net
Page 531 :
Downloaded From : www.EasyEngineering.net, , One can put data at any location in the, LCD and the following shows address, locations and how they are accessed, , ww, , INTERFACING, LCD TO 8051, LCD Data, Sheet, , , , RS, , R/W, , DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0, , 0, , 0, , 1, , ¾, ¾, , The upper address, range can go as, high as 0100111, for the 40character-wide, LCD, which, corresponds to, locations 0 to 39, HANEL, , INTERFACING, TO ADC AND, SENSORS, , A, , A, , A, , A, , A, , A, , INTERFACING, LCD TO 8051, , tDSW = Data set up time, = 195 ns (minimum), Data, , LCD Data, Sheet, , E, , (cont’), , R/W, , AAAAAAA=000_0000 to 010_0111 for line1, AAAAAAA=100_0000 to 110_0111 for line2, DB7, , Line1 (min) 1, , DB6, , DB5, , DB4, , 0, , 0, , 0, , Line1 (max) 1, , 0, , 1, , 0, , Line2 (min) 1, , 1, , 0, , 0, , tAS, , tPWH, , Line2 (max) 1, , 1, , 1, , 0, , DB2, , DB1, , DB0, , 0, , 0, , 0, , 0, , 0, , 1, , 1, , 1, , 0, , 0, , 0, , 0, , 0, , 1, , 1, , 1, , Department of Computer Science and Information Engineering, National Cheng Kung University, , , , ADCs (analog-to-digital converters) are, among the most widely used devices, for data acquisition, ¾, , , , 9, , A physical quantity, like temperature,, pressure, humidity, and velocity, etc., is, converted to electrical (voltage, current), signals using a device called a transducer,, or sensor, , tAH = Hold time after E has, come down for both RS and, R/W = 10 ns (minimum), , Department of Computer Science and Information Engineering, National Cheng Kung University, , tPWH = Enable pulse width, = 450 ns (minimum), tAS = Set up time prior to E, (going high) for both RS and, R/W = 140 ns (minimum), , HANEL, , 11, , Department of Computer Science and Information Engineering, National Cheng Kung University, , eer, i, , INTERFACING, TO ADC AND, SENSORS, ADC804 Chip, , We need an analog-to-digital converter, to translate the analog signals to digital, numbers, so microcontroller can read, them, , tAH, , RS, , asy, En, gin, DB3, , tH = Data hold time, = 10 ns (minimum), , tH, tDSW, , LCD Addressing for the LCDs of 40×2 size, , ADC Devices, , HANEL, , w.E, A, , LCD Timing, , , , 10, , ADC804 IC is an analog-to-digital, converter, ¾, ¾, , It works with +5 volts and has a resolution, of 8 bits, Conversion time is another major factor in, judging an ADC, , ng., , Conversion time is defined as the time it takes, the ADC to convert the analog input to a digital, (binary) number, In ADC804 conversion time varies depending on, the clocking signals applied to CLK R and CLK IN, pins, but it cannot be faster than 110 µs, , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, , 12, , 3, Downloaded From : www.EasyEngineering.net
Page 536 :
Downloaded From : www.EasyEngineering.net, , ADC808 has 8 analog inputs, , ww, , INTERFACING, TO ADC AND, SENSORS, , , , ¾, ¾, , ADC808/809, Chip, , ¾, , It allows us to monitor up to 8 different, transducers using only a single chip, The chip has 8-bit data output just like the, ADC804, The 8 analog input channels are, multiplexed and selected according to table, below using three address pins, A, B, and C, , w.E, , INTERFACING, TO ADC AND, SENSORS, ADC808/809, Chip, , INTERFACING, TO ADC AND, SENSORS, , 2., , Steps to, Program, ADC808/809, , 3., , 4., , 5., , HANEL, , C, , B, , A, , IN0, , 0, , 0, , 0, , IN1, , 0, , 0, , 1, , IN2, , 0, , 1, , 0, , IN3, , 0, , 1, , 1, , IN4, , 1, , 0, , 0, , IN5, , 1, , 0, , 1, , 29, , It needs an L-to-H pulse to latch in the, address, , An H-to-L pulse to the OE pin will bring, digital data out of the chip, , Department of Computer Science and Information Engineering, National Cheng Kung University, , D0, , Vcc, , D7, EOC, , Vref(-), SC, , OE, ALE, , C, , B, , A, (LSB), , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, , eer, i, , 30, , ng., , Activate SC (start conversion ) by an, H-to-L pulse to initiate conversion, Monitor EOC (end of conversion) to, see whether conversion is finished, Activate OE (output enable ) to read, data out of the ADC chip, ¾, , Clock, , ADC808/809, , IN7, , asy, En, gin, , Selected Analog Channel, , Select an analog channel by providing, bits to A, B, and C addresses, Activate the ALE pin, ¾, , GND, , Vref(+), , IN6 Science and Information, 1, 1 Engineering, 0, Department of Computer, 1, 1, 1, National Cheng KungIN7, University, , 1., , IN0, , (cont’), , ADC808 Analog Channel Selection, , HANEL, , ADC808/809, , net, , 31, , 8, Downloaded From : www.EasyEngineering.net
Page 538 :
Downloaded From : www.EasyEngineering.net, , LCD, INTERFACING, , , , LCD is finding widespread use, replacing LEDs, , ww The declining prices of LCD, The ability to display numbers, characters,, LCD Operation w, graphics, .Eand, asy of a refreshing controller, Incorporation, into theE, LCD, thereby relieving the CPU of, the task ofnrefreshing, the LCD, g, ine for characters and, Ease of programming, eri, graphics, ng., net, ¾, ¾, ¾, , ¾, , HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 2
Page 539 :
Downloaded From : www.EasyEngineering.net, , Pin Descriptions for LCD, , LCD, INTERFACING, , Pin, , Symbol, , I/O, , Descriptions, , 1, , VSS, , --, , Ground, , 2, , VCC, , --, , +5V power supply, , 3, , VEE, , --, , Power supply to control contrast, , 4, , RS, , I, , RS=0 to select command register,, RS=1 to select data register, , I, , R/W=0 for write,, R/W=1 for read, , ww, LCD Pin, w, Descriptions, .E, , asy, E, , 5, , - Send displayed, information or, instruction, command codes to, the LCD, - Read the contents, of the LCD’s, internal registers, HANEL, , R/W, , ngi, , 6, , E, , I/O, , Enable, , 7, , DB0, , I/O, , The 8-bit data bus, , 8, , DB1, , 9, , DB2, , I/O, , 10, , DB3, , I/O, , 11, , DB4, , I/O, , The 8-bit data bus, , 12, , DB5, , I/O, , The 8-bit data bus, , 13, , DB6, , I/O, , The 8-bit data bus, , 14, , DB7, , I/O, , The 8-bit data bus, , I/O, , nee, , The 8-bit data bus, , used by the, LCD to latch, information, presented to, its data bus, , rin, g.n, , The 8-bit data bus, The 8-bit data bus, , et, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 3
Page 540 :
Downloaded From : www.EasyEngineering.net, , LCD Command Codes, , Code (Hex) Command to LCD Instruction Register, , LCD, INTERFACING, , 1, , Clear display screen, , 2, , Return home, , 4, , Decrement cursor (shift cursor to left), , 6, , Increment cursor (shift cursor to right), , 5, , Shift display right, , 7, , Shift display left, , 8, , Display off, cursor off, , A, , Display off, cursor on, , C, , Display on, cursor off, , E, , Display on, cursor blinking, , F, , Display on, cursor blinking, , 10, , Shift cursor position to left, , 14, , Shift cursor position to right, , 18, , Shift the entire display to the left, , 1C, , Shift the entire display to the right, , 80, , Force cursor to beginning to 1st line, , C0, , Force cursor to beginning to 2nd line, , 38, , 2 lines and 5x7 matrix, , ww, LCD Command w, Codes, .E, , HANEL, , asy, E, , ngi, , nee, , rin, g.n, , et, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 4
Page 551 :
Downloaded From : www.EasyEngineering.net, , LCD, INTERFACING, , ....., , void lcdcmd(unsigned char value){, lcdready();, //check the LCD busy flag, ldata = value;, //put the value on the pins, rs = 0;, rw = 0;, en = 1;, //strobe the enable pin, MSDelay(1);, en = 0;, return;, }, , w, Sending w, Information to w, .E, LCD Using, MOVC, Instruction, (cont’), , ngi, , void lcddata(unsigned char value){, lcdready();, //check the LCD busy flag, ldata = value;, //put the value on the pins, rs = 1;, rw = 0;, en = 1;, //strobe the enable pin, MSDelay(1);, en = 0;, return;, }, ....., , HANEL, , asy, E, , nee, , rin, g.n, , et, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 15
Page 552 :
Downloaded From : www.EasyEngineering.net, , LCD, INTERFACING, , ....., , void lcdready(){, busy = 1;, rs = 0;, rw = 1;, while(busy==1){, en = 0;, MSDelay(1);, en = 1;, }, , w, Sending w, Information to w, .E, LCD Using, MOVC, Instruction, (cont’), , asy, E, , //make the busy pin at input, //wait here for busy flag, //strobe the enable pin, , ngi, , void lcddata(unsigned int itime){, unsigned int i, j;, for(i=0;i<itime;i++), for(j=0;j<1275;j++);, }, , nee, , rin, g.n, , et, , HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 16
Page 553 :
Downloaded From : www.EasyEngineering.net, , KEYBOARD, INTERFACING, , , , Keyboards are organized in a matrix of, rows and columns, , ww The, CPU accesses both rows and columns, through ports, w.E, aWhen, syaEkey is pressed, a row and a, column make, ngai contact, nee, In IBM PC keyboards, raisingle, n, g, microcontroller takes care of.hardware, n, et, and software interfacing, ¾, , Therefore, with two 8-bit ports, an 8 x 8 matrix, of keys can be connected to a microprocessor, , ¾, , Otherwise, there is no connection between, rows and columns, , , , HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 17
Page 554 :
Downloaded From : www.EasyEngineering.net, , KEYBOARD, INTERFACING, , , , A 4x4 matrix connected to two ports, ¾, , The rows are connected to an output port, and the columns are connected to an, input port, , ww, Scanning and w, Identifying the, .E, , Matrix Keyboard Connection to ports, , Key, , asy, E, Vcc, , 3, , D0, D1, , If all the rows are, grounded and a key, is pressed, one of, the columns will, have 0 since the key, pressed provides the, path to ground, , HANEL, , D2, , 7, B, F, , 2, , 1, , 0, , 6, , 5, , nee, , ngi, A, , 9, , E, , D, , 4, 8, , C, , D3, , Port 1, (Out), , D3, , D2, , D1, , If no key has, been pressed,, reading the, input port will, yield 1s for all, columns since, they are all, connected to, high (Vcc), , rin, g.n, , D0, , Port 2, (In), , et, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 18
Page 555 :
Downloaded From : www.EasyEngineering.net, , , , KEYBOARD, INTERFACING, , It is the function of the microcontroller, to scan the keyboard continuously to, detect and identify the key pressed, To detect a pressed key, the, microcontroller grounds all rows by, providing 0 to the output latch, then it, reads the columns, , ww, Grounding w, Rows and, .E, , , Reading, Columns, , ¾, , ¾, , asy, If the data, read from columns is D3 – D0 =, E, 1111, no n, key, has been pressed and the, g, inetill key press is detected, process continues, If one of the columnebits has a zero, this, r n occurred, means that a key press ihas, g.n, et, , For example, if D3 – D0 = 1101, this means that, a key in the D1 column has been pressed, After detecting a key press, microcontroller will, go through the process of identifying the key, , HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 19
Page 556 :
Downloaded From : www.EasyEngineering.net, , KEYBOARD, INTERFACING, , , , Starting with the top row, the, microcontroller grounds it by providing, a low to row D0 only, , ww It reads the columns, if the data read is all, Grounding w, 1s, no key in that row is activated and the, Rows and, ., E, process is moved to the next row, a, Reading, s, It, grounds, the next row, reads the, y, Columns, columns,E, and, checks for any zero, n, This processg, continues, until the row is, i, n, identified, eer, After identification of the, in which, inrow, the key has been pressed g., n, Find out which column the pressedekey, t, belongs to, ¾, , , , (cont’), , ¾, , , , ¾, , HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 20
Page 557 :
Downloaded From : www.EasyEngineering.net, , KEYBOARD, INTERFACING, , Example 12-3, From Figure 12-6, identify the row and column of the pressed key for, each of the following., (a) D3 – D0 = 1110 for the row, D3 – D0 = 1011 for the column, (b) D3 – D0 = 1101 for the row, D3 – D0 = 0111 for the column, , Reading, Columns, , Solution :, From Figure 13-5 the row and column can be used to identify the key., (a) The row belongs to D0 and the column belongs to D2; therefore,, key number 2 was pressed., (b) The row belongs to D1 and the column belongs to D3; therefore,, key number 7 was pressed., , ww, Grounding w, Rows and, .E, (cont’), , asy, E, D0, D1, D2, D3, , Port 1, (Out), , HANEL, , ngi, , nee, 1, , 0, , 5, , 4, , A, , 9, , 8, , E, , D, , C, , 3, , 2, , 7, , 6, , B, F, , rin, g.n, Vcc, , D3, , D2, , D1, , D0, , Port 2, (In), , et, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 21
Page 558 :
Downloaded From : www.EasyEngineering.net, , KEYBOARD, INTERFACING, , , , Program 12-4 for detection and, identification of key activation goes, through the following stages:, , ww, To make sure that the preceding key has, Grounding w, been released, 0s are output to all rows, Rows and, ., E, aatsonce,, and the columns are read and, Reading, yE repeatedly until all the columns, checked, Columns, are high n, gin, eer, ing, .ne, t, 1., , (cont’), , , , HANEL, , When all columns are found to be high, the, program waits for a short amount of time, before it goes to the next stage of waiting for, a key to be pressed, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 22
Page 559 :
Downloaded From : www.EasyEngineering.net, , KEYBOARD, INTERFACING, , 2., , ww, Grounding w, Rows and, .E, Reading, Columns, (cont’), , To see if any key is pressed, the columns, are scanned over and over in an infinite, loop until one of them has a 0 on it, , , Remember that the output latches connected, to rows still have their initial zeros (provided, in stage 1), making them grounded, After the key press detection, it waits 20 ms, for the bounce and then scans the columns, again, (a) it ensures that the first key press, detection was not an erroneous one due a, spike noise, (b) the key press. If after the 20-ms delay the, key is still pressed, it goes back into the, loop to detect a real key press, , asy, E, , , ngi, , nee, , rin, g.n, , et, , HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 23
Page 560 :
Downloaded From : www.EasyEngineering.net, , KEYBOARD, INTERFACING, , 3., , ww, Grounding w, Rows and, .E, Reading, Columns, , To detect which row key press belongs to,, it grounds one row at a time, reading the, columns each time, , , asy, E, , , (cont’), , 4., , ngi, , n, e, To identify the key, press, it rotates the, e, r, column bits, one bit at, a time, into the, i, carry flag and checks to n, see, gif.nit is low, et, , , , HANEL, , If it finds that all columns are high, this means, that the key press cannot belong to that row, – Therefore, it grounds the next row and, continues until it finds the row the key, press belongs to, Upon finding the row that the key press, belongs to, it sets up the starting address for, the look-up table holding the scan codes (or, ASCII) for that row, , Upon finding the zero, it pulls out the ASCII, code for that key from the look-up table, otherwise, it increments the pointer to point to, the next element of the look-up table, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 24
Page 561 :
Downloaded From : www.EasyEngineering.net, , 1, , Flowchart for Program 12-4, , KEYBOARD, INTERFACING, , ww, Grounding w, Rows and, .E, Reading, Columns, (cont’), , Read all columns, , Start, no, , Ground all rows, , asy, E, , All keys, down?, yes, , Read all columns, , ngi, , All keys, open?, yes, no, , 1, , Wait for debounce, , nee, , Read all columns, , rin, g.n, no, , All keys, down?, , et, , yes, , 2, , HANEL, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 25
Page 562 :
Downloaded From : www.EasyEngineering.net, , 2, , KEYBOARD, INTERFACING, , ww, Grounding w, Rows and, .E, Reading, Columns, (cont’), , Ground next row, , asy, E, , no, , All keys, down?, , ngi, , yes, , Find which key, is pressed, , nee, , rin, g.n, , Get scan code, from table, Return, , HANEL, , et, , Department of Computer Science and Information Engineering, Downloaded From : www.EasyEngineering.net, National Cheng Kung University, TAIWAN, , 26
Page 568 :
Downloaded From : www.EasyEngineering.net, , 8255 Block Diagram, , PROGRAMMING, THE 8255, , ww, w.E, , 8255 Features, (cont’), , D7 – D0, RD, WR, , asy, , A0, , PB, PC, , A1, , En, , gin, , CS, , It has three separately accessible 8bit ports, A, B, and C, ¾ They can be programmed to, input or output and can be, changed dynamically, ¾ They have handshaking, capability, , HANEL, , PA, , 8, 2, 5, 5, , RESET, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 3, , Downloaded From : www.EasyEngineering.net
Page 572 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, THE 8255, , , , While ports A, B and C are used to, input or output data, the control, register must be programmed to, select operation mode of three ports, The ports of the 8255 can be, programmed in any of the following, modes:, , ww, w.E, , Mode Selection, of 8255, , , , asy, , 1., , En, , , , , , HANEL, , gin, , Mode 0, simple I/O, , eer, i, , Any of the ports A, B, CL, and CU can be, programmed as input out output, All bits are out or all are in, There is no signal-bit control as in P0-P3 of, 8051, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 7, , Downloaded From : www.EasyEngineering.net
Page 573 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, THE 8255, , 2., , ww, w.E, , Mode Selection, of 8255, (cont’), , Mode 1, , , , asy, , 3., , Mode 2, , , , 4., , Port A can be used as a bidirectional I/O port, with handshaking capabilities provided by port, C, Port B can be used either in mode 0 or mode, 1, , En, , gin, , eer, i, , BSR (bit set/reset) mode, , , HANEL, , Port A and B can be used as input or output, ports with handshaking capabilities, Handshaking signals are provided by the bits, of port C, , ng., , Only the individual bits of port C can be, programmed, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 8, , Downloaded From : www.EasyEngineering.net
Page 575 :
Downloaded From : www.EasyEngineering.net, , , , PROGRAMMING, THE 8255, , The more commonly used term is I/O, Mode 0, , ww, w.E, , Simple I/O, Programming, , , , ¾, ¾, , Intel calls it the basic input/output mode, In this mode, any ports of A, B, or C can be, programmed as input or output, , asy, , A given port cannot be both input and output at, the same time, , En, , gin, , Example 15-1, Find the control word of the 8255 for the following configurations:, (a) All the ports of A, B and C are output ports (mode 0), (b) PA = in, PB = out, PCL = out, and PCH = out, Solution:, From Figure 15-3 we have:, (a) 1000 0000 = 80H, , HANEL, , eer, i, , ng., , (b)1001 0000 = 90H, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 10, , Downloaded From : www.EasyEngineering.net
Page 576 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, THE 8255, , , , The 8255 chip is programmed in any, of the 4 modes, , ww, w.E, , ¾, , Connecting, 8031/51 to, 8255, , , , a, We s, must, first find the port address, y, assignedE, to each of ports A, B ,C and, n, the control register, gin, eer, ing, .ne, t, ¾, , HANEL, , mentioned earlier by sending a byte (Intel, calls it a control word) to the control, register of 8255, , called mapping the I/O port, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 11, , Downloaded From : www.EasyEngineering.net
Page 578 :
Downloaded From : www.EasyEngineering.net, , Example 15-2, , PROGRAMMING, THE 8255, , ww, w.E, , Connecting, 8031/51 to, 8255, (cont’), , For Figure 15-4., (a) Find the I/O port addresses assigned to ports A, B, C, and the, control register., (b) Program the 8255 for ports A, B, and C to be output ports., (c) Write a program to send 55H and AAH to all ports continuously., , asy, , Solution, (a), , En, , A15 A14 A13 A12 A11 A10 A9, , A8, , A7, , A6, , x, , x, , x, , X, , 1, , X, , x, , X, , x, , x, , X, , 1, , X, , X, , x, , x, , x, , x, , x, , x, , X, , 1, , X, , X, , x, , x, , x, , x, , x, , x, , x, , 1, , x, , X, , x, , x, , x, , x, , x, , x, , (b), , HANEL, , gin, , The base address for the 8255 is as follows:, A5, , A4, , A3, , A2, , A1, , A0, , x, , x, , x, , x, , 0, , 0, , = 4000H PA, , x, , x, , x, , X, , 0, , 1, , = 4001H PB, , x, , x, , X, , X, , 1, , 0, , = 4002H PC, , x, , x, , x, , x, , 1, , 1, , = 4003H CR, , eer, i, , ng., , net, , The control byte (word) for all ports as output is 80H as seen in, Example 15-1., , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 13, , Downloaded From : www.EasyEngineering.net
Page 581 :
Downloaded From : www.EasyEngineering.net, , Example 15-3, , PROGRAMMING, THE 8255, , ww, w.E, , Connecting, 8031/51 to, 8255, (cont’), , For Figure 15-5., (a) Find the I/O port addresses assigned to ports A, B, C, and the, control register., (b) Find the control byte for PA = in, PB = out, PC = out., (c) Write a program to get data from PA and send it to both B and C., , asy, , Solution:, (a), , (b), HANEL, , En, , gin, , Assuming all the unused bits are 0s, the base port address for, 8255 is 1000H. Therefore we have:, , eer, i, , 1000H, , PA, , 1001H, , PB, , 1002H, , PC, , 1003H, , Control register, , The control word is 10010000, or 90H., , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 16, , Downloaded From : www.EasyEngineering.net
Page 585 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, THE 8255, , , , Examples 15-4 and 15-5, , ww Examples 15-3 and 15-2, w.E, asy, En, gin, eer, inaliases, Make sure that all address, are, g.know, documented, so that the users, n, what address are available if they want, e, t, to expanded the system, ¾, , decode the A0 - A7 address bit, , ¾, , decode a portion of upper address A8 A15, this partial address decoding leads to what, is called address aliases, could have changed all x’s to various, combinations of 1s and 0s, , , , Address Aliases, , ¾, ¾, , to come up with different address, they would all refer to the same physical port, , , , HANEL, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 20, , Downloaded From : www.EasyEngineering.net
Page 587 :
Downloaded From : www.EasyEngineering.net, , Example 15-4, , PROGRAMMING, THE 8255, , For Figure 15-6., (a) Find the I/O port addresses assigned to ports A, B, C, and the, control register., (b) Find the control byte for PA = out, PB = out, PC0 – PC3 = in, and, PC4 – PC7 =out, (c) Write a program to get data from PB and send it to PA. In addition,, data from PCL is sent out to PCU., , ww, w.E, , Address Aliases, (cont’), , asy, , Solution:, (a), , (a), , HANEL, , En, , CS, , A1, , 0010, , 00, , 0, , gin, , 0010, , 00, , 0, , 1, , 0010, , 00, , 1, , 0, , eer, i, , 0010, , 00, , 1, , 1, , 23H, , The port addresses are as follows:, , A0, 0, , Address, 20H, 21H, 22H, , The control word is 10000011, or 83H., , Port, Port A, , ng., , Port B, Port C, , net, , Control Reg, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 22, , Downloaded From : www.EasyEngineering.net
Page 590 :
Downloaded From : www.EasyEngineering.net, , PROGRAMMING, THE 8255, , , , In 8031-based system, , ww, w.E, , ¾, ¾, , 8031 System, With 8255, , ¾, , , , external program ROM is an absolute must, the use of 8255 is most welcome, this is due to the fact that 3031 to, external program ROM, we lose the two, ports P0 and P2, leaving only P1, , asy, , En, , Therefore, connecting an 8255 is the, best way to gain some extra ports., ¾, , gin, , eer, i, , Shown in Figure 15-8, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 25, , Downloaded From : www.EasyEngineering.net
Page 594 :
Downloaded From : www.EasyEngineering.net, , , , 8255, INTERFACING, , Program 15-1, , ww, w.E, , ¾, ¾, , LCD, Connection To, The 8255, , , , a, s, yE15-2, Program, ngi, n, ¾, ¾, , HANEL, , Shows how to issue commands and data, to an LCD. See Figure 15-10, must put a long delay before issue any, information to the LCD, , A repeat of Program 15-1 with the, checking of the busy flag, Notice that no DELAY is used in the main, program, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 29, , Downloaded From : www.EasyEngineering.net
Page 606 :
Downloaded From : www.EasyEngineering.net, , OTHER MODES, OF THE 8255, , , , One of the most powerful features of 8255 is, to handle handshaking signals, Handshaking refers to the process of two, intelligent devices communicating back and, forth, , ww, w.E, , 8255 in Mode 1:, I/O With, Handshaking, Capability, , , , asy, , ¾, , , , En, , Mode 1: outputting data with handshaking, signals, ¾, ¾, ¾, ¾, , HANEL, , Example--printer, , gin, , As show in Figure 15-14, A and B can be used to send data to device with, handshaking signals, Handshaking signals are provided by port C, Figure 15-15 provides a timing diagram, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 41, , Downloaded From : www.EasyEngineering.net
Page 609 :
Downloaded From : www.EasyEngineering.net, , OTHER MODES, OF THE 8255, , , , The following paragraphs provide the, explanation of and reasoning behind, handshaking signals only for port A,, but in concept they re exactly the, same as for port B, , ww, w.E, , 8255 in Mode 1:, I/O With, Handshaking, Capability (cont’), , asy, , ¾, , En, , OBFa (output buffer full for port A), , gin, , an active-low signal going out of PC7, indicate CPU has written a byte of data in port, A, OBFa must be connected to STROBE of the, receiving equipment (such as printer) to inform, it that it can now read a byte of data from the, Port A latch, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 44, , Downloaded From : www.EasyEngineering.net
Page 610 :
Downloaded From : www.EasyEngineering.net, , OTHER MODES, OF THE 8255, , ¾, , ww, w.E, , 8255 in Mode 1:, I/O With, Handshaking, Capability (cont’), , ACKa (acknowledge for port A), active-low input signal received at PC6 of 8255, Through ACK, 8255 knows that the data at port, A has been picked up by the receiving device, When the receiving device picks up the data at, port A, it must inform the 8255 through ACK, 8255 in turn makes OBFa high, to indicate that, the data at the port is now old data, OBFa will not go low until the CPU writes a new, byte pf data to port A, , asy, , En, , ¾, , gin, , eer, i, , INTRa (interrupt request for port A), , ng., , Active-high signal coming out of PC3, The ACK signal is a signal of limited duration, , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 45, , Downloaded From : www.EasyEngineering.net
Page 611 :
Downloaded From : www.EasyEngineering.net, , OTHER MODES, OF THE 8255, , ww, w.E, , 8255 in Mode 1:, I/O With, Handshaking, Capability (cont’), , When it goes active it makes OBFa inactive,, stays low for a small amount of time and then, goes back to high, it is a rising edge of ACK that activates INTRa, by making it high, This high signal on INTRa can be used to get, the attention of the CPU, The CPU is informed through INTRa that the, printer has received the last byte and is ready, to receive another one, INTRa interrupts the CPU in whatever it is, doing and forces it to write the next byte to, port A to be printed, It is important to note that INTRa is set to 1, only if INTEa, OBF, and ACKa are all high, It is reset to zero when the CPU writes a byte, to port A, , asy, , En, , gin, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 46, , Downloaded From : www.EasyEngineering.net
Page 612 :
Downloaded From : www.EasyEngineering.net, , OTHER MODES, OF THE 8255, , ¾, , ww, w.E, , 8255 in Mode 1:, I/O With, Handshaking, Capability (cont’), , INTEa (interrupt enable for port A), The 8255 can disable INTRa to prevent it if, from interrupting the CPU, It is internal flip-plop designed to mask INTRa, It can be set or reset through port C in BSR, mode since the INTEa flip-flop is controlled, through PC6, INTEb is controlled by PC2 in BSR mode, , asy, , ¾, , En, , Status word, , gin, , 8255 enables monitoring of the status of, signals INTR, OBF, and INTE for both ports A, and B, This is done by reading port C into accumulator, and testing the bits, This feature allows the implementation of, polling instead of a hardware interrupt, , eer, i, , ng., , HANEL, , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 47, , Downloaded From : www.EasyEngineering.net
Page 613 :
Downloaded From : www.EasyEngineering.net, , , , OTHER MODES, OF THE 8255, , To understand handshaking with the, 8255, we give an overview of printer, operation, handshaking signals, The following enumerates the steps of, communicating with a printer, , ww, w.E, , , Printer Signal, , ¾, , ¾, , ¾, , , HANEL, , 1. A byte of data is presented to the data, bus of the printer, 2. The printer is informed of the presence, of a byte of data to be printed by activating, its Strobe input signal, 3. whenever the printer receives the data it, informs the sender by activating an output, signal called ACK (acknowledge), 4. signal ACK initiates the process of, providing another byte of data to printer, , asy, , ¾, , En, , gin, , eer, i, , ng., , net, , Table 15-2 provides a list of signals for, Centronics printers, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 48, , Downloaded From : www.EasyEngineering.net
Page 614 :
Downloaded From : www.EasyEngineering.net, , Table 15-2. DB-25 Printer Pins, , OTHER MODES, OF THE 8255, , Pin, , Description, , 1, , Srtobe, , 2, , Data bit 0, , 3, , Data bit 1, , 4, , Data bit 2, , 5, , Data bit 3, , ww, w.E, , Printer Signal, (cont’), , 6, 7, , Data bit 5, , 10, , En, , 11, , Busy, , 12, , Out of paper, , 13, , Select, , 14, , Auto feed, , 15, , Error, , 16, , Initialize printer, , 17, , Select input, , 18 - 25, , Ground, , 8, 9, , HANEL, , asy, , Data bit 4, Data bit 6, Data bit 7, , gin, , ACK (acknowledge), , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 49, , Downloaded From : www.EasyEngineering.net
Page 615 :
Downloaded From : www.EasyEngineering.net, , , , OTHER MODES, OF THE 8255, , As we can see from the steps above,, merely presenting a byte of data to the, printer is not enough, , ww, w.E, , ¾, , Printer Signal, , The printer must be informed of the, presence of the data, At the time the data is sent, the printer, might be busy or out of paper, , asy, , (cont’), , ¾, , En, , So the printer must inform the sender whenever, it finally pick up the data from its data bus, , , , , , HANEL, , g, i, Fig 15-16 and 15-17, show DB-25 and, n, Centronics sides of e, the, printer cable, e, r, inwithg the, Connection of the 8031/51, printer and programming are left, to the, ., n, reader to explore, et, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 50, , Downloaded From : www.EasyEngineering.net
Page 616 :
Downloaded From : www.EasyEngineering.net, , 13, , 1, , OTHER MODES, OF THE 8255, , ww, w.E, , Printer Signal, (cont’), , asy, , 25, , 14, , En, , Figure 15-16. DB-25 Connector, 18, , gin, , 1, , eer, i, , 36, , Figure 15-17. 36-Pin Centronics Connector, HANEL, , ng., , net, 19, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 51, , Downloaded From : www.EasyEngineering.net
Page 617 :
Downloaded From : www.EasyEngineering.net, , Table 15-3. Centronics Printer Specification, , OTHER MODES, OF THE 8255, , Serial, , Return, , Signal, , Direction, , Description, , 1, , 19, , STROBE, , IN, , STROBE pulse to read data in. Pulse width must be, more than 0.5 μs at receiving terminal. The signal, level is normally “high”; read-in of data is, performed at the “low” level of this signal., , 2, , 20, , DATA 1, , IN, , These signals represent information of the 1st to, 8th bits of parallel data, respectively. Each signal is, at “high” level when data is logical “1”, and “low”, when logical “0”, , ww, w.E, , Printer Signal, (cont’), , 3, , DATA 2, , IN, , ““, , 22, , DATA 3, , IN, , ““, , 23, , DATA 4, , IN, , ““, , 24, , DATA 5, , IN, , ““, , 7, , 25, , DATA 6, , IN, , ““, , 8, , 26, , DATA 7, , IN, , ““, , 9, , 27, , DATA 8, , IN, , ““, , 10, , 28, , ACKNLG, , OUT, , Approximately 0.5 μs pulse; “low” indicates data, has been received and printer is ready for data., , 11, , 29, , BUSY, , OUT, , A “high” signal indicates that the printer cannot, receive data. The signal becomes “high” in the, following case: (1)during data entry, (2) during, printing operation,(3)in “off-line” status, (4)during, printer error status., , 4, 5, 6, , HANEL, , asy, 21, , En, , gin, , eer, i, , ng., , net, , 12, , 30, , PE, , OUT, , A “high” signal indicates that printer is out of paper, , 13, , --, , SLCT, , OUT, , Indicates that the printer is in the state selected., , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 52, , Downloaded From : www.EasyEngineering.net
Page 618 :
Downloaded From : www.EasyEngineering.net, , Table 15-3. Centronics Printer Specification (cont’), Serial, , OTHER MODES, OF THE 8255, , Return, , Signal, , Directi, on, , Description, , 14, , --, , AUTOFEEDXT, , IN, , When the signal is at ”low” level, the paper is fed, automatically one line after printing. (The signal, level can be fixed to “low” with DIP SW pin 2-3, provided on the control circuit board.), , 15, , --, , NC, , --, , Not used, , 16, , --, , 0V, , --, , Logic GND level, , --, , CHASISGND, , --, , Printer chassis GND. In the printer, chassis GND, and the logical GND are isolated from each other., , --, , NC, , --, , Not used, , --, , GND, , --, , “Twisted-pair return” signal; GND level, , --, , INIT, , 32, , --, , ERROR, , 33, , --, , 34, , --, , 35, , --, , 36, , --, , ww, w.E, , Printer Signal, (cont’), , 17, , 18, 19–30, 31, , HANEL, , asy, , En, , gin, IN, , When this signal becomes “low” the printer controller is reset to its initial state and the print buffer, is cleared. Normally at “high” level; its pulse width, must be more than 50μs at receiving terminal, , OUT, , The level of this signal becomes “low” when, printer is in “paper end”, “off-line”, and error state, , GND, , --, , Same as with pin numbers 19 t0 30, , NC, , --, , Not used, , --, , Pulled up to +5V dc through 4.7 K ohms resistance., , IN, , Data entry to the printer is possible only when the, level of this signal is “low” .(Internal fixing can be, carried out with DIP SW 1-8. The condition at the, time of shipment is set “low” for this signal.), , SLCTIN, , eer, i, , ng., , net, , Department of Computer Science and Information Engineering, National Cheng Kung University, TAIWAN, , 53, , Downloaded From : www.EasyEngineering.net