Skip to navigation | Skip to main content | Skip to footer

COMP22712 - Microcontrollers

[Formerly CS1242, COMP10242, COMP20262]
The 'official' syllabus is: COMP22712


This course aims to familiarise students with the internals of a `blank' microprocessor system. They will also be exposed to a variety of interface techniques, both at the hardware and software levels. The course will also reinforce students' ability to programme in assembly language and their appreciation of the role of an operating system.


A student completing this course should:

  • be reasonably competent in assembler programming
  • appreciate the function and need for an operating system
  • know when and how to use interrupts
  • have experienced a wide variety of interfaces and interface techniques
  • understand the hardware-software interface and the implementation trade-offs around this boundary

Further information

This course draws on both the ARM programming introduced in COMP15111 and logic design in COMP12111 to show how parts of a computer interact.

The course is primarily practical; some semi-formal teaching is performed in the laboratory but the emphasis is on learning by doing.

The lab. manual has been 'refurbished' recently.
The blackboard mirror of the material is here. is still available here.

For reference, the schedule is repeated here:

Exercise Sessions Demonstrate Submission
1-Simple Output 1,2Not assessed
2-Less Simple Output 3 Not assessed
3-Nesting Procedures 4,5End of Session 5 12/2/2020
4-System Calls 6,7Not assessed
5-Counters/Timers 8,9End of Session 10
Consolidation 10 28/2/2020
6-Interrupts 11,12Not assessed
7-Keyboards 13,14End of Session 1413/3/2020
8-System Design/Sounds15,16Not assessed
9-Project 17,18End of Session 22(cont.)
Easter vacation
9-Project (cont.) 19-22End of Session 221/5/2020


Locally developed hardware allows the user to develop applications which cross the hardware/software divide. This comprises an ARM microprocessor board with FPGA support and custom developed software.

[A pointer to the previous hardware is included here in case anyone is still looking for it.]


The equipment is supported by our own software. The primary support is from the Komodo monitor which acts as a remote monitor for the board's state.

The assembler is also locally developed. It uses ARM standard mnemonics with a few minor extensions. A brief manual is available.


The School has a library of microcontroller equipment available on free loan to students. This is primarily based around the popular Arduino microcontrollers but there are plenty of other units there too.

There are not many introductory texts based around ARM programming. These may be worth a look:


There are not many introductory texts based around ARM programming. These may be worth a look:

This is not an introductory book, but if you want to get more seriously into what the ARM will do: