Introduction to Microprocessors and Microcontrollers by John Crisp