Firmware - Assembly Code

The implementation is such that CPU runs at 8MHz and Timer1 is clocked by 16MHz clock. Necessary fuses are to be programmed accordingly. The code consists of three parts: Initialization, Timer1 overflow interrupt service routine, and a sleep loop.
Figure 1. Flowchart of main() - Sine Wave Generator Code