Interfacing an 8-bit Microcontroller with a 10-bit Device over the SPI Protocol

In Simon Monk's Programming Arduino Next Steps: Going Further with Sketches, Simon introduces the SPI protocol by way of interfacing the Arduino with a 10-bit ADC (specifically the MCP3008). Unfortunately, by choosing a 10-bit ADC to introduce the SPI protocol, he ultimately fails the main objective of getting students started with the SPI protocol. Additionally, without much explanation or reference to the MCP3008's datasheet, his implementation of the algorithm feels awkward and clumsy. Mostly because the code is just unintuitive.

This is a companion discussion topic for the original entry at