PIC24 Video Tutorials

These videos are meant to supplement the book and online documentation. Many of the videos on this page use the Adobe Flash Player. We have tried to keep them short, and as such, they assume some familiarity with the subjects discussed either from the book, lecture notes, library documentation, or PIC24 datasheets. They are meant to be simply another resource, and not the sole resource. If you start with these videos, then you will be left with questions about details that can be answered from the book, lecture notes, library documentation, and PIC24 datasheets.


The ECE 3724 lecture series include lectures which present the material in the course, along with supplementary videos on topics related to the course. 


  • Bully Bootloader GUI usage (3:51 minutes). Additional information on the bootloader is found on the PIC24 library page.
  • How to determine the COM port number assigned to a USB-to-Serial Cable (1:30 minutes). This COM port number is needed if you are using the Bully Bootloader (or serial comunication program) and a USB-to-Serial cable to communicate with your PIC24 system.


  • MPLAB X IDE introduction (13 minutes). This video gives a quick introduction to the MPLAB IDE for assembly language simulation using an assembly language example from Chapter 3.
  • MPLAB IDE introduction (9:33 minutes); Silent version (WMV, 9:22 minutes, lower resolution). This video gives a quick introduction to the MPLAB IDE for assembly language simulation using an assembly language example from Chapter 3. This video focuses on MPLAB features, and not PIC24 assembly language.
  • Creating a new MPLAB project by copying an existing project (1:59 minutes).
  • MPLAB project organization of our C examples, and warning messages you may encounter (7:38 minutes). A shorter, silent version is here (WMV, 1.46 minutes). Also covers a couple of common errors such as not including the correct library files, or compiling for an incompatible CPU.
  • PICkit2 programmer usage for PIC24 CPUs (5:21 minutes).
  • An oscilloscope tutorial (8:22 minutes).


Code Examples

  • Discusses the first 'simple' assembly language program given in Chapter 3, Listing 3.4. Part 1 (9:55 minutes, embedded flash) discusses the program, along with the necessary assembler directives for use in MPLAB. Part 2 (5:12 minutes, embedded flash) simulates the program within MPLAB. Part 3 (4:04 minutes, embedded flash) looks at how the program changes when the variables are increased in size from 8 bits to 16 bits. You may want to view the video on MPLAB IDE capabilities (9:33 minutes, embedded flash) first. This video shows user code starting at 0x0200 with the version of MPLAB used in the video; the latest version of MPLAB may place the code for the default interrupt at location 0x0200, with user code following it.
  • Discusses the reset.c application of Chapter 8 (8:58 minutes) embedded flash. This application explores different reset mechanisms and power saving modes of the PIC24 family. Note: Sometimes this video halts at the 0:22 mark for unknown reasons, simply click on the play button of the embedded flash player to continue.
  • Discusses flashing an LED, reading a switch (silent video, WMV, 4:25 minutes, chap8/{ledflash.mcp, ledtoggle_nofsm.mcp}).
  • Discusses using a finite state machine approach for I/O coding, a simple example (silent video, WMV, 3:17 minutes, chap8/ledtoggle.mcp), and a more complex example (silent video, WMV, 3:35 min, chap8/ledsw1.mcp).
  • Discusses interrupt service routines in C (silent video, WMV, 1:40 minutes, chap9/{trap_test.mcp, trap_test_handled.mcp}.
  • Discusses change notification, INTx interrupts, remappable pins (silent video, WMV, 2:56 minutes, chap9/{change_wakeup.mcp, int0_wakeup.mcp, int1_wakeup.mcp}.
  • Discusses support for asynchronous serial I/O in the library, and an example that uses interrupt-driven serial receive (silent video, WMV, 5:48 minutes, chap10/{reverse_string.mcp, uart_rxfifo.mcp}.
  • Discusses support for the Serial Peripherial Interface (SPI) in the library, and an example that interfaces to temperature sensor with a SPI port (silent video, WMV, 3:21 minutes, chap10/{ds1722_spi_tempsense.mcp}.
  • Discusses support for the Inter-Integrated Circuit (I2C) bus in the library, and an example that interfaces to temperature sensor with an I2C port (silent video, 3:22 minutes, chap10/{ds1631_i2c.mcp}.
  • Demos a simple usage of the analog-to-digital converter (silent video, WMV, 1:29 minutes, chap11/{adc_test.mcp}.
  • An introduction to the data transfer protocol, useful to debug your program.

Library Internals

  • Discusses the directory organization of the PIC24 code examples and bootloader (3:28 minutes), embedded flash.
  • Discusses configuration of the C code library via macros in pic24_libconfig.h (7:05 minutes), embedded flash. Talks about the CLOCK_CONFIG, DEBOUNCE_DLY, SERIAL_EOF_DEFAULT, DEFAULT_UART, DEFAULT_BAUDRATE, and heartbeat configuration macros. Also looks at the macros that select between interrupt-driven I/O code versus polled I/O code for the UART modules.
  • Discusses in more detail how the CLOCK_CONFIG macro selects a clock configuration function at compile time (5:55 minutes), embedded flash. It is recommended that you view the library configuration video (embedded flash) first.
  • This video (9:35 minutes, embedded flash) discusses the library functions configHeartbeat() and printResetCause() which are called by the configBasic() function that is included at the start of the main() function for most of our examples.