Programming 8-bit PIC Microcontrollers in C: with Interactive Hardware Simulation