exploring c for microcontrollers

Download Exploring c for microcontrollers

If you can't read please download the document

Upload: omar-alkinani

Post on 28-Jan-2015

216 views

Category:

Education


17 download

DESCRIPTION

 

TRANSCRIPT

  • 1. EXPLORING C FOR MICROCONTROLLERS

2. Exploring C for MicrocontrollersA Hands on ApproachJIVAN S. PARABGoa UniversityIndiaVINOD G. SHELAKEShivaji UniversityKolhapur, IndiaRAJANISH K. KAMATShivaji UniversityKolhapur, IndiaandGOURISH M. NAIKGoa UniversityIndia 3. A C.I.P. Catalogue record for this book is available from the Library of Congress.ISBN 978-1-4020-6066-3 (HB)ISBN 978-1-4020-6067-0 (e-book)Published by Springer,P.O. Box 17, 3300 AA Dordrecht, The Netherlands.www.springer.comPrinted on acid-free paperAll Rights Reserved 2007 SpringerNo part of this work may be reproduced, stored in a retrieval system, or transmittedin any form or by any means, electronic, mechanical, photocopying, microfilming, recordingor otherwise, without written permission from the Publisher, with the exceptionof any material supplied specifically for the purpose of being enteredand executed on a computer system, for exclusive use by the purchaser of the work. 4. ContentsForeword ixPrefacexiiiAcknowledgmentsxvii1Microcontrollers: Yesterday, Today, and Tomorrow 11.1 Dening Microcontrollers 11.2 Eagles View: Microcontrollers and Other Competing Devices 21.3 Vignettes: Microcontrollers31.4 Microcontroller Applications 51.5 Growth Economics 71.6 The Major Players in the Microcontroller Chip Market 81.7 Architectural Trends101.8 Jump Starting Your First Embedded System Project141.9 Execution of Embedded System Project: Is it aGordians Knot? 162Integrated Development Environment192.1 Getting Familiar with the IDE 192.2 Working with Keil IDE 202.3 Development Flow for the Keil IDE 213Art of C Programming for Microcontrollers 293.1 Familiarizing with Your Compiler Capabilities 293.2 Whether to Use Headers or Not?303.3 Basic C Program Structure 343.4 Dierences from ANSI C34 v 5. viContents 4 Exploring the Capabilities of On-Chip Resources Programming 37for I/O Ports, Interrupts and Timer/Counter 4.1 Importance of Ports 37 4.2 Simple Ideas for Port Expansion 46 4.3 LED Interfacing 46 4.4 Relevance of LEDs in Todays Lightening Industry48 4.5 Dierent Programs for LED Interfacing 48 4.6 More Projects on LED Interfacing to Microcontrollers514.6.1 Running LEDs 514.6.2 Running Bicolor LED514.6.3 Interfacing 6 LEDsUsing 3 Microcontroller Pins by514.6.4 The LED Dimmer Demoboard 514.6.5 Fading RGB LED 524.6.6 LED Moving Font52 4.7 DIP Switch Interfacing: Getting Input to Your Embedded System 52 4.8 LCD Interfacing 54 4.9 Interrupts in Microcontrollers574.9.1 Writing ISRs in C584.9.2 A Word about Interrupt Latency 63 5 Hyperterminal-Based Control 69 5.1 Hyperterminal 69 5.2 Packet-based Control Scheme 69 5.3 Mechanism and Lots of Possibilities 70 5.4 Application 1: Packet-based Interface for LEDs71 5.5 Application 2: Packet-based Interface for Stepper Motor Control 74 5.6 Application 3: Home Automation from PC HyperTerminal78 6 Embedding Microcontroller in Routine Applications 85 6.1 Application 1: Podium Timer 85 6.2 Application 2: Front Desk Notier 90 6.3 Application 3: Cafeteria Food Alert/Microcontroller-based Menu Card94 6.4 Application 4: Chimney Sentinel 100 6.5 Application 5: Whos First Timer104 6. Contents vii6.6 Application 6: Counting Cars 1106.7 Application 7: Anonymous Voting1146.8 Energy Ecient Lighting Using Microcontroller1197Microcontroller-based Measurement and Control Applications 1237.1 Application 1: Reading a PWM Waveform UsingMicrocontroller1237.2 Single Set-point On/O Controller1277.3 Application 3: I2 C Interface with Serial EPROM1338Securing Your Embedded System Application1398.1 Security Challenges in Embedded Systems1398.2 Application 1: Authentication for Your EmbeddedSystem Application 1408.3 Application 2: Timeout Waiting for Input Data144References 151Index155 7. Foreword If we accept the premise that an embedded engineer is made ratherthan born, then how does one go about making a good one? The authorsof this book Exploring C for Microcontrollers: A Hands-on Approach arecertainly good ones. Not only do they explore some of the inuencesthat shaped themselves but they also try to shape would-be embeddedengineers. Research and developmental activities in embedded systemshas grown in a signicant proportion in the recent past. Embedded soft-ware design is not new to the world, but with the changing time, ithas gained considerable momentum in the recent past, and many youngengineers are strongly inclined to pursue their future in this eld. Thebook is mainly targeted to these engineers who would like to understandin great depth the synergetic combination of hardware and software. The book is divided into eight chapters. Chapter 1 introduces a briefbackground about micro-controllers and explains how they are embed-ded into products commercially available in the market to emphasize theimportance of these in the daily life of mankind. It also gives an insightinto the architectural details and embedded system concepts for stu-dents projects to motivate them into this exciting eld. The rest of thebook concentrates on software development. The integrated developmentenvironment (IDE) is introduced in Chapter 2. Again the screen shotsand step-by-step procedure will certainly make the students and engi-neers fully understand the development process. Chapter 3 dierenti-ates the embedded C paradigm from the conventional ANSI C. Againthe authors explain how to successfully overcome the memory and timeconstraints while developing an embedded C program. Chapter 4 givesan overview of program development for on-chip resources for MCS51family of microcontrollers. Chapters 58 are devoted to live case studies. The book has come out with an elegant presentation to aspiringstudents and engineers from the teaching experience and technicalknowledge the authors have put over a long time in this eld. I stronglyrecommend this book for intermediate programmers, electronics, electri-cal, instrumentation engineers or any individual who is strongly inclinedix 8. xForewordto take up his or her career in embedded C programming. I am sure thereader will experience learning embedded programming by example andlearning by doing. Last but not the least, this book will certainly be avalue addition to the world of embedded programming. Dr. A. Senthil Kumar Head Data Quality Evaluation National Remote Sensing Agency Department of Space Government of India Dr. Senthil Kumar is Head of DQE and PQCD sections of NationalRemote Sensing Agency (NRSA) an autonomous operational centerunder Department of Space (DOS), Government of India. This is thenodal agency in the country for receiving, processing, and distributingthe satellite and aerial remote sensing data and products. NRSA is alsoresponsible for providing end-to-end solutions for utilization of datafor geospatial applications and information services. NRSA has a hugearchive of remote sensing data acquired through Indian and foreignsatellites and also has the capability to acquire data pertaining to anypart of the globe on demand. It is one of the important centers forpromotion of remote sensing and geographic information system tech-nologies in India. NRSA has set up satellite data processing facilitiesstarting from data reception to utilization at various centers withinIndia and across the globe. 9. Preface The past few decades have witnessed evolution of microcontrollers.They have revitalized a number of products or equipment in almost allelds including telecommunications, medical, industrial, and consumerproducts. These embedded microcontroller systems now resides at theheart of modern life with a variety of applications in elds like con-sumer electronics, automotive systems, domestic, and even in aerospaceproducts. Embedding a microcontroller in an electronics instrument orproduct requires a specialized design skill which requires a synergy ofhardware and software skills. In our day-to-day life we come across a number of embedded products.When we switch on the washing machine or send an SMS on a cell phoneone cannot prevent without thinking the mechanism and the co-workingof hardware and software in the background. The market for such smartembedded products is occupying newer and newer applications seem-ingly impossible few years back. Last year the IDC, a premier globalmarket intelligence rm, revealed that the embedded industry productdevelopment was expected to be as high as $75 billion. This entails theindustry requirement of trained human resource with mixed skill setboth in hardware and software. Unfortunately the synergetic demandof hardware and software or sometimes even referred to as rmwarecompetency has led to a supplydemand gap of HR in this eld. Thisgap expressed in numerical gures led to requirement of around 150,000embedded engineers to serve the global embedded industry. This bookis ideal for all those who would like to pursue their career in the excitingworld of microcontroller-based embedded systems. The approach is ped-agogical; rst the hardware module is presented and then the associatedsoftware code in Keil C. The hardware designed is useful for engineering graduates and prac-ticing professionals with the required knowledge and practical hands onskills to design with embedded systems. However, the prerequisite forthe book is background of theoretical aspects of architecture of micro-controllers especially the MCS-51 family. The book starts with initial xi 10. xii Prefaceexperiments, which provide familiarization with the capabilities and thelimitations of the basic 8051 microcontroller using a simulator. Once thereader is comfortable with these primitive programs which covers almostall the on-chip resources, he or she can switch to more advanced ones.The Scope of the Book We now review the topics covered in sequence, chapter by chapter. Chapter 1 provides an overview of microcontrollers and their appli-cations in dierent domains. The architectural trends and the growtheconomics emphasizes the importance of the subject. The photograph ofthe setup and the hints toward project execution will denitely boost thecondence of the novice to kick-start the project with minimal resources. Chapter 2 is devoted to the IDE for the MCS-51 family. The simulationand single stepping as described in this chapter will solve all the projectintricacies of the readers. Chapter 3 illustrates the basic dierence intraditional C programming and embedded C. Chapter 4 deals with theprogramming of on-chip resources of MCS-51 family microcontrollersin C. The theoretical details of these on-chip resources such as ports,timers, etc., are completely eliminated. As the book aims at hands-onapproach, the programs for the on-chip resources have been developedand their execution is illustrated in the Keil simulation environment. The last four chapters, i.e., 58 deal with various project case stud-ies. Several case studies in various application domains such as lighting,measurement and control, security, and domestic applications are devel-oped from scratch. The hardware and software developed in the form ofcase studies also caters to a set of mini projects, which are discussed indetail from the design phase to the actual implementation on a targetsystem. There are 17 case studies given in this book on various systemsthat you may encounter in day-to-day life. Overall the hardware andsoftware developed in this book can be reused for any embedded sys-tem project and is expected to act as a rapid prototyping unit for theembedded systems industry.Reasons for Proposing this Book The market is ooded with a number of good books on embedded sys-tems designed especially with the most popular MCS-51 family. Thesebooks are traditional in nature, i.e., they start with the routine archi-tectural features of 8051, description of registers, ports, interrupts, etc.Most of these are already covered in the device data sheet and appli-cation notes. In the present book all such routine features are skipped.The focus is on programming microcontrollers to be specic MCS-51 11. Preface xiiifamily in C using Keil IDE. The book presents 20 live case studiesapart from the many basic programs organized around every on-chipresource like port, time/counter, interrupt, serial I/O, etc. Rather thanintroducing the underpinning theory or reproducing lengthy data sheets,our approach is learning-through-doing and one that appeals to busyelectronics designers. The C codes given are well supported by easy-to-understand comments wherever required. Mastering the basic modulesand hands-on working with the projects will enable the reader to graspthe basic building blocks for most 8051 programs. Whether you are astudent using the MCS-51 family of microcontrollers for your projectwork or an embedded systems programmer, this book will give you akick start in using and understanding the most popular microcontroller. Authors through their interaction with the undergraduate and post-graduate students as well as industry professionals have found that sucha book is the need of the microcontroller community interested in Cprogramming. The book will bridge the gap between the microcontrollerhardware experts and the C programmers.Major Features The objective of this book is to introduce the readers to the designand implementation of an embedded system. It covers the unique require-ments and limitations of operating in an embedded environment. It alsocovers microcontrollers as the most widespread example of embeddedsystems. In particular, it focuses on the MCS-51 family of microcon-trollers, their programming in C language, and interfacing techniques. Special emphasis is to provide hands-on experience for the readersusing a hardware and interfacing modules described in this book. Theaim is to empower the reader to actually solve his or her problem witha practical hands-on pedagogy through the hardware and software pre-sented in this book. The principle of Design Reuse is explained eec-tively. Further, the readers will also learn how to follow the sequence of dataow through the microcontroller when a program is executed. Addi-tionally, the readers will learn the operation of the microcontrollersI/O functions and the external devices driven by the microcontroller.Hardware and software design issues are discussed for specic systemsimplemented using MCS-51 as the embedded microcontroller. 12. Acknowledgments We would like to take the opportunity to thank all those who havecontributed or helped in some way in the preparation of this text.Particular thanks must go to our heads of the institutions ProfessorM.M. Salunkhe, Vice Chancellor, Shivaji University, Kolhapur, India,and Professor P.S. Zacharias, Vice Chancellor, Goa University, Goa,India for the encouragement and support. We would also like tothank Mr. P. Venugopal, Director, Software Technology Parks of India,Maharashtra Region, for his support. Dr. Kamat and Dr. Naik wouldlike to thank their respective wives for their understanding and patienceshown when the preparation of the book took time which could havebeen spent with the family. Our thanks then to Kamats wife Ruchaand Naiks wife Deepa. Additionally, Mr. Shelake and Mr. Parab would like to express grati-tude to their parents for their encouragement and support over the years.Kamat would like to dedicate his contribution to this book to the mem-ory of the late Professor G.G. Tengshe and the late Dr. V. Rao Indolkar,ACD Machine Control Tools Ltd., Mumbai. Dr. Kamat would also like to thank to his teacher in this eldMr. S. Ramgopal, Indian Institute of Science, Bangalore, and Dr. SenthilKumar, Dr. Raghurama, Deputy Director (Academic) of BITS Pilanias well as Mr. K.S. Deorukhkar for help in reviewing and critical sug-gestions. The past batches of M.Sc. Electronics students of both ShivajiUniversity and Goa University especially Mr. Roy, Mr. Rupesh fromSatyam Computers must be thanked for generation of problems forprograms developed in this book. Jivan S. Parab Vinod G. Shelake Dr. Rajanish K. Kamat Dr. Gourish M. Naik xv 13. Chapter 1Microcontrollers: Yesterday, Today,and Tomorrow1.1Dening Microcontrollers It is said that from the denition everything true about the con-cept follows. Therefore, at the outset let us take a brief review of howthe all-pervasive microcontroller has been dened by various technicalsources. A microcontroller (or MCU) is a computer-on-a-chip used to con-trol electronic devices. It is a type of microprocessor emphasizingself-suciency and cost-eectiveness, in contrast to a general-purposemicroprocessor (the kind used in a PC). A typical microcontroller con-tains all the memory and interfaces needed for a simple application,whereas a general purpose microprocessor requires additional chips toprovide these functions. . . .(Wikipedia [1]) A highly integrated chip that contains all the components compris-ing a controller. Typically this includes a CPU, RAM, some form ofROM, I/O ports, and timers. Unlike a general-purpose computer, whichalso includes all of these components, a microcontroller is designed fora very specic task to control a particular system. As a result, theparts can be simplied and reduced, which cuts down on productioncosts. . . . (Webopedia [2]) A {microprocessor} on a single {integrated circuit} intended to ope-rate as an {embedded} system. As well as a {CPU}, a microcontrollertypically includes small amounts of {RAM} and {PROM} and timersand I/O ports. . . .(Dene That [3]) A single chip that contains the processor (the CPU), non-volatilememory for the program (ROM or ash), volatile memory for input andoutput (RAM), a clock and an I/O control unit. . . . (PC Magazine [4]) A microprocessor on a single integrated circuit intended to operateas an embedded system. As well as a CPU, a microcontroller typicallyincludes small amounts of RAM and PROM and timers and I/O ports.. . . (FOLDOC [5]) 1J.S. Parab et al. (eds.), Exploring C for Microcontrollers, 118. c 2007 Springer. 14. 2Eagles View: Microcontrollers and Other Competing Devices The denitions given by various sources describe microcontroller asan integrated circuit (IC) with processor as well as peripherals on chip.But the crux of the matter is the widespread uses of microcontrollersin electronic systems. They are hidden inside a surprising number ofproducts such as microwave oven, TV, VCR, digital camera, cell phone,Camcorders, cars, printers, keyboards, to name a few. The last three decades and especially the past few years have wit-nessed the tremendous growth in the top-of-the-line processors usedfor personal computing and digital signal processor (DSP) applications.Today, the use of microcontrollers in embedded systems outnumbersthe use of processors in both the PC and the workstation market. It isestimated that over 50% of the vast majority of the computer chips soldare microcontrollers. The main reasons behind their huge success arepowerful yet cleverly chosen customizable electronics, ease in program-ming, and low cost. These days microcontrollers nd increasing appli-cation even in areas where they could not be used previously. With thedecreasing costs and footprints, it is now possible to have small-sizedand cost-eective microcontroller units (MCUs) for new applications.The microcontrollers today are small enough to penetrate into the tra-ditional market for 4-bit applications like TV remote controls, toys, andgames. For the simplest of all control applications they can oer highvalue smart switch functionality for applications that previously usedelectromechanical devices. Also the customers now can add intelligenceto their end products for low cost as per the microcontroller marketreport by Frost & Sullivan research service [6].1.2 Eagles View: Microcontrollersand Other Competing Devices Generally the technical fraternity try to compare the various deviceslike microprocessors, PCs, microcontrollers, DSPs, and recongurabledevices like FPGAs and CPLDs. An interesting point to note is thatembedded systems are made using all the above-mentioned devicesexcept PC owing to its general purpose architecture. As programma-bility is the common feature of all these devices, they have their rmfooting in dierent application domains. On one side of the spectrum,microcontroller-based embedded system design emphasizes on task-specic dedicated applications at low power, low cost, high through-put, and highest reliability. On the other extreme of the spectrum,FPGA-based embedded systems dominate their custom computingarchitectures. Unlike microcontrollers, these systems can be reconguredon the y to suit the application with higher computational density and 15. Microcontrollers: Yesterday, Today, and Tomorrow 3throughput. With the proliferation of density, FPGA-based embeddedsystems oer higher performance with the only challenging issue ofmemory required to store their congurations. The technical community also tends to associate various character-istics of embedded systems with microprocessors and microcontrollers.The microprocessors are typically found to dominate the desktop arenafocusing on more and more bit processing capability, with other fea-tures such as fairly good amount of cache with memory managementand protection schemes supported by the operating system. Althoughmicrocontrollers share exibility aspect of microprocessors through pro-gramming, 8-bit versions are more in use (although 16- and 32-bit exist)with RAM and ROM (instead of cache) added with many on chipperipherals like timer/counter, decoder, communication interface, etc.In the literature many embedded systems products have been reported asmicroprocessors. On the other side of the processor spectrum, a DSP pos-sesses special architecture that provides ultra-fast instruction sequences,such as shift and add, multiply and add, which are commonly used inmath-intensive signal processing applications. The common attributesassociated with the DSPs are multiply-accumulate (MAC) operations,deep pipelining, DMA processing, saturation arithmetic, separate pro-gram and data memories, and oating point capabilities required mostof the time. However, the line of dierentiation between all these devicesis getting blurred at a rapid pace. With the introduction of fuzzy logic,articial intelligence and networked communication capabilities in theconsumer products like refrigerators, mobile phones, and cars, conver-gence of the architectures of most of the above-mentioned programmabledevices is witnessed by the industry. Todays ideal microcontroller isexpected to oer plenty of MIPS, run the DSP programs with the samespeed of the DSP processor, integrate all its peripherals and supportash, communicate with the world with I2C or CAN protocols, with-stand extremes of environment in a car engine, and cost but a fewcents.1.3 Vignettes: Microcontrollers It is interesting to note that the development of microprocessors seemsto be an accident out of the microcontroller synthesis. In 1969, Busicom,a Japanese company, approached Intel to convert their special pur-pose ROM and shift registerbased calculator cores into a specializedapplication specic processor. The objective was the development ofmicrocontrollers rather than a general purpose of CPU chips for key-board scanning, display control, printer control, and other functions for 16. 4Vignettes: Microcontrollersa Busicom-manufactured calculator. However, the Intel engineers optedfor a more exible programmable microcomputer approach rather thanthe random logic chip-set originally envisioned by Busicom. The fourdesigns [7] proposed by Federico Faggin, Ted Ho, and Stan Mazor fromIntel were a 2048-bit ROM with a 4-bit programmable input/outputport (4001); a 4-registers 20-locations 4-bit RAM data memorywith a 4-bit output port (4002); an input/output (I/O) expansion chip,consisting of a static shift register with serial input and serial/paralleloutput (4003); and the 4-bit CPU chip (4004). The 4001, 4002, and4003 are very close to microcontroller kind of architecture rather thanmicroprocessor. However, the Intel 4004, which was supposed to be thebrains of a calculator, turned out to be a general-purpose microproces-sor as powerful as ENIAC. The scientic papers and literature publishedaround 1971 reveal that the MP944 digital processor used for the F-14Tomcat aircraft of the US Navy qualies as the rst microprocessor.Although interesting, it was not a single-chip processor, and was notgeneral purpose it was more like a set of parallel building blocks youcould use to make a special purpose DSP form [8]. It indicates thattodays industry theme of converging DSP-microcontroller architectureswas started in 1971. The other companies were also catching up at the same time. Therst ocial claim of ling the patent goes to Texas Instruments underthe trade name TMS1000 way back in 1974. This was the rst micro-controller which included a 4-bit accumulator, 4-bit Y register and 2- or3-bit X register, which combined to create a 6- or 7-bit index registerfor the 64 or 128 nibbles of on-chip RAM. A 1-bit status register was usedfor various purposes in dierent contexts. This microcontroller served asthe brain of the Texas Instruments educational toy named Spark andSpell shown in the movie ET: The Extraterrestrial. In 1976, Intel intro-duced the rst 8-bit microcontroller family MCS-48 which was so pop-ular that they could ship 251,000 units in that year. After four years ofcontinuous research, the MCS-48 family was upgraded to 8051, an 8-bitmicrocontroller with on-board EPROM memory. Intel shipped 22 millionpieces in 1980. The market requirement was so much that the total unitssold in three years later were 91 million. The year 2005 is a special onefor the microcontroller 8051. It has celebrated its 25th anniversary. But,also in 2005, Intel notied they would discontinue all automotive versionsof their microcontrollers, including 8051. Car engine control units wereonce perhaps the most prominent application for 8051s. This means onlyone thing, Intel gives up the microcontrollers for good. This is conrmedby product change notication published in early 2006, announcing thatIntel drops its whole microcontroller business [9]. 17. Microcontrollers: Yesterday, Today, and Tomorrow51.4 Microcontroller Applications The microcontroller applications are mainly categorized into thefollowing types (see Figure 1.1):AudioAutomotiveCommunication/wiredComputers and peripheralsConsumerIndustrialImaging and videoMedicalMilitary/aerospaceMobile/wirelessMotor controlSecurityGeneral PurposeMiscellaneous Automobile industry is the main driving force in propelling the growthof microcontrollers. It is estimated that the microcontrollers constitute33% of the semiconductors used in a vehicle [10]. Requirements of theautomobile sector has forced the microcontroller manufacturers to comeout with the new bus protocols such as control area network (CAN)and local interconnect network (LIN). Microcontrollers of all bit coresare used in vehicles according to the Frost & Sullivan Industry report.The 8- and 16-bit microcontrollers are used for low-end applicationsand lower-cost vehicles while the 32-bit microcontrollers are used forhigh-end application and high-end vehicles. It is estimated that cur-rently 3040 microcontrollers are used in low-end vehicles and about70 microcontrollers are used in high-end vehicles. These requirementsare continuously increasing and it is highly likely that the count of micro-controllers in vehicles will further increase in the future, quotes WorldMicrocontrollers Market Report by Frost & Sullivan [10]. 18. 6 Microcontroller ApplicationsFigure 1.1 Microcontroller application tree 19. Microcontrollers: Yesterday, Today, and Tomorrow 7 Embedding microcontrollers in the product oers some uniqueadvantages. For an example, in the latest technology washing machines,a transmission is no longer required because a lower-cost AC inductionor reluctance motor controlled by sophisticated microcontroller-basedelectronics can provide all the normal machine cycles [11]. Additionally,the electronically controlled induction or reluctance motor provides amore eective and gentler agitation (wash) cycle that allows the drumcontaining the clothes to be rotated rst in one direction, then stopped,and rotated in the opposite direction without requiring any additionalmechanical device. This forward/reverse agitation cycle provides a moreeective means of cleaning your clothes without damaging the bersused to make them. It is also observed that the induction of microcontrollers in a producthas increased the market demand of the product itself. One such exam-ple is NEC Electronics 8-bit microcontroller [12], which is employed inover half of the digital cameras produced throughout the world, thusmaking it a hit product albeit one that plays its role behind the scenes.In 2003, the shipment volume of 8-bit microcontrollers for digital cam-era use achieved monthly shipments of two million. Currently, the mostcommonly used microcontroller for digital cameras is the PD78003.The industrys top-level, low-voltage (1.8 V) A/D converter is builtinto this compact 64-pin QFP package with an edge measuring a mere10 10 mm.1.5 Growth Economics Many industry analysts have reported a bright growth economicsfor microcontroller in the near future. Bourne Research reports thatMEMS-based motion, pressure, and acoustic sensors (as well as othernext-generation sensing technologies) are not only nding their way intoclassic consumer products like toys, housewares, sporting goods, andclothing, but applications as far-reaching as ooring materials, medicaldiagnostics, retail xtures, and vending machines. System complexity isjust as varied, but Bourne Research notes that, more often than not,these products will utilize multiple sensors and microcontrollers [13].Another interesting report by the Semiconductor Industry Association(SIA) reveals that the microcontroller sales are projected to grow by1.9% to $12.3 billion in 2006 and to $15.4 billion in 2009, a compound an-nual growth rate (CAGR) of 6.3% [14]. The positive growth economics ofmicrocontroller chips also ushers the associated growth of software suchas simulators, cross compilers, and assemblers. The market is witnessingmany novel supporting software packages with simple user interface withconvenient compiling and debugging tools. 20. 8Microcontroller Applications1.6The Major Players in the Microcontroller Chip MarketTable 1.1Major players in the microcontroller market. (From 2006 EDN Directory of Microprocessors and Microcontrollers)NameProduct rangeApplication domainof thecompanyActel Core8051 Consumer, communications, auto-8-bit-microcontroller IP motive, industrial, and military/ aerospace applicationsAlteraNios II/f (fast), Nios II/eAutomotive, consumer, industrial,(economy), Nios II/s medical(standard), Soft IP coresAltiumRoyalty-free, 8- and 32-bit, Automotive, industrial,FPGA-based soft processors,communications, andand FPGA-independent computer-peripheralTSK3000RISC coreAnalogADuC7128 family of precision Audio, automotive,devices analog microcontrollers; communication/wired, consumer,ADSP-BF561 Blackn industrial, imaging and video,ADSP-BF534 Blackn, BF539medical, motor control, securitywith CANApplied Embedded PowerPC proces- Communication/wired, computersMicro sors PPC405CR PPC405EP,and peripherals, consumer,CircuitsPPC405EZ, PPC405GP,industrial, imaging and video,CorpPPC405GPr, nP405H, etc.medical, mobile/wireless, motor control, securityARC Inter-Two congurable, 32-bitSound advanced subsystemsnationalprocessor-core familiestargeting portable media devicesARC600 and ARC700and advanced-denition audio applicationsARM Range of processor cores,Audio, automotive,including the ARM7, ARM9,communication/wired, computersARM10, and ARM11 familiesand peripherals, consumer,and the new Cortex familyindustrial, imaging and video,featuring Thumb-2 technology medical mobile/wireless, securityAtmel AVR, AVR32, ARM7, ARM9,Consumer, computer/networking,8051, Teak, and Diopsis DSPcommunications, security/smartcorescards, automotive, industrial, medical, military, and aerospace applications 21. Microcontrollers: Yesterday, Today, and Tomorrow9Cast 8-, 16-, and 32-bit IP coresAutomotive, communication/ including 8051 cores with wired, computers and instruction execution one clock peripherals, consumer per cycle; congurable 8051,industrial, imaging and video, 8-bit Z80 and 16-bit 68000medical military/aerospace, compatible devicesmobile/wireless motor controlCirrus Logic ARM9- and ARM7-basedAudio and industrial markets embedded processors EP9301, EP9302, EP9307, etc.Dallas Semi- Four microcontroller families Networking applications asconductortargeting networked, secure,they have an optional TCP/IP mixed-signal, and 8051 drop-instack in ROM, a built-in designs Ethernet MAC (media access controller), CAN (controller area network), and parallel and serial portsFreescaleUltralow-end, RS08-based, Mobile and videoconferencingSemicon- 8-bit microcontrollers to anphones, portable mediaductor advanced 32-bit ColdFire core players, PDAs, and portable GPS applications, networking, home and SOHO (small-oce/home-oce) networking, automobileFujitsu32, 16, and 8-bit Automotive, communications,Micro- microcontrollers with computer peripheral,electronicsonboard-ash, ROM, ADC, industrial, and consumerAmericaDAC, CAN (controller area applications network), USB, and LCD controllersInneon8-, 16-, and 32-bit bit Industrial and automotive,Technolo-XC886/888, XC164CMindustrial motor control,gies TC116building control for lifts and escalators, intelligent sensors, distributed I/O modules, and industrial automationLattice8-bit microcontrollers, Automotive,Semicon- including the 8051 and PIC, communication/wired,ductor through its partners, Cast andcomputers and peripherals, Digital Core Design,consumer industrial, medical LatticeMico8 an 8-bit soft microcontroller coreLuminary ARM Cortex-M3-based Industrial and motor controlMicromicrocontrollersMicrochip8- and 16-bit PIC Motor control and generalTechnology microcontrollers, as well aspurpose 16-bit dsPIC DSCs (digital signal controllers) 22. 10 Architectural TrendsTable 1.1 Continued.Name Product range Application domainof thecompanyNational COP8 ash microcontrollersHardware communicationsSemicon- featuring an 8-bit core with 32 peripherals, and anductor kbytes of onboard ashexpandable external bus to target embedded system communications applications, such as automotive telematics, vehicle-network gateways, hands-free car kits, and industrial and medical instrumentation and controlNEC8-bit uPD78F0711 andConsumer appliances, homeElectronicsuPD78F0712 ash-based health care, buildingAmericamicrocontrollers, 32-bitmanagement systems and ash-based V850ES/IE2 seriesindustrial controlled applications1.7 Architectural Trends The emerging trends in microcontroller architecture are dictated bythe technological needs of the embedded system applications. In gen-eral the common road map is characterized by the features like singlefunctional, tightly constrained in terms of cost, power, speed, and foot-print as well as continuously reactive in a real-time manner. The micro-controller world is divided over the architecture used. Controllers like8051, 68HC11 join their microprocessor counterparts (80 86 family) inusing Von-Neumann architecture by sharing RAM and program mem-ory with the same bus. This imposes the same bit width for the busesirrespective of their requirement, which is not the case with the PICprocessors which uses Harvard architecture.8-bit Treads on MCU TurfIt is really interesting to note that in this era of 32-bit processors,the 8-bit microcontrollers are ourishing and enjoying a stable future.The reasons behind this are low cost and inexpensive development soft-ware. An 8-bit microcontroller like 8051 today enjoys 40% of the marketshare [15]. It has become so popular that about 40 manufacturers nowmake it with 800 derivatives used for diverse applications right from 23. Microcontrollers: Yesterday, Today, and Tomorrow 11simple process control to high-tech telecom. The original MCS-51 familydeveloped by Intel consists of CHMOS processors with features suchas 8-bit CPU optimized for event control, Boolean processing, on-chipmemory (up to 32 K) and on-chip peripherals (timer/counters, serialports, PCA, etc.). The other manufacturers like Atmel, Dallas, Philips,Analog Devices, etc., have extensively worked for strengthening the basiccore by introducing additional features such as Additional Data Pointers(DPTR), Extended Stack Space, Fast Math Operations and Extendedor Reduced Instruction Sets to name a few. Table 1.1 summarizes thefeatures of the popular 8051 derivatives manufactured by various compa-nies. Although industry analysts predicted the saturation of 8051 familyand also its death, it turned out to be a rumor. In 2003, Cygnal releasedworlds highest performance 8051 microcontroller [16]. The C8051F120family devices include 128 Kbyte Flash memory, 8448 byte RAM, andare packaged in either a 100-pin or 64-pin TQFP. On-chip peripheralsinclude a 12-bit 100 ksps ADC, two 12-bit DACs, a 2% internal oscillator,temperature sensor, voltage reference, two UARTs, and many featuresof a DSP processor.Low Power Design The latest 8-bit devices continue to drive up the performance barwith simplicity for usage and ease of programming. Most of these de-vices are aimed at low power consumption achieved by using sleep modesand the ability to turn certain peripherals on and o. The best examplefor this is XE88LC02 from XEMICS [17], a recently launched microcon-troller, which features programmable gain/oset amplier followed byhigh resolution ADC with four dierential or seven pseudo dierentialinputs, with current consumption as low as 2 A in real-time clock modeand a typical 300 A/MIPS in sustained computing mode. Recently,Atmel has also strategically evolved their microcontroller architecture byimplementing novel power saving techniques. Atmels picoPower tech-nology uses a variety of techniques that eliminate unnecessary powerconsumption in power-down modes. These include an ultra-low-power32 kHz crystal oscillator, automatic disabling and re-enabling of brown-out detection (BOD) circuitry during sleep modes, a power reductionregister that completely powers down individual peripherals, and dig-ital input disable registers that reduces the leakage current on digi-tal inputs [18]. PicoPower microcontrollers consume down to 340 A inactive mode, 150 A in idle mode at 1 MHz, 650 nA in power-save modeand 100 nA in power-down mode. 24. 12Architectural TrendsConvergence of DSP with Micro The trend of convergence of functionality in microcontroller wasstarted in the 1970s with MP944, which had more of DSP orienta-tion. For a microcontroller engineer to consider a DSP or for a DSPengineer to use a microcontroller, three strict criteria must be met:price/performance, peripheral set, and development tool quality [19].This trend is now more pronounced as seen in the newly launchedmicrocontroller cores by Motorola. For instance, in its 56F83xx familyof microcontrollers, Motorola has introduced a series of devices that itintends to meet uprated processing needs in todays systems partic-ularly in automotive systems while keeping 8/16-bit economics andavoiding the shift to 32-bit controllers. The dening features of thedevice series are the inclusion of some DSP attributes and the use ofon-chip ash memory instead of EEPROM. The term hybrid describesthe devices combination of microcontroller and DSP functions. Thesedevices are not hybrid in the sense that they combine twin processingcores; rather, they add the facility to eciently execute certain DSP-like arithmetic functions such as multiply-accumulate operations [20].These kinds of architectures are in heavy demand owing to such hybridsignal processing requirements in application domains such as speechprocessing in consumer applications. The key challenges in convergingthese two diversied architectures are combining the pipelining, registeroriented, complex conditional resolving architecture of microcontrollerswith the multiply-accumulate, data massive, and deterministic softwaretypically with zero overhead loops of the DSPs. With the inclusion ofDSP functionality in microcontrollers many things such as modem sup-port, compression of data voice, and image as well as ltering and speechsynthesis/recognition are possible. This has been successfully done insome of the recently launched microcontrollers like Goal Semiconduc-tors VMX1016. This microcontroller possesses a powerful hardwarearithmetic unit with 32-bit barrel shifter that can perform simultaneous16-bit signed multiplication and 32-bit addition. Another example ofthis convergence is Hitachis SH3-DSP based on a single instructionstream approach combining general purpose CPU and dedicated DSPfunctionality in a single architecture [21]. These types of microcon-trollers facilitate upgradation of the embedded systems merely with theaddition of software utilities.Hidden DebuggerWith the increasing design complexity debugging or verication hasbecome the major bottleneck to meet the tight time to market schedule. 25. Microcontrollers: Yesterday, Today, and Tomorrow13It is estimated that debugging time is almost 3050% of the total deve-lopment time. The conventional techniques such as extra design fortestability by embedding test points or scan chains as well as exter-nal debugger are on the way of extinction. The new microcontrollersare struggling to sort out the resource requirement vs computationalcomplexity dilemma. The use of logic analyzer for monitoring the clockquality as well as the bus activity has become very expensive and manytimes physically impossible with the shrinking footprint of microcon-trollers operating at the clock speed as high as 100 Mhz. The IEEE-ISTONexus 5001 Forum which comprises around 25 major microcontrollermanufacturers denes a common set of on-chip debug features, proto-cols, pins, and interfaces to external tools which may be used by real-timeembedded application developers. As a result, more than 70% of leadingembedded microcontroller vendors now have dedicated circuits and pins,whichassist in new product development based on the IEEE 1149.1 JointTest Action Group (JTAG) 4-wire serial interface [22]. Apart from theJTAG interface, todays microcontrollers are enriched with the back-ground debug mode (BDM) and on-chip emulation being achieved athigher abstraction level for reducing size and searching space in thedebugging. Although the microcontroller community is still far fromimplementing the debugging solution for pointer problems, accessingunintialized memory, and interprocess interaction, the chips are domi-nated with single stepping and breakpoint utilities, e.g., the recentlylaunched C8051F120 [23] has on-chip debug circuitry facilitating full-speed in-system debug features such as single-stepping, breakpoints, andmodifying registers and memory.Web-Enabled Microcontrollers Embedded internetworking allows anytime, anywhere, control of theproduct with a regular self-maintenance and pervasive, wearable com-puting. The tangible benets of Internet connectivity in products likeair conditioner or washing machine are self-upgradation by downloadingthe software updates, lowering cost by ne-tuning energy consumptionin peak hours, generating auto maintenance alarms, etc. Microcontrollermanufacturers have come out with new processors having a built-incapability to cope with the challenges of web processing. Dallas Semi-conductor has come out with the microcontrollers that can directly serveup web pages. TINI (Tiny InterNet Interface) [24] is a microcontroller-based development platform that executes code for embedded webservers. Remote devices can have preferences and settings adjusted fromafar, just by having their administrator browse a web page hosted by 26. 14Jump Starting Your First Embedded System Projectthe microcontroller no other computers required. The TINI developmentplatform combines a powerful chipset and a Java runtime environmentthat exposes the extensive I/O capability of the Dallas microcontrollers.A Java programmer accesses the I/O from robust APIs (ApplicationProgram Interfaces) that include Ethernet, RS-232 serial, I2C, 1-Wirenet, CAN, and memory-mapped parallel bus. By using these APIs,programmers code functions without worrying about the underlyinginterface to hardware peripherals. The runtime environment is tightlycoded for optimized network communications and ecient device I/Othroughput.Dominance of Soft IP cores/Free Microcontroller? The new VLSI devices such as FPGAs oer several advantagesover microcontrollers. FPGA-based platform enables the developer totest (thanks to the JTAG philosophy) and add features in parallelwithout the need for repeating the complete testing of the platformonce again. Increasing number of manufacturers are now oering theFPGA-based microcontroller core. The list of FPGA-based soft IP coresfor 8051-based microcontrollers is available at the web page of Keil(http://www.keil.com/dd/ipcores.asp). For example, the C-8051 core isthe HDL model of the Intel 8-bit 8051 microcontroller by Aldec Inc. [25].The model is fully compatible with the Intel 8051 standard and is avail-able in both EDIF and VHDL netlists formats. The EDIF netlist is usedfor the place and route process and VHDL is the post-synthesis netlistused for the simulation only. Both netlists are technology-dependentbecause they are created after the synthesis where the customer needsto specify a vendor, target family, etc. Even the source code of a set ofHDL testbenches for the cores is also available.1.8 Jump Starting Your First EmbeddedSystem Project Figure 1.2 shows a minimum setup required to build microcontroller-based embedded system project. The foremost requirement is a low-end PC pre-loaded with the IDE to facilitate the code development,simulation and testing before actual dumping the code in the ash of themicrocontroller. The Keil IDE is covered in depth in Chapter 2. Most ofthe projects developed in this book have been tested on AT89S52 whichhas the following features:8K Bytes of In-System Reprogrammable Flash MemoryFully Static Operation: 0 Hz to 33 MHz 27. Microcontrollers: Yesterday, Today, and Tomorrow15Figure 1.2 Minimum setup recommended for your Embedded System Laboratory Three-level Program Memory Lock 256 8-bit Internal RAM 32 Programmable I/O Lines Three 16-bit Timer/Counters Eight Interrupt Sources Programmable Serial Channel Low-power Idle and Power-down Modes 4.0V to 5.5V Operating Range Full Duplex UART Serial Channel Interrupt Recovery from Power-down Mode Watchdog Timer 28. 16Execution of Embedded System Project: Is it a Gordians Knot?Dual Data PointerPower-o FlagFast Programming TimeFlexible ISP Programming (Byte and Page Mode)1.9 Execution of Embedded System Project:Is it a Gordians Knot?Here is a piece of thought for the student community as well asentrepreneurs looking for a successful embedded system project.Project Idea to Execution For successful project development, rst you must develop an idea.There are lots of sources for idea generation. Ideally your ideas shouldmove from research laboratories towards the marketplace. Many devicesand processes around can be improved by the inculcation of microcon-trollers. The automation of the nylon rubber stamp making machinedescribed in the case studies is the best example. The thinking shouldideally go on the following lines: How can the process be controlledusing a microcontroller, ultimate eciency, or throughput improvementwith embedding of microcontrollers? Are there any simulation tools tomodel and estimate before the actual experimentation? In what waycan the process be made more intelligent (or thinking) by using the mi-crocontrollers? For answering the automation of a process plant usingmicrocontroller, one must think about the on-chip resources and theireective usage (e.g., interrupt level/edge, usage of ports, timer/counter,and so on). The answer to the second question should throw light onthe benets of using the microcontroller in your project. (Can you thinkof green house controller without microcontroller? Or the amount ofenergy saved with the microcontroller-based corridor lighting which isimplemented in the case studies.) According to the US Department ofEnergy [26], the electricity used to light businesses represents 25% of theenergy they spend; so it is important to develop energy-saving devices.Even a simple switch equipped with photosensor and microcontroller canhelp to reduce lighting energy consumption by 30%. Simulation is the best methodology to avoid project failure as wellas to work in a time-ecient manner. It is always a good idea to simu-late the things using the microcontroller IDE instead of rushing to theproject board and actually dumping the code in the on-chip memory. 29. Microcontrollers: Yesterday, Today, and Tomorrow 17Moreover, there are simulation tools even to model physical systems(such as Proteus) which can be used together with the IDE to work outyour project. The last question is little challenging. In order to makethe microcontroller think or make it intelligent you have to resort tosome novel items such as neural net implementation, extrapolation, andstatistical techniques. As the sole success of the embedded system project is on rmware, thesoftware and the underlying hardware should not be treated as separateentities. Therefore, the term HardwareSoftware Co Design has gainedlots of signicance in the eld of embedded systems. Following issuespertaining to hardware and software are of utmost importance whileexecuting any embedded system project.Hardware and Software Issues Even the simplest things dictate the nal specications of the nalproduct. There is often a major gap between the theory of design andwhat plays in the real world. The most casual thing for a designer inany microcontroller-based product is the value of the crystal frequencywhich is 11.0592 MHz. The rationale behind this value is the ease offrequency division to yield exact clock rates for standard baud rate gen-eration for the UART. However, in the applications where the serialcommunication is not at all in picture, the designer has lot of exibil-ity in choosing the crystal value. The crystal value decides the executionspeed, e.g., Intel 8051 microcontrollers require a minimum of 12 oscillatorcycles. This means if the crystal is of 12 MHz, then 8051 microcontrollerworks at performance of 1 MIPS. If a thorough analysis of the occurrenceof real-time events reveals that this speed is not required, then a designermay go for a lower value of the crystal. The ultimate advantage is asignicant reduction in power consumption. In CMOS-based versions of8051, a linear relation between oscillator frequency and power consump-tion exists. Another lower range crystal value is 7.3728 MHz which canbe used even for standard baud rate generation. The notable thing is:using counter1 of 8051; this gives an even 38.4 Kbps rate exactly, whichis not possible even with 11.0952 MHz Xtal. The lower crystal value alsoenables to access low-speed peripherals and frees the system from elec-tromagnetic interference (EMI) evident in high clock speed MCUs. Problems such as reset, latch-up, memory corruption, and code run-away are found to fail the embedded system application due to ESDand EMI. Areas of MCUs typically vulnerable to ESD and EFT stressesinclude: power and ground pins, edge sensitive digital inputs, high fre-quency digital inputs, analog inputs, clock (oscillator) pins, substrate 30. 18 Execution of Embedded System Project: Is it a Gordians Knot?injection, general purpose I/O (GPIO) with multiplexed pin functions,etc. These kind of problems can be solved by using the microcontrollerhaving proper package style, footprint, and maximum number of supplyand ground pins [27]. While developing the software it is important to have a modular app-roach. The interrupt service routines should be as short as possible toreduce the interrupt latency. Readability and debugging specicationsnot only enhances the value of the software but also frees the noviceto minimize the learning curve. Choice of the language plays an impor-tant role to decide the lead time, life and processor migration of yourmicrocontroller-based product. Using the higher level languages like Cfor writing programs oers some unique advantages such as faster devel-opment, improved portability, reusability, platform independence allat reduced cost. Complex algorithms can be very easily implemented inC rather than assembly. As the design evolves in due course, the req-uired restructuring of the program without breaking the existing designcan be easily done in C. Although assembly language is the best choicefor time critical programs, the user face lot of diculties in managinglarge programs especially in memory allocation. Porting the assemblylanguage code to another processor family is almost impossible or verydicult. 31. Chapter 2Integrated Development Environment Integrated development environment popularly known as IDE is asuite of software tools that facilitates microcontroller programming. TheKeil IDE enables the embedded professional to develop the program inC and assembly as well. The IDE passes through the source code tocheck the syntax. The compilation leads to a hex le to be dumped inthe microcontroller on-chip ROM. A quick session of simulation anddebugging using the IDE ensures the working of the program before-hand. The user can verify the results as the package presents screenshotsof on-chip resources. This chapter presents in-depth discussion on usingthe Vision 2 package of Keil IDE on MS Windows platform. It isrecommended that while going through the discussion the user shouldaccess the Vision 2 package of the Keil. A step-by-step working asdiscussed in this chapter will empower the user to get familiar withthe Keil IDE.2.1Getting Familiar with the IDE The microcontroller product development cycle consists of severalsteps such as Development of code either in assembly or C Simulation of the code Dumping the code in microcontroller Prototyping or debugging if required by using in-circuit testing Emulation of the code in case of big project Rening the code, reprogramming and nal testingA microcontroller-based project generally makes several iterationsthrough the above-mentioned steps before it sees the light of the day.19J.S. Parab et al. (eds.), Exploring C for Microcontrollers, 1928. c 2007 Springer. 32. 20Working with Keil IDE Almost all the microcontroller manufacturers have come out withthe development tools for their products. A suite of such softwaretools for microcontroller application development is refereed to as IDE.Some examples of the popular IDEs apart from Keil are MPLAB fromMicrochip, PE micro from Motorola, and AVR studio from Atmel. Any typical IDE comprises many subcomponents such as a text editorfor entering the code, building tools for converting the code into machinelevel, compiler to convert C code to assembly or hex format, and linkerto provide absolute addresses to the relocatable object code. The IDE isgenerally equipped with powerful code simulator that models operationof the target microcontroller as code execution is in process. IDEs areavailable as a software suite which runs on a stand-alone PC and displaysand allows to modify the contents of virtual I/O and on-chip resourcessuch as registers. Single-stepping and breakpoint facilities are providedto systematically execute and watch the cause/eect relationship of thecode. A provision of instruction cycle calculation/display is also providedso as to see the time/memory eciency of the code.2.2 Working with Keil IDE As the entire software development described in this book is basedon the Keil 8051 Development Tools, it is worthwhile to study the toolin depth. The Keil IDE is a user-friendly software suite to develop yourC code and test the same in a virtual 8051 environment. The mainfeature of the Keil is that it allows C programmers to adapt to the 8051environment quickly with little learning curve. It oers the designer a device database of MCS-51 family from whichthe target device of interest can be chosen. The Vision IDE sets thecompiler, assembler, linker, and memory options for the designer. Thesuite comes with numerous example programs to assist the designer tostart his project. With the virtual environment, the available on-chipresources of the microcontroller chosen can be seen working on the PCscreen. The simulation window facilitates very realistic simulation ofboth CPU and embedded peripherals. The graphical window shows thestate and conguration of the embedded peripherals and displays theinteraction of the microcontrollers with external peripherals. Althoughthe simulation exercise consumes time, it helps to save the bugs andproject failure in the long run. A natural question that occurs to designer is in what way theconventional C programming for PC is dierent from the C programmingwith Keil or C51 programming. The basic objective of the conventional 33. Integrated Development Environment21C programming language was to make it work on the PC architecturewith a high level interface. Therefore, it does not support directaccess to registers. However, unlike the conventional C program-ming on PC, most of the microcontroller-based embedded systemsapplications demand reading and setting or resetting of single bits,or Boolean processing. The second main dierence is the program-ming environment. Conventional C operated under the umbrella of anoperating system may be Linux or Windows, wherein there is a pro-vision of system calls the program may use to access the hardware.Almost all the programs written with microcontroller are for directuse where the while(1) loop is common. The above-mentioned dier-ences are bridged in Keil compiler by adding several extensions tothe C language, e.g., connecting of interrupt handlers. A good web-resources are available on this topic at www.massey.ac.nz/chmessom/Chapter%206%20C%20ProgrammingFinal.pdf2.3 Development Flow for the Keil IDEThe evaluation version of the Keil IDE for MCS-51 family (alsoknown as C51 evaluation software) can be downloaded from the websitewww.keil.com. One can go up to a limit of 2 Kbytes of object codewith the evaluation version. Once the Keil IDE is installed, a short cutappears on the desktop.Step 1: Interfaces Oered by Keil IDE After clicking on the above shown shortcut the following stepsshould be carried out. The rst blank window will appear as shownin Figure 2.1. You will be working with three windows presented by the Keil IDE.The rst is target toward the extreme left of the screen which is blankat the moment, but will be updated as you go on working with theproject. The source le, register header le, and the target microcon-troller chosen is displayed here. The bookmarks for the user such asdata sheet, user guides, library functions, etc., forms a ready reckonerfor the developer. The program window which occupies most of the sizeof your screen displays the source code in C. At the lowermost end of thescreen, an output window is presented which gives information regardingthe errors and other output messages during the program compilation. Open a new text le for writing your source code. This le has to besaved with .c extension. This source code le will be ultimately added 34. 22 Development Flow for the Keil IDEFigure 2.1 The starting interface of Keil IDEinto your project to be opened as per step 2. The addition should bedone as per the instructions given in step 5.Step 2: Opening a New ProjectHere you can give a meaningful name for your project. After saving itwill create a folder which will store your device information and sourcecode, register contents, etc. Figure 2.2 shows a project opened with aname trial.Step 3: Selecting a Device for the Target After completing step 2, Keil will give an alert to select the device.The Vision 2 supports 45 manufacturers and their derivatives. In theexercise given in this book we have selected Atmels 89S52 microcon-troller as a target.Step 4: Copying Startup Code to Your Project The startup.a51 will be added automatically to your project fromthe Keil library c:keilc51lib to [c:keilc51EXAMPLESHELLOctrialSTARTUP.A51]. 35. Integrated Development Environment23 Figure 2.2 Opening a new project Figure 2.3 Selecting a device for the target 36. 24 Development Flow for the Keil IDE Figure 2.4 Copying startup code to your projectStep 5: Adding Your Program Source Code To accomplish this, follow the steps:Right click source group 1 followed byChoose Add Files to Group Source Group 1 Set Files of type to All les ( . )Select Startup.a51 Observe the les getting updated in the target window. You will haveto double-click on the C source le name displayed in the target windowto view it.Step 6: Conguring and Building the Target Right click on target 1 in the target window, select the option fortarget 1, a window to choose the options for the target will be displayed.Here you can choose the microcontroller frequency, listing of les, outputin hex, debug information, etc. The important point here is choosing the appropriate memory model. 37. Integrated Development Environment25Figure 2.5 Adding your program source code As per the on-line Keil IDE manual [28] C51 currently supports thefollowing memory congurations: ROM: currently the largest single object le that can be produced is 64 K, although up to 1 MB can be supported with the BANKED model described below. All compiler output to be directed to EPROM/ROM, constants, look-up tables, etc., should be declared as code. RAM: There are three memory models, SMALL, COMPACT, and LARGE SMALL: all variables and parameter-passing segments will be placed in the 8051s internal memory. COMPACT: variables are stored in paged memory addressed by ports 0 and 2. Indirect addressing opcodes are used. On-chip registers are still used for locals and parameters. LARGE: variables etc. are placed in external memory addressed by @DPTR. On-chip registers are still used for locals and parameters. 38. 26Development Flow for the Keil IDE Figure 2.6 Conguring and building the target Table 2.1Choosing the best memory model for your C51 programModel RAM supportedBest for Worst forSmall Total RAM 128 bytesCode size up to 4 KGlobal variable (be(8051/31) kept minimum)Compact 256 bytes o-chip, 128 High stack usage, pro- Rarely used inor 256 bytes on-chip grams with large num-isolation, usually ber of medium speedcombined with the 8-bit variablesSMALL switchreserved forinterrupt routines.Large 64 KB, 128, or 256 Easiest model to use Never used inbytes on-chip isolation, combinedwith small andcompactBANKED: Code can occupy up to 1 MB by using either CPU portpins or memory-mapped latches to page memory above 0 FFFF.Within each 64 KB memory block a COMMON area must be setaside for C library code. Inter-bank function calls are possible. 39. Integrated Development Environment27Figure 2.7 Compiling your program by pressing F7Step 7: Compile Your Program by Pressing F7 Either press F7 or click on build target in the target window to compileyour program. The output window will show the errors or warnings ifany. You can also see the size of data, code, and external data, which isof immense importance since your on-chip memory is limited.Step 8: Working in Simulated Mode Once the program is successfully compiled, you can verify its func-tionality in the simulated mode by activating the debug window. Forthis press CTRL + F5 or go to the menu option Debug and selectStart and Stop Debug Section. Press F11 for single stepping or F5for execution in one go. Go to the menu item Peripheral and selectthe appropriate peripherals to view the changes as the program startsexecuting. Terminating the debug session is equally important. Click on stoprunning or ESC key to halt the program execution. You can makethe changes to the program after coming out from the debug session 40. 28Development Flow for the Keil IDEFigure 2.8 Simulation mode of Keilby pressing start/stop debug session. Few iterations through theabove-mentioned process will make your program completely bug-freeand save your time and other resources on the actual hardware.Step 9: Actual Dumping of the Codein Microcontrollers On-chip Memory There are dierent mechanisms for this. Some programmers use ready-made programmers to program the microcontroller. If you are interestedin purchasing one for your project, the list is enclosed. Design of vari-ous programmers has also been given at Wichit Sirichotes webpage athttp://www.kmitl.ac.th/kswichit%20/. 41. Chapter 3Art of C Programming for Microcontrollers There are large number of textbooks and data sheets which givean overview of 8051 architecture, pinout, and other peripheral details.However, with the Keil IDE, you can take the benet of the headerles and need not remember the details like the port address, timercounter addresses, etc. The CA51 Compiler Kit for the 8051 microcon-troller family supports all 8051 derivatives including classic devices andIP cores from companies like Analog Devices, Atmel, Cypress Semicon-ductor, Dallas Semiconductor, Goal, Hynix, Inneon, Intel, OKI, Philips,Ailicon Labs, SMSC, STMicroelectronics, Synopsis, TDK, Temic, TexasInstruments, and Winbond.3.1Familiarizing with Your Compiler Capabilities The C for microcontrollers and the standard C syntax and seman-tics are slightly dierent. The former is aimed at the general purposeprogramming paradigm whereas the latter is for a specic target micro-controller such as 8051. The underlying fact is that everything will beultimately mapped into the microcontroller machine code. If a certainfeature such as indirect access to I/O registers is inhibited in the targetmicrocontroller, the compiler will also restrict the same at higher level.Similarly some C operators which are meant for general purpose com-puting are also not available with the C for microcontrollers. Even theoperators and constructs which may lead to memory ineciency are notavailable in C programming meant for microcontrollers. Be aware thatthe target code should t in the limited on-chip memory of the proces-sor. Even the I/O functions available in standard C such as printf() orscanf() are either not made available in C compilers for microcontrollersor advised not to use them. These functions eat up lot of memory spaceand are not time-ecient owing to the dragging of supporting func-tions like oating point routines and lot of delimiters. Another strikingdierence in case of embedded systems programs is that they do not29J.S. Parab et al. (eds.), Exploring C for Microcontrollers, 2936. c 2007 Springer. 42. 30 Whether to Use Headers or Not?have the umbrella or support of the operating system. The programmerhas to be accustomed with the absence of system calls which makes lifeeasy in traditional C. The C for microcontrollers is more closer to the assembly languagethan the conventional or traditional C. Few examples to support theabove statement are presence of arithmetic/logic/bitwise operations toresemble machine operations, Use of pointers which corresponds to mem-ory access at machine level etc. The detailed information regarding thefeatures of C supported may be found in the document C51 CompilerUsers Guide for Keil Software [28].3.2Whether to Use Headers or Not? As a professionally embedded systems developer one can write a stand-alone C code, requiring no header les, and it will compile correctly withthe Keil C51 compiler. However, this requires a through study of the tar-get microcontroller architecture. With the large number of derivativesof the 8051, it is dicult to remember the on-chip resources, e.g., theMCS-51 versions from Atmel such as AT89C2051 or AT89C51 have twotimers while the other members such as At89C52 or AT89S53 have threetimers. Therefore, although there is little memory space overhead, it isadvisable to use the header les which denes all the on-chip resourcesfor the target microcontroller, e.g., whenever you choose the target de-vice such as AT89C52, Keil IDE gives the information regarding all itson-chip resources in the window at the right side as shown in Figure 3.1. You can observe another advantage of working with the header le.Dene the header le or in the program win-dow and select the target device as 80C51. Now open the header le,which will reect all the on-chip resources of 80C51 as shown below:/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -REG51.HHeader le for generic 80C51 and 80C31 microcontroller.Copyright c 19882002 Keil Elektronik GmbH and Keil Software, Inc.All rights reserved.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /#ifndef REG51 H sbit EX1 = 0xAA;#dene REG51 Hsbit ET0 = 0xA9; / BIT Register /sbit EX0 = 0xA8;/BYTE Register// PSW /sfr P0 = 0x80; sbit CY = 0xD7;/ IP /sfr P1 = 0x90; sbit AC = 0xD6;sbit PS = 0xBC; 43. Art of C Programming for Microcontrollers 31sfr P2 = 0xA0; sbit F0 = 0xD5; sbit PT1 = 0xBB;sfr P3 = 0xB0; sbit RS1 = 0xD4;sbit PX1 = 0xBA;sfr PSW = 0xD0;sbit RS0 = 0xD3;sbit PT0 = 0xB9;sfr ACC = 0xE0;sbit OV = 0xD2; sbit PX0 = 0xB8;sfr B = 0xF0;sbit P = 0xD0;sfr SP = 0x81; / P3 /sfr DPL = 0x82;/ TCON/ sbit RD = 0xB7;sfr DPH = 0x83;sbit TF1 = 0x8F;sbit WR = 0xB6;sfr PCON = 0x87; sbit TR1 = 0x8E;sbit T1 = 0xB5;sfr TCON = 0x88; sbit TF0 = 0x8D;sbit T0 = 0xB4;sfr TMOD = 0x89; sbit TR0 = 0x8C;sbit INT1 = 0xB3;sfr TL0 = 0x8A;sbit IE1 = 0x8B;sbit INT0 = 0xB2;sfr TL1 = 0x8B;sbit IT1 = 0x8A;sbit TXD = 0xB1;sfr TH0 = 0x8C;sbit IE0 = 0x89;sbit RXD = 0xB0;sfr TH1 = 0x8D;sbit IT0 = 0x88;sfr IE = 0xA8; / SCON /sfr IP = 0xB8; / IE /sbit SM0 = 0x9F;sfr SCON = 0x98; sbit EA = 0xAF; sbit SM1 = 0x9E;sfr SBUF = 0x99; sbit ES = 0xAC; sbit SM2 = 0x9D; sbit ET1 = 0xAB;sbit REN = 0x9C;sbit TB8 = 0x9B; sbit TI = 0x99;sbit RB8 = 0x9A; sbit RI = 0x98; #endif Figure 3.1 On-chip resources in the window 44. 32 Whether to Use Headers or Not? Now select another target device 80C52. This device has three timers.Now the header le will automatically update the database of on-chipresources pertaining to this device as shown below./ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -REG52.HHeader le for generic 80C52 and 80C32 microcontroller.Copyright c 19882002 Keil Elektronik GmbH and Keil Software, Inc.All rights reserved.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /#ifndef REG52 H sfr IP = 0xB8;#dene REG52 Hsfr SCON = 0x98;sfr SBUF = 0x99;/ BYTE Registers /sfr P0 = 0x80;/ 8052 Extensions / / TCON /sfr P1 = 0x90;sfr T2CON = 0xC8;sbit TF1 = TCON 7;sfr P2 = 0xA0;sfr RCAP2L = 0xCA; sbit TR1 = TCON 6;sfr P3 = 0xB0;sfr RCAP2H = 0xCB; sbit TF0 = TCON 5;sfr PSW = 0xD0; sfr TL2 = 0xCC;sbit TR0 = TCON 4;sfr ACC = 0xE0; sfr TH2 = 0xCD;sbit IE1 = TCON 3;sfr B = 0xF0;sbit IT1 = TCON 2;sfr SP = 0x81; sbit IE0 = TCON 1;sfr DPL = 0x82; / BIT Registers / sbit IT0 = TCON 0;sfr DPH = 0x83; / PSW /sfr PCON = 0x87;sbit CY = PSW 7;/ IE /sfr TCON = 0x88;sbit AC = PSW 6;sbit EA = IE 7;sfr TMOD = 0x89;sbit F0 = PSW 5;sbit ET2 = IE 5;sfr TL0 = 0x8A; sbit RS1 = PSW 4; //8052 onlysfr TL1 = 0x8B; sbit RS0 = PSW 3; sbit ES = IE 4;sfr TH0 = 0x8C; sbit OV = PSW 2;sbit ET1 = IE 3;sfr TH1 = 0x8D; sbit P = PSW 0; sbit EX1 = IE 2;sfr IE = 0xA8;//8052 onlysbit ET0 = IE 1;sbit EX0 = IE 0; sbit RCLK =T2CON 5;/ IP / sbit TCLK =sbit PT2 = IP 5; T2CON 4; 45. Art of C Programming for Microcontrollers 33sbit PS = IP 4; sbit EXEN2 =sbit PT1 = IP 3;T2CON 3;sbit PX1 = IP 2;sbit TR2 =sbit PT0 = IP 1;T2CON 2;sbit PX0 = IP 0;sbit C T2 = T2CON 1;/ P3 /sbit CP RL2 =sbit RD = P3 7; T2CON 0;sbit WR = P3 6;sbit T1 = P3 5; #endifsbit T0 = P3 4;sbit INT1 = P3 3;sbit INT0 = P3 2;sbit TXD = P3 1;sbit RXD = P3 0;/ SCON /sbit SM0 = SCON 7;sbit SM1 = SCON 6;sbit SM2 = SCON 5;sbit REN = SCON 4;sbit TB8 = SCON 3;sbit RB8 = SCON 2;sbit TI = SCON 1;sbit RI = SCON 0;/ P1 /sbit T2EX = P1 1;//8052 onlysbit T2 = P1 0;//8052 only/ T2CON /sbit TF2 = T2CON 7;sbit EXF2 =T2CON 6;Note the bold letters which are exclusively added for the 80C52 only. 46. 34Dierences from ANSI C In nutshell the rst program sentence will be always a statement#include for MCS-51 family. The standard initializationand startup procedures for the 8051 are contained in startup.a51. Thisle is included in your project and will be assembled together withthe compiled output of your C program. For custom applications, thisstartup le might need modication, because the stack or stack space,etc., are predened as per the memory model.3.3 Basic C Program Structure Listing below shows a basic structure for a C program.//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//Basic blank C program that does nothing// Includes//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -#include // SFR declarationsvoid main (void){while(1); {body of the loop // Innite loop } }// match the bracesNote: Similar to conventional C, all the variables must be declared atthe start of a code block, you cannot declare variables in the midst ofthe program statements.3.4 Dierences from ANSI C There are marginal dierences of Cx51 compiler from the ANSIC compiler. These dierences are twofold, viz. compiler related andlibrary related. The details are given in the help menu of the KeilIDE. Frequently used things are given below for ready reference of theprogrammers.Variable TypesThe Keil C compiler supports most ANSI C variable types and inaddition has several of its own. 47. Art of C Programming for Microcontrollers35Standard TypesOnly oating point variable types of ANSI C are not supported byKeil C compiler as the basic 8051 core is not ecient for the same. Thetypes supported are as follows:Type Bits BytesRangeChar81 128 to +127Unsigned char8 1 0 to 255Enum 162 32, 768 to +32, 767Short162 32, 768 to +32, 767Unsigned short 162 0 to 65, 535Int162 32, 768 to +32, 767Unsigned int 162 0 to 65, 535Long 324 2, 147, 483, 648 to 2, 147, 483, 647Unsigned long324 0 to 4, 294, 697, 295Keil Types The bit and Boolean capabilities of MCS-51 family are well exploredby the Keil C Compiler by adding several new types. Some of them areas follows:TypeBits BytesRangeBit 100 to 1Sbit100 to 1Sfr 810 to 255Sf1616 20 to 65, 535 Of these, only the bit type works as a standard variable. The otherthree have special behavior that a programmer must be aware of. Thebit type gets allocated to the 8051s bit-addressable on-chip RAM. Notethat you cannot declare a bit pointer or an array of bits. The specialfunction registers are declared as a sfr data type in Keil C. If you givethe address of the SFR as 0x80h then it gets allocated to port 0 of8051. Extensions of the 8051 often have the low byte of a 16 bit registerpreceding the high byte. Therefore the timer 0 for instance should bedeclared as a 16-bit special function register, sfr16, giving the address ofthe low byte:sfr16 TMR0RL = 0x8A;// Timer0 reload valuesfr16 TMR0 = 0x8B; // Timer0 lower 48. 36Dierences from ANSI CKeil Variable Extensions In consistent with the 8051 architecture Keil oers various types ofvariable extensions. Following table summarizes the same. Assemblylanguage mnemonics are used to indicate the subsequent meaning ofthe variable extension used. Extension Memory TypeRelated ASM DataDirectly-addressable data mem- MOV A, 056h ory (data memory addresses 0x00-0x7F) Idata Indirectly-addressable dataMOV R0, #09Ah memory (data memory addresses MOV A, R0 0x00-0xFF) xdata External data memory MOVX @DPTR CodeProgram memory MOVC @A+DPTRIn case the memory type extension is not specied, the compiler willdecide which memory type to use automatically, based on the memorymodel (SMALL, COMPACT, or LARGE, as specied in the projectproperties in Keil). 49. Chapter 4Exploring the Capabilities of On-ChipResources Programming for I/O Ports,Interrupts and Timer/Counter4.1Importance of Ports Ports are the means through which the microcontroller communi-cates with the outside world. They are the most common I/O devices.An interesting point to note is that the number of I/O pins or portsare decided by the packaging style of the microcontroller. A compari-son of various packages is given below: A new trend in 8-bit controllerdesign is to place the chip inside a 20-, 16-, or even 8-pin PDIP or SOPpackage, allowing for very small and cheap embedded systems to beconstructed [29]. Fortunately most of the derivatives of the 8051 are generally oeredin 40-pin DIP or 52-pin PLCC packages and there is not much varia-tion in terms of package pinouts. The obvious advantage of the upwardcompatibility maintained into the dierent versions of the 8051, isthe direct replacement of the latest advanced 8051 from Intel to itscheap predecessor without even changing the printed circuit board.This drop-in replaceability is rarely true of other microcontrollerarchitectures [30].Playing with the PortsProgram 4.1: Simulated Port Testing Using Keil The program illustrates simple port programming in a simulated modeusing the Keil compiler. A sample data is sent to the port and the outputis observed in the simulator window. You may as well connect LEDs toobserve the output.37J.S. Parab et al. (eds.), Exploring C for Microcontrollers, 3767. c 2007 Springer. 50. 38 Importance of PortsTable 4.1 Comparison of the packagesPackage Number of FeaturesApplicationspinsPDIP (plastic 864Through hole type Prototype ordual in-linedevices, dense stylehobbyist typepackage)package, pins/areaapplications,ratio of PDIP not verysmaller 8-bitecient microcontrollersPLCC (plastic 20 up toThrough hole type Small,leaded80+ devices low-pincountchip-carrier) microcontrollersSOIC (small 864 pins Pins are spaced muchoutline closer together,integratedpackage designed to becircuit) or soldered directly to theSOP (smalltop of a boardoutlinepackage)QFP (quad at 8220+Sophisticated soldering 16- to 32-bitpackage)pinsworkstation required to microcontrollersdeal with the pinsto 64-bitclosely spacedsuperscalarmicroprocessorsProgram Source Code***************************************************#include/ special function register declarations for the intended 8051 derivative. The header le contains the denitions of special function registers (SFRs) and other functions. /void main(void)// Start of the Main function.{P1=0x44; / Send 44H to port P1 /P2=0x55; / Send 55H to port P2 /}// End of the main function.***************************************************The screenshot of simulation window shown in Figure 4.1 the datadelivery to port 1 and 2. 51. Exploring the Capabilities of On-Chip Resources Programming 39 Figure 4.1 Screenshot of simulation window showing the portsProgram 4.2: Sending Out Dierent Contents to Port 1Dierent data bytes are sent to port 1 after delay. The results can bechecked in the simulation window, which shows the changing of data onthe port 1 lines.Program Source Code***********************************************#include void delay(void);void delay(void)/ invoking delay function /{int i;for (i=0;i 1)/ 10000 count delay /{P1 = 0x0f; / set leds on PORT1 to 00001111 /x- -;/ decrement x /} // end of rst loop while(x < 10000)/ 10000 count delay /{P1 = 0xf0; / set leds on PORT1 to 11110000 /x++; / increment x /} // end of second loop. } // End of open loop.} // End of main.*************************************************************Program 4.7: Alternate Method of Software DelayGeneration with Port Programming This program illustrates the use of FOR construct for delay gener-ation which toggles only one port pin (P1.1). Note the use of ! operator for complementing the variable.Program Source Code*************************************************************#includesbit vin = P1 0 ; //Pin declaration vin = port 1 pin 0void main(void){ int i; vin = 1;//Make port pin P1.0 high while(1) { for(i=0;i