Embedded AVR Projects
Four assignments on an ATmega2560: bit-manipulation in AVR assembly, a signalling exercise, an interrupt-driven LCD display, and a C-based digital clock.
tech:
README
Embedded AVR Projects
Four assignments from a computer architecture course, working directly against an ATmega2560 (Arduino Mega) — from raw bit manipulation in AVR assembly up to a C-based LCD digital clock driven by timer interrupts.
| Project | What it does |
|---|---|
assignment-1-bit-manipulation/ |
Three AVR assembly routines: resetting the rightmost run of set bits, 16-bit addition with carry propagation across register pairs, and a two's-complement bit trick. |
assignment-2-signalling/ |
An AVR assembly signalling exercise (see a2-description.pdf for the spec). |
assignment-3-lcd-display/ |
Four-part LCD + keypad program: timer-interrupt-driven display, a scrolling message sign, and reading/displaying keypad input. Built against the DFRobot LCD Keypad Shield driver in lib/ (see Attribution below). |
assignment-4-digital-clock/ |
A digital clock in C (main.c) — interrupt-driven timekeeping rendered to the LCD. |
Attribution
assignment-3-lcd-display/lib/ (lcd.asm, LCDdefs.inc, lcd_example.asm) is a
course-provided LCD driver library for the DFRobot LCD Keypad Shield, written by
Keegan van der Laag and adapted from a public AVR Freaks driver — included here only
because Part D of Assignment 3 depends on it to build. It is not my own work; only
display_partA.asm through display_partD.asm are.
Building
Assembly files assemble/link with Microchip Studio (or avra/avr-gcc toolchains)
targeting the ATmega2560. assignment-4-digital-clock/main.c builds with avr-gcc
against avr/io.h and avr/interrupt.h.
🎓 Project Context
Built as part of CSC 230: Introduction to Computer Architecture at the University of Victoria.
⚠️ Academic Integrity Notice
This repository is maintained for portfolio and educational purposes only. If you are currently enrolled in CSC 230 at the University of Victoria or a similar computer architecture course, please note that using this code in your own assignments may constitute a violation of Academic Integrity policies.