Skip to content

Course Description

This course introduces students to the fundamentals of embedded systems programming using the PIC24FJ64GA002 microcontroller. Through a combination of low-level assembly, C programming, and hands-on interaction with hardware peripherals, students gain practical experience designing, coding, and debugging microcontroller-based systems.

The course emphasizes not only syntax and structure, but also the real-world applications of embedded programming — such as controlling timers, handling interrupts, reading sensors, and sending data over serial interfaces.


Topics Covered

  • Microcontroller architecture and memory mapping
  • Writing and debugging PIC24 assembly code
  • Branching, loops, and conditional execution
  • Stack behavior, subroutines, and frame pointers
  • Timers, periodic interrupts, and real-time control
  • External interrupts and input capture modules
  • Output compare and pulse-width modulation (PWM)
  • Communication protocols: UART, SPI, I2C
  • Analog-to-digital conversion (ADC)

Learning Objectives

By the end of the course, students will be able to:

  • Understand and manipulate hardware-level control flow
  • Interface with peripherals such as buttons, LEDs, and sensors
  • Configure and use timers, interrupts, and communication modules
  • Translate datasheet specifications into working embedded code
  • Build efficient, deterministic programs suitable for resource-constrained devices

Tools & Environment

Students will use the following tools:

  • MPLAB X IDE and XC16 compiler
  • PIC24FJ64GA002 development board
  • Microchip datasheets and technical documentation
  • This intelligent, interactive textbook with embedded quizzes and simulations

This course is ideal for students in electrical engineering, computer engineering, or related fields looking to understand the foundations of embedded systems through a hands-on, low-level lens.