Microcontrollers: From Assembly Language to C Using the PIC24 Family

This site introduces students, educators, and hobbyists to the capabilities of a powerful modern microcontroller, the Microchip PIC24.


Microcontrollers: From Assembly Language to C Using the PIC24 Family covers a broad range of topics in a straightforward, conversational style accessible to students and hobbyists alike. Topics include PIC24 assembly language programming and hardware interfacing using the C language. The text introduces the PIC24 library collection and contains an extensive set of examples carefully explained in the text. The text then presents ESOS, a low-overhead operating system for the PIC24 and provides a capstone design chapter in which the designs of an audio record/playback system, reflow oven and a remote-controlled robot are presented. The book is available from Delmar Learning. A video tutorials page is also available that contains selected topics from the book.




                
The PIC24 library collection accompanying the text provides a tested, well-documented set of libraries illustrated by numerous examples which simplify many common programming tasks for the PIC24. The getting started guide provides all information necessary to get your PIC24 system up and running. With an operational system, the PIC24 support library
provides support for all major subsystems of the PIC24. The ESOS library contains a low-overhead, cooperative OS.





                                          
The ECE3724 course on microprocessors features on-line lecture notes and lab experiments which cover major portions of the text, including four assembly labs and 6 hardware labs, including experiments with a digital thermometer and fan speed control.




News

  • 8-Dec-2017: The code archive is updated, providing some bug fixes and cleanup. See the release notes for more details.
  • 1-Dec-2017: The code archive is updated, providing some bug fixes and cleanup. See the release notes for more details.
  • 23-Oct-2015: The code archive is updated, providing some bug fixes and cleanup. See the release notes for more details.
  • 3-Mar-2014: The code archive is updated, providing some bug fixes and cleanup. See the release notes for more details.
  • 9-Jul-2013: A new, beta release containing major updates to the code archive in the PIC24 library collection is available, featuring preliminary MPLAB X support, redesigned GPIO macros, and much more. See the release notes for more details.
  • 1-29-2013: Here are some notes on the flipped classroom approach that we use in our ECE3724 course.
  • 15-Aug-2012: There are more video lectures available for our ECE3724 course and more will be added as the Fall 2012 semester progresses.
  • 22-Mar-2012: The code archive has been updated to provide initial support for the PIC24E/dsPIC33E families, as well as some some bug fixes and cleanup. See the release notes for more details. This page discusses some of the differences between the PIC24H and PIC24E families.
  • 1-Mar-2012: The code archive is updated, providing some bug fixes and cleanup. See the release notes for more details.
  • 25-Aug-2011: The code archive is updated, providing some bug fixes and cleanup. See the release notes for more details.
  • 12-Apr-2011: The code archive is updated, adding support for two additional hardware platforms. See the getting started page for currently supported platforms and the release notes for more details.
  • 8-Apr-2011: The code archive is updated with a number of improvements and some significant changes. The common/, include/, and lkr/ directories have been moved to lib/common/, lib/include/, and lib/lkr/. All project files in the library have been updated with these new paths; use these as a template to upgrade your current projects.
  • Jan. 2011: The examples in the code archive have been updated so that all examples link with V3.25 of the MPLAB C Compiler for PIC24 and dsPIC in LITE mode. A few examples used printf statements with floating point formats, and these no longer link on devices with only 2K RAM (printf format strings are built in data memory) as the printf data buffer reserved by the compiler has greatly increased in this compiler version. On CPUs with greater than 2K RAM  the code examples work the same as before; on CPUs with 2K RAM (such as the PIC24HJ32GP202)  conditional compilation is used to select code that only uses printf statements with integer formats for output strings. Most of the affected code is in Chapter 11, such as chap11/adc2pots1.c or chap11/adc_test.c. The code update also includes a user-submitted fix for the Bully Bootloader when loading software greater than 64K (thanks John N. and Vaifro D.!).  Microchip has promised a fix for the printf data RAM buffer usage, and the printf code changes in the examples will be backed out once that fix is released.

PIC24 Assembly-to-C Book