described earlier for now, but be aware that not everyone will agree with ourdefinition.When we say “embedded” therefore, we refer to something implementedwith a microcontroller.Since microcontrollers are constantly getting newfeatures and capabilities, this is a “living” definition.Embedded programs typically differ from other programs in several sig-nificant ways:•They’re smaller. While even a tiny application for, say, an applicationfor a popular personal computer operating system might consist ofseveral hundred thousand bytes of program, there are typically only afew tens of kilobytes available for program storage in a microcontrollersystem.•They’re simpler. An application for a popular personal computer oper-ating system will typically make extensive use of system libraries andthe levels of hierarchy involved in the application (function calls withinfunction calls) would normally be 10 or more levels deep. This would beuncommon in a microcontroller environment. It wouldn’t be unusualfor the number of levels of hierarcy in a large program to be on the or-der of 50 (including system libraries that it uses), while the maximumnumber of levels in the PIC18F architecture is 32. The complexity ofa program is typically directly related to the number of levels in thecalling hierarchy (as an exponential function of the number of levels),so the complexity of the large program could easily be 218or about262000 times as complex as the largest microcontroller program.