This document provides an introduction to embedded C programming. It discusses how embedded systems use processors running embedded software to function. C became the dominant programming language for embedded systems due to its portability and ability to directly access hardware while providing high-level programming capabilities. The document outlines some key differences between general C programming and embedded C programming, noting embedded C must optimize for limited memory and other hardware constraints common in embedded systems.