As a part of UNSW Mechatronics program (COMP2121 course), in a team of 2 we have written an Assembly code to simulate the microwave on a board provided by UNSW CSE School.
The board had an ATMega2560 Microcontroller (which was essentially an Arduino Mega connected at the bottom) with a few I/O devices attached: momentary switches, LED bar, motor with encoder, speakers, LED bar, and LCD screen.
Our task was to write firmware in Assembly to make these I/O devices operate as a microwave simulator. It had to allow input, countdown the time, indicate the dish rotation, register open/closed door, turn the motor to simulate the microwave power and (optionally) make sounds.
We have implemented all features in a timely manner, and passed all tests in the end of the course. The only optional feature we did not achieve was the making of sounds due to malfunctioning speakers.
Having no previous experience of such low level programming, especially Assembly (I had coded in C before) and with very little knowledge of electronics, it was a steep learning curve, but I enjoyed it a lot and have learned a lot (I/O interfacing, PWM, interrupts, timers, subroutines, memory addressing etc.).
IDE & Debugger used: AVR Studio 4
Github repo: https://github.com/antonvino/comp2121