ET 283 Microprocessor Fundamentals


ET283 Microprocessor Fundamentals C 3, P 2, CR 4

This course presents the microprocessor/microcontroller as the principal component of embedded systems, providing information on the architecture and programming model using the C language. C programming techniques for arithmetic and logic operations along with flow control are introduced. The use of functions, I/O instructions and timers are presented with laboratory experiments.

Prerequisites: ET181 Digital Electronics 1


Text: Embedded Controllers Using C and Arduino (pdf)

References: Arduino Cookbook, Michael Margolis, O'Reilly Media
Introduction to Embedded Systems: Using ANSI C and the Arduino Development Environment, David Russell, Moragn & Claypool Publishers

Tools: Scientific calculator, electronic breadboard

Lab Manual: Laboratory Manual for Embedded Controllers Using C and Arduino (pdf)


The student will demonstrate an understanding of numbering systems commonly encountered in computer systems.

The student will display an understanding of microcontroller architecture and I/O structure.

The student will demonstrate a basic proficiency in the C programming language.

The student will demonstrate an understanding of the differences between programming a desktop computer and a microcontroller.

The student will demonstrate a basic knowledge of how to use a host computer to program a microcontroller or other external target.

Through the laboratory, the student will demonstrate practical insight and knowledge of interfacing and input/output devices.

Course Assessment Standards



Success in this course requires a good working knowledge of digital circuit principles along with basic semiconductor theory. A working knowledge of a modern programming language such as Python is strongly advised. The math level is mostly algebra. Note that smart devices will not be allowed during tests. For lab, you'll need the standard array of goodies as used in ET151 Circuits 1 and ET153 Intro to Electronics (breadboard, DMM, hook-up leads, etc.) You may also find the purchase of an Arduino Uno (or similar) development board to be handy. These are relatively inexpensive (typically $25 or less) and widely available (Parts Express, Digi-Key, Mouser, Spark Fun, AdaFruit, etc.). A USB cable is required for it. Finally, you may wish to obtain a desktop C compiler for your home system such as Pelles C (freeware). Unless otherwise specified, all lab exercises require a technical report due no later than one week after the exercise. The report should include the programming code and circuit schematic (where appropriate) along with a description of both and an analysis of the results. Late penalty is one letter grade for the first half week, two letter grades for the second half week. Reports are not accepted beyond two weeks and receive a grade of 0. Remember, plagiarism is grounds for failure.

Week-by-week progress and assignments. 

Please note that the laboratory manual and lecture text are available as single doc and pdf files at the bottom of this page.


We start the course by diving right in to the C programming language from the desktop. We begin examing variable types and basic input/output (I/O) methods for text.

  • Reading: Course IntroductionC Language Basics parts I and II, C Storage Types and Scope. Be sure to read this overview on using Pelles C before lab.
  • Problems: Chapter 3, numbers 1 and 3, C Basics Worksheet. Chapter 4, numbers 1, 3, 5, 7 and 9. 
  • Lab: Our first experiment will combine  Introduction to C Programming and Using Standard I/O. Here we'll look at basic methods of entering and displaying data via a shell or console window. Note: there is nothing to hand in for the first part. It is just an exercise used to get familiar with the coding process and should not take very long.

We look at basic decision making. 

  • Reading: C Arrays and Strings, begin C Conditionals and Looping
  • Problems: C Math Worksheet. Chapter 6, numbers 1, 3 and 5. Try converting an old Python program which uses a series of if statements into C.
  • Lab: This week Using Conditionals explores structures such as the if/else and switch/case

We examine iteration and looping methods this week.

  • Reading: Finish C Conditionals and Looping
  • Problems: Chapter 4, numbers 1, 3, 5 and 7. Try converting an old Python program which uses a for or while loop into C.
  • Lab:Iteration is this week's subject: Using Loops. Be sure to read How to Format Your Code.

Our discussion of pointers and addresses commences. Mastery of this material is imperitive. Around here we will have our first test.

  • Reading: C Pointers. For the more advanced, read the section on structures. 
  • Problems: Chapter 8, numbers 1, 3, 5 and 7. C Pointers Worksheet. For the more advanced,  try the C Structures Worksheet.
  • Lab: Intro to Addresses, Pointers and Handles is particularly important in order to make sense of future work. 

This week we turn our attention from desktop programming to programming embedded targets. We discuss computer hardware architecture and introduce the Arduino system.

  • Reading: Hardware Architecture, Embedded Programming and AVR ATmega 328p Overview
  • Problems: Load the Arduino development system onto your computer and make sure that you can download and run the Blinky program.
  • Lab: This lab begins our work with the Arduino development system: Hello Arduino.

  • Reading: Bits & Pieces: includes and defines, Bits & Pieces: Digital Output Circuitry
  • Problems: Seriously, dive into the include files. Look around the directories and also notice the coding style in the headers.
  • Lab:  Arduino Digital Output. This exercise examines controlling external on/off style devices.

Our week begins with a discussion of ports, specifically writing to output ports. 

  • Reading: Bits & Pieces: pinMode and Bits & Pieces: digitalWrite
  • Problems: 
  • Lab: This lab examines how to obtain data from external two-state devices: Arduino Digital Input.

We reverse our operation and examine how to read digital data from the ports. 

  • Reading: Bits & Pieces: DigitalIntput Circuitry, Bits & Pieces: delay and Bits & Pieces: digitalRead
  • Problems:  Exercise 24.3
  • Lab: This week we turn our attention to reading continuously variable input devices: Arduino Analog Input.

We extend the concept of port reading to include analog input signals.

  • Reading:  Bits & Pieces: Analog Input Circuitry
  • Problems: Try the Embedded Coding Worksheet
  • Lab: The Arduino Reaction Timer is a fun lab which integrates many elements studied previously.

We continue our exploration of analog input signals via a variety of different sensors and associated applications. Around here we will have our second test (end of this week or possibly the next).

  • Reading:  Bits & Pieces: analogRead
  • Problems: Exercise 26.3
  • Lab: The Arduino Reaction Timer Redux revisits lasts week's exercise and extends the idea.

We begin our discussion of creating analog output signals.

  • Reading: Bits & Pieces: analogWrite.
  • Problems: Obtain and read the datasheet for the DAC0808 digital to analog converter.
  • Lab: This week we discover one method of controlling external devices in a continuous manner via Arduino Analog Output via PWM.

Timers are discussed this week.

  • Reading:  Bits & Pieces: Timer/Counters
  • Problems:  
  • Lab: There are many applications for counting items or events. Arduino Event Counter explores this topic.

We examine interrupts.

  • Reading: C Look-up Tables, Bits & Pieces: Interrupts 
  • Problems: 
  • Lab: Arduino Arbitrary Waveform Generator is a two week assignment involving direct waveform synthesis. 


We wrap up the course. Time permitting, we have our last in-class test.

  • Reading: All that stuff you skipped earlier in the semester.
  • Problems: Study for last test/final exam!
  • Lab: We continue with Arduino Arbitrary Waveform Generator.


Embedded Controllers Using C and Arduino (odt)

Embedded Controllers Using C and Arduino (pdf)


Laboratory Manual for Embedded Controllers Using C and Arduino (odt)

Laboratory Manual for Embedded Controllers Using C and Arduino (pdf)

Using Pelles C

How to Format Your Code


C Basics Worksheet

C Math Worksheet

C Pointers Worksheet

C Structures Worksheet

Embedded Coding Worksheet

Home] [MVCC Home]

2017 Jim Fiore