Introduction to Microcontrollers and the C Programming Language

Introduction to Microcontrollers and the C Programming Language

We have partnered with Texas Instruments, element14, and Udemy to develop a hands-on, laboratory-focused experience to take you through a subset of our sophomore and junior-level embedded systems courses.

The course will use the same mixed-mode format we use in our lecture-laboratories at Valparaiso University. This format is well-suited for traditional students and those that want to work/study at their own pace – the course has no required timetable. An emphasis is placed on enabling students to develop their skills by continually practicing with the tools real developers use every day.  A few short videos will kick off each of the sections followed by the step-by-step instructions to get you up and running.  And, if you have any questions along the way, our embedded systems team will be here to help.  That’s what we’re here for – to make you successful.

For a discount, please use the coupon code “12valpo” when registering.Udemy with RegistrationElement14 buttonButtons TI Our






Students will benefit from a number of the course’s features:

1)  The course is laboratory based.  Almost every lecture and section of the course leads directly to a hands-on laboratory assignment.  The more practice you get using the “real world” Texas Instruments hardware and software the more proficient you will be.

2)  The course does not waste your time.  From the very beginning, we jump right in to your first laboratory assignment – Let’s Get Started.

3)  The course is modular in nature.  Are you new to the world of microcontrollers?  Great!  Start at the beginning, and we’ll teach you everything you need to know.  Do you have some background in microcontrollers but want to learn more?  Fantastic!  You can pick and choose the modules that you need.

4)  The course is packed with information.  From the beginnings of the C programming language to advanced microcontroller peripherals, the course teaches you all of the building blocks you would need to build your own electronic systems.

5)  We use lots and lots of examples.  We take you step-by-step through the lessons – each time providing sample code and documentation to make sure you are supported through the course.

6)  We are here to help.  We are educators with a singular focus of providing a meaningful experience for our students.  And, while we cannot do the work for you, we are willing to work WITH you help you succeed.


This course is the perfect mix of “dive right in” and detailed step by step instruction. The real world tactile and visual result of your programming with the hardware produces superb results for the those who respond and learn faster from learning by doing. The excellent depth of knowledge and rapid detailed responses to questions from students demonstrate the extremely high quality of Mark Budnik as an instructor. I truly hope this class is followed up with advanced courses of similar design and presentation. Keep up the great work!

So far everything has been fantastic, from the lab kit to the bonus questions! Thank you for providing such an accessible and complete course!

I think this course is helping me tremendously I’ve been trying to make myself learn C and how to work with microcontrollers for several years. Every time I start, I get frustrated and loose interest. Your approach is excellent and I can’t believe how responsive you are to our questions.

The course is great! It is just what I needed, at just the right time. I have taken many online courses – some for credit – and this is really the best I’ve seen.

Probably the best Embedded C course yet found. Well presented, but one of the best parts is seeing the way the IDE is used rather than just having it dropped in front of me and told “use this, you’ll get it eventually” makes a big difference.

I purchased this course with the hopes of gaining knowledge in C programming for microcontrollers. I’m currently about 2/3’s of the way through and have learned some from this. The course looks to be real good for teaching the basics with a focus on the TI MSP430 Series Microcontrollers.

After searching through numerous courses to learn the C language and embedded firmware, I have finally discovered a course the exceeds my expectations. Thank you very much Mr. Budnik.

Just about half way through course. Great course. Handouts useful and good source of information. The instructor/videos are clear and precise. Highly recommend to anyone interested in Microcontrollers / electronics / C Programming.

20140626 JLH Mark Budnik-007

Mark M. Budnik is the Electrical and Computer Engineering Department Chair and the Paul and Cleo Brandt Professor of Engineering at Valparaiso University.  He received his bachelor of science degree in electrical engineering from the University of Illinois and his master of science and doctoral degrees in electrical engineering from Purdue University.

Prior to joining the faculty at Valparaiso University in 2006, Mark worked in the semiconductor industry, culminating as a Staff Engineer and the Director of White Goods and Motor Control at Hitachi Semiconductor.  In these roles, he had a unique opportunity to work closely with a diverse customer base to identify and establish a number of best practices in embedded systems education.

In his career, he received multiple educational awards from academia and industry including ST Microelectronics, National Semiconductor, Hitachi Semiconductor, Valparaiso University, and the American Society for Engineering Education (ASEE).  Most recently, Mark was an ASEE Section Outstanding Teacher of the Year and a finalist for the 2015 ASEE National Outstanding Teaching Award.

Mark is the author of more than fifty book chapters, journal articles, and conference proceedings and the recipient of five best paper/presentation awards.  He is a Senior Member of the IEEE and a Fellow of the International Symposium on Quality Electronic Design.

Handout Icon2Click for PDF



Section 1 – How Do I Get Started? (Free Preview Available at Udemy)

Lecture 1: What Is This Course All About?

Lecture 2: Course Introduction

Lecture 3: What Is a Microcontroller?

Lecture 4: What Is an Embedded System?

Lecture 5: What Is a Program?

Lecture 6: What Is an Integrated Development Environment?

Lecture 7: ACTION: How Do I Get Started?

Lecture 8: Wrap Up

Lecture 9: Quiz 1: Getting Started

Section 2 – Binary Numbers and Digital Logic (Free Preview Available at Udemy)

Lecture 10: ACTION: What Are Binary and Hexadecimal Numbers?

