Your shopping cart is empty!
Introduction to mid-range (14-bit) PICs, using C (XC8) and assembly language.
These initial mid-range PIC lessons, available as a free download, follow on from the baseline PIC tutorials and begin by using assembly language to introduce the mid-range (14-bit) PIC architecture and peripherals.
A second series of introductory lessons goes on to show how to program mid-range PICs in C, using the Microchip XC8 compiler.
The complete mid-range PIC tutorial series is available for purchase here.
But to get the most out of these lessons, you should purchase the Baseline and Mid-Range PIC training board, which was designed to complement these tutorial series.
The following lessons are included:
Assembly language lessons |
C lessons |
| 1: Basic Digital Output Introducing the PIC12F629 Using delay loops to flash an LED |
1: Basic Digital I/O Introducing XC8 Using delay loops to flash an LED, reading and debouncing simple switches, and using weak pull-ups |
| 2: Writing Modular Code Subroutines, relocatable modules, memory banking and paging |
|
| 3: Reading Switches Internal pull-ups, reading and debouncing simple switches |
|
| 4: Timer0 Using Timer0 for event timing, delays, debouncing and as a counter |
2: Timer0 Using Timer0 for event timing, delays, debouncing and as a counter (with an example of C macros) |
| 5: Assembler Directives and Macros MPASM expressions, macros and conditional assembly |
|
| 6: Introduction to Interrupts Interrupt service routines, timer and external interrupts, debouncing |
3: Introduction to Interrupts Interrupt service routines, timer and external interrupts, debouncing |
| 7: IOC, Sleep Mode and the Watchdog Timer Using interrupt-on-change, sleep mode, and the watchdog timer |
4: IOC, Sleep Mode and the Watchdog Timer Using interrupt-on-change, sleep mode, and the watchdog timer |
| 8: Reset, Power and Clock Options Oscillator (clock) modes, power-on reset and brown-out detection |
5: Reset, Power and Clock Options Oscillator (clock) modes, power-on reset and brown-out detection |
(also available for separate purchase)
Assembly language lessons |
C lessons |
| 9: Analog Comparators, part 1 Using the single comparator module and programmable voltage reference on the PIC12F629 |
6: Analog Comparators Using the single and dual comparators and programmable voltage reference on the PIC12F629 and PIC16F684 |
| 10: Enhanced Features of the PIC16F684 Introduction to the PIC16F684, and some of its enhanced features, including additional internal oscillator modes and ultra low-power wake-up |
|
| 11: Analog Comparators, part 2 Using the dual comparator module and programmable voltage reference on the PIC16F684 |
|
| 12: Driving 7-Segment LED Displays Single and multiple 7-segment displays, interrupt-driven multiplexing, lookup tables and binary-coded decimal (BCD) |
7: Driving 7-Segment Displays Single and multiple 7-segment displays, lookup tables and interrupt-driven multiplexing |
| 13: Analog-to-Digital Conversion Using the analog-to-digital converter (ADC) module, ADC interrupts and operation in sleep mode |
8: Analog-to-Digital Conversion and Simple Filtering Analog-to-digital conversion (ADC) and using arrays and simple integer expressions to calculate a moving average |
| 14: Arrays and Long Integer Arithmetic Indirect addressing using FSR, multi-byte addition and subtraction and 8x8-bit and 8x16-bit multiplication |
|
| 15: Timer1 Using Timer1 as a general 16-bit timer/counter, with an external watch crystal, operation in sleep mode, and digital and comparator gate control |
9: Timer1 Using Timer1 as a general 16-bit timer/counter, with an external watch crystal, operation in sleep mode, and digital and comparator gate control |
| 16: Timer2 Using Timer2 as a simple 8-bit timer, with period register and postscaler, to generate a specific interrupt time-base |
10: Timer2 Using Timer2 as a simple 8-bit timer, with period register and postscaler, to generate a specific interrupt time-base |
| 17: CCP, part 1 - Capture and Compare Using the CCP module's capture and compare modes to measure signal and pulse widths and to trigger precisely timed events, including periodic analog sampling |
11: CCP, part 1 - Capture and Compare Using the CCP module's capture and compare modes to measure signal and pulse widths and to trigger precisely timed events, including periodic analog sampling |
| 18: CCP, part 2 - PWM Using the CCP module's pulse-width modulation (PWM) modes for tasks including tone generation, LED dimming and bi-directional brushed DC motor control |
12: CCP, part 2 - PWM Using the CCP module's pulse-width modulation (PWM) modes for tasks including tone generation, LED dimming and bi-directional brushed DC motor control |
| 19: EEPROM Initialising, reading and writing data stored in EEPROM memory for long-term retention when the PIC is powered off |
13: EEPROM Using XC8 macros, functions and EEPROM variables to initialise, read and write data stored in EEPROM memory (for long-term retention when the PIC is powered off) |