Software and Hardware Engineering: Assembly and C Programming for the Freescale HCS12 Microcontroller