Lecture 11: ACTION: What Is Digital Logic?

Lecture 12: Wrap Up

Lecture 13: Quiz:  Binary Numbers and Digital Logic

Lecture 14: BONUS:  Additional Examples

Section 3 – What’s Inside of a Microcontroller (Free Preview Available at Udemy)

Lecture 15: What Is Inside a Microcontroller?

Lecture 16: What Is Program Memory?

Lecture 17: What Is Data Memory?

Lecture 18: What Is a Peripheral?

Lecture 19: Wrap Up

Lecture 20: Course Launches September 28th, 2015

Section 4 – Loops in the C Programming Language

Lecture 21: ACTION: What Is a FOR Loop?

Lecture 22: What Is a Flow Chart?

Lecture 23: ACTION: What Is a WHILE Loop?

Lecture 24: Loops Wrap up

Lecture 25: Quiz: Loops in the C Programming Language

Lecture 26: BONUS: Are FOR Loops and WHILE Loops Really the Same Thing?

Lecture 27: BONUS: What Are the Different C Variable Types?

Lecture 28: BONUS: What Are Nested Loops?

Lecture 29: BONUS: What Are the C Shorthand Operators?

Section 5 – Digital Inputs, the P1.1 Button, and the IF Statement

Lecture 30: What Is a Digital Input?

Lecture 31: ACTION: What Is the P1.1 Push Button?

Lecture 32: ACTION: What Is the IF Statement?

Lecture 33: ACTION: What Are Relational Operators?

Lecture 34: ACTION: How Do I Use More Push Buttons and LEDs?

Lecture 35: Digital Inputs Wrap Up

Lecture 36: Quiz: Digital Inputs, Push Buttons, and the IF Statement

Lecture 37: BONUS: What Are BREAK and CONTINUE?

Section 6 – Introduction to Timer Peripherals

Lecture 38: What Is a Timer?

Lecture 39: What Can Timers Count?

Lecture 40: Introduction to Timers Wrap Up

Lecture 41: Quiz: Introduction to Timers

Section 7 – Introduction to the Watchdog Timer Peripheral

Lecture 42: What Is a Watchdog Timer?

Lecture 43: ACTION: How Do I Use the Watchdog Timer?

Lecture 44: Watchdog Timer Peripheral Wrap Up

Lecture 45: Quiz: Watchdog Timer Peripheral

Section 8 – Introduction to the General Purpose Timer

Lecture 46: ACTION: How Do I Use a General Purpose Timer?

Lecture 47: Quiz: General Purpose Timers

Lecture 48: BONUS: How Can I Pet the Watchdog with a General Purpose Timer?

Section 9 – Advanced Features of General Purpose Timers

Lecture 49: ACTION: How Do I Use Two General Purpose Timers to Count at the Same Time?

Lecture 50: Quiz: Advanced Features of General Purpose Timers


Section 10 – Using Functions to Improve Your Microcontroller Program

Lecture 51: ACTION: How Do Functions Improve Your Program?

Lecture 52: Quiz: Functions

Section 11 – Introduction to Interrupt Service Routines

Lecture 53: ACTION: What Are Interrupt Service Routines?

Lecture 54: Quiz: Interrupt Service Routines

Section 12 – Introduction to Low Power Modes

Lecture 55: What Is Low-Power Mode?

Lecture 56: ACTION: How Do I Use Low-Power Mode?

Lecture 57: Low Power Mode Wrap Up

Lecture 58: Quiz: Low-Power Modes

Section 13 – Interrupt Service Routines for Digital Inputs

Lecture 59: ACTION: How Can I Use Interrupts with a Digital Input?

Lecture 60: BONUS: How Do I Use Semi-Automatic Pulse Width Modulation (PWM) Mode?

Lecture 61: BONUS: How Do I Use Automatic PWM Mode?

Lecture 62: BONUS: How Do I Use One Timer to Create Multiple Frequency Outputs?


Section 14 – Serial Communication Interfaces

Lecture 63: What Is Serial Communication?

Lecture 64: ACTION: How Can I Use a UART to Talk to Another Microcontroller?

Lecture 65: Serial Communication Wrap Up

Lecture 66: Quiz: Serial Communication

Section 15 – Analog-to-Digital Converters

Lecture 67: ACTION: What Is an Analog Value?

Lecture 68: ACTION: How Do I Use an Analog-to-Digital Converter Peripheral?

Lecture 69: Analog-to-Digital Converter Wrap Up

Lecture 70: Quiz: Analog-to-Digital Converter

Section 16 – Introduction to the Liquid Crystal Display (LCD)

Lecture 71: ACTION: How Can I Use the LCD on the MSP430FR6989 Launchpad?

Lecture 72: ACTION: How Do I Display a Short Word on the LCD?

Lecture 73: ACTION: What Is ASCII and Why Is It Important?

Lecture 74: ACTION: How Do I Create a Scrolling Message on the LCD?

Lecture 75: ACTION: How Do I Display Numbers on the LCD?

Lecture 76: ACTION: How Do I Display Symbols on the LCD?

Lecture 77: Liquid Crystal Display Wrap Up

Lecture 78: Quiz: Liquid Crystal Display

Section 17 – Final Project

Lecture 79: ACTION: Final Project

Section 18 – Wrap Up

Lecture 80: Final Words and Sources of Additional Help