Software and hardware engineering :assembly and C programming for the freescale HCS12 microcontroller