Microcontroller Theory and Applications by Daniel Pack & Steven Barrett