Embedded Programming with 8051 [EP51]

At a Glance

Can be completed in 2 Week
Total Lectures 17
Course Validity 7 Week

Subscribe to this course

Basic      (INR) Standard (INR) Professional (INR)
Choose your package


Sample lectures on YouTube

Course Details

EP51 introduces you to the exciting world of embedded systems. These systems can be as simple as control panel of a washing machine or as complex as a smart phone. These systems are highly constrained in nature as power, computing resources and memory are not so high at programmer's disposal. Further, in these systems, software is very tightly coupled with hardware. Hence to design such a system and write good applications for them, sound knowledge of the underlying hardware and architecture is essential. We also suggest you to go through our blog on Careers in Embedded Systems Design and Programming to gain more insight into career options and skills needed.

We take the first step to learn more about embedded computing by working with the 8bit micro-controllers which can be found in more than 40% of world's embedded systems. After discussing the micro-controller basics, this course will introduce you to the world of embedded programming with 8051 micro-controllers. There will be lab exercises after every major concept and towards the end of the course, we will take up a couple of projects.


  1. Strong focus on hands-on experience
  2. Insight into programmer's view of micro-controller architecture
  3. Focus on assembly level programming to help you make good design choices in embedded systems
  4. Discuss with the instructor on the forums as much as you want

Instructor and Forum Moderator

This course is taught by Basant Dwivedi. He will also be moderating the course forums.


Background in basic digital design is needed to understand various architecture concepts. Further, all the lab exercises in this course are in the UNIX environment. Hence, familiarity with UNIX from user point of view is needed. If you are not familiar with UNIX, we recommend you to go through User Level Linux course first.

Who should take the course


EP51 course is a beginners course. This can be taken as the first course to learn computer architecture and low level programming concepts. Further, it is a programming course, hence micro-controller architecture has been discussed from programmer's point of view. Micro-architecture concepts are only touched upon.

Detailed Description

This course is divided into three parts.

Part I

We first introduce the world of embedded system through various examples. Various components of the embedded systems are discussed next. Focus is on providing a bird's eye view of the complete environment rather than delve too much into detail of any one topic. The following are the specific topics covered in Part I.

  1. Prerequisites and goals of this course
  2. Embedded systems examples
    • Real life embedded systems
    • System specification and implementation flow
  3. Micro-controller basics
    • What is programmability
    • Micro-controller block diagram
    • What is an instruction
    • Instruction execution phases
    • Architecture views
  4. Software tools
    • Assembly and binary
    • Software tools flow
    • Overview of various software tools such as compiler, assembler, linker etc.

Part II

In this part, various embedded programming concepts and tools are introduced with the help of 8051 micro-controller family. 8bit micro-controllers are extensively used in a variety of applications such as home appliances, displays, computer peripherals, cars etc. 8051 family is quite popular among 8bit micro-controllers. Specifically, we will learn the following.

  1. 8051 based systems
    • Why it makes sense to learn 8051
    • Salient features and block diagram
    • Overview of components such as memory, ALU, timers etc.
    • Execution flow within 8051
  2. 8051 simulator
    • Laboratory setup
    • How to use 8051 simulation environment
  3. Data flow instructions
    • Data flow and ALU
    • Addressing modes
    • Role of accumulator
    • Copy instructions
    • Program status word
    • Addition, subtraction, multiplication and division instructions
    • Logical and bit level instructions
    • Assembly programming guidelines
  4. Control flow: branches
    • High level control flow structures
    • Unconditional jumps
    • Conditional jumps
    • Loops
  5. Control flow: subroutine calls
    • What is a subroutine
    • What is an execution context
    • Role of stack
    • Subroutine calls in 8051
    • Stack overflow
  6. Programming input and output pins
    • Configuing ports
    • Reading and writing ports
    • Dual functionality
    • Read modify write cycle
  7. Timers and event counters
    • What are timers
    • Various timer configurations
    • Event counter usage
  8. Interrupt programming
    • What are interrupts
    • Interrupt vs polling
    • Interrupt service flow
    • Interrupt support in 8051
    • Edge and level triggered interrupts
  9. Serial communication
    • What is serial communication
    • Configuring serial port
    • Reading and writing serial port
    • Serial interrupt
  10. Working with peripherals
    • Interfacing with external memories
    • Interfacing with keypad

Part III

In part III, we will take a couple of projects. Further, we will go through a few important software engineering aspects such as writing modular and maintainable code, performance considerations etc. At the end, an overview of higher end embedded processors will be provided as motivation for more advanced topics.

EP51 course as outlined above will give you hands-on-experience on various components of embedded systems programming in short span of time. At the same time, you will also get an insight into micro-controller architectures. Experience gained with assembly level programming will also come very handy while writing device drivers and firmware.

About Us | Resources | Contact Us
Terms of Use | Privacy Policy
© 2020 VirtuQ™ Education All right reserved.