The final project for my CSC 202 microcontroller class allowed us to choose our own project with several design requirements such as use of the seven segment display, use of at least one switch and push button, and some portion of the code written in Assembly.
Design
I chose to design an alarm clock considering that I was a college student with the furthest thing from a normal sleep schedule and if by chance I snoozed the first alarm there were seven more to fully utilize the bank of eight dip switches. System time is entered at startup using the push button array like a phone keypad and alarm time is prompted when each dip switch is set to the on position. The time keeping system is largely written in Assembly and uses subdivisions of the system clock to count seconds and minutes with a cumulative accuracy of +/- 2 seconds per hour with a separate counter allowing that error to reset every hour to an accuracy of +/- 0.005 seconds. Code is available on my GitHub.