ICSD-7853 Microprocessors

Course details

Instructor: Assistant Professor Asimakis Leros
ICSD building, office B-10

Lectures: Wed 3-5, Myrtó

Lab: Thu 9-12, Artemis

Office hours: Wed 10-12, Thu 12-1

Course content and objectives

Microprocessors is part of a sequence of courses on computer hardware. The course focuses in the design of digital systems using microprocessors and microcontrollers and is organized around the AVR 8-bit microcontrollers. We will address the internal architecture, interface with memory and I/O devices, and programming in Assembly and C.

Specific course objectives include:

The course material can be found through e-class.


In the lab we will use the ATMega328P microcontroller by Atmel (currently owned by Microchip), the Arduino Uno development board and the Atmel (Microchip) Studio 7 development environment. The Αrduino IDE will be available at the lab, but will not be used currently. We will be programming the microcontroller both in Assembly and C.

Eight lab exercises are planned (for details, see course schedule below. Each exersice will be available a week in advance for you to prepare. You will need roughly four to five hours of preparation per each exercise for studying the course material and datasheets, preparing a draft of your code and debugging. You may need more effort if you have no previous exposure to Assembly language. It is important to have done this work before the lab so that we don't start from zero; during the lab session we will debug and test your code, as well as see various extensions. Contact me in case of any implementation difficulties before the lab. Your lab report will be due five days after the lab session.

There are ten workstations in the lab, each with a PC, Arduino board and other equipment. There will be two 2-hour sessions on Thursdays, so a maximum of 20 students can be accommodated. It is important to register as early as possible.

Your presence in the lab and lectures is mandatory and important. Inform me as soon as possible in case of an absense. Normally, there will be no makeup for lab sessions lost.

Course project

Apart from the weekly lab exercises, there will be a larger scale project. You should expect to put around 40 to 50 hours of work (roughly 7--8 hours per week for 5--6 weeks). The subject will be of your choice, although I can offer suggestions and advice. You may use any electronic or printed sources, as long as (a) I agree and (b) you explicitly mention the sources in your reports. Important dates are:

The project deliverables are the hardware and software implemented, the project report, and a 2-minute video on YouTube.

Textbook and literature

We will rely heavily on the datasheets, and also use various web resources.

Presentations from lectures:

Lab assignments:

Other material:


Grading policy

Pay attention to deadlines! Reports received up to three days past the deadline will incur a grade penalty of 10%. After that, no reports will be accepted.

Academic honesty policy

You may freely discuss exercises with each other, but each of you must produce his own personal work. Lab reports that dispaly unusually similarity will not be graded!

The same holds for the course project. In addition, you may freely use any sources, electronic or printed, as long as you acknowledge them in your report.

Course calendar

(Watch out for announcements; there may be some changes in future lectures)

Wed 2 Mar Lec1 Review of number systems. Review of basic digital components. Microprocessor architecture: control unit, registers, arithmetic and logic unit. Interface with memory.
Thu 3 Mar Lec2 Input and output: program controlled I/O, service of peripheral devices using the methods of polling and interrupts.
Tue 8 Mar Lec3 Architecture of AVR microcontrollers: core and basic peripheral units.
Wed 9 Mar Lec4 Introduction to the AVR assembly language. Data transfer, arithmetic and logic operations.
Thu 10 Mar Lab1 Introduction to the Atmel Studio development environment. Arithmetic and logic operations in Assembly.
Fri 11 Mar Last date for adding/dropping course.
Wed 16 Mar Lec5 More addressing modes in Assembly. Branching instructions. I/O ports.
Thu 17 Mar Lab2 Control and branching instructions. Digital I/O.
Wed 23 Mar Lec6 Subroutines and stack. More on I/O ports programming.
Thu 24 Mar Lab3 Digital I/O.
Wed 30 Mar Lec7 I/O using interrupts.
Thu 31 Mar Lab4 Programming external interrupts.
Fri 1 Apr Selection of lab projects.
Wed 6 Apr Lec8 Counters, timers, PWM.
Thu 7 Apr Lab5 Programming timers and interrupts.
Wed 13 Apr Lec9 Analog to digital conversion (A/D).
Thu 14 Apr Lab6 Programming analog inputs.
Wed 4 May Lec10 Serial communication.
Thu 5 May Lab7 PWM, various output devices.
Wed 11 May Lec11 Serial communication, I2C (TWI) protocol.
Thu 12 May Lab8 Serial communication.
Wed 18 May Lec12 Implementation of a microprocessor's control unit. Microprogramming.
Thu 19 May Lab9 Serial communication.
Wed 25 May Lec13 PIC 8--bit processors.
Thu 16 May Lab10 Term projects.
Wed 1 Jun Lec14 ARM 32 and 64--bit processors.
Thu 2 Jun Lab11 Term projects.
~15 Jun Presentation of term projects (final exam).
~25 Jun Final reports due.