This paper discusses the tradeoffs available between hardware and software. By addressing these tradeoffs, the Microntroller Systems Engineer can minimize both development time and final product cost. The engineer must always remain aware that every function the circuit under design must perform can be performed in either hardware or software, and that the optimum solution in his application is most likely a mix or compromise of the two.