General intro to PIC16, PIC18 and ATMEGA microcontrollers by Microchip. This includes the PIC16F1. A nice overview of the PIC16F1 with respect to the other PIC processors is available at WikiBooks.
Programming tutorials for the 8bit pics:
- The XC8 2.0 compiler guide (#DS52053B; long but really complete; Appendix A has good function / macro list)
- Programming and debugging 8bit PICs in MPLAB X.
- C Programming on Microchip's Wiki
- MPLAB X programming in C for low-end PICs tutorials.
PIC16f84a (one of the simplest PICs).
- The databook on the PIC16F84 (#D35007B)
- Good overviews: Microchip & Wikipedia.
- "Easy PIC'n" book by Benson (1999 in Assembler): Free eBook (PDF, text, etc.). Benson distills the databooks with an experienced, reasoned voice. He talks about hardware and programming using Assembler. It's a product of the time (20 years ago... 1999) and so there's nothing about using C or MPLAB X. However, it's got just the right level of detail for you to be able to put together a single-chip breadboarded computer, with simple I/O.
- Interrupts tutorial on the PIC16f84a
- A step-by-step PIC16f84a and assembler tutorial.
- Another PIC16f84a series of tutorials (PDF).
- Fundamentals of the PIC16f84a.
- A book on the PIC16f84a and assembler (2004)
- Using the PICKit 3 with the PIC16f84a.
- Tutorial on the PIC16f84a by Roland of Teach Me Micro
- What is a PIC Microcontroller?
- Introduction to Assembler, Registers and Banked Memory
- Inputs and Outputs in Assembler and C
- Interrupts
- Timers
- USART with a different PIC16
- SPI with a different PIC16
- PWM with a different PIC16
- ADC with a different PIC16
- PIC assembler macros by Chuck McManis.
- Discussion of Bank 0 and Bank 1
The "enhanced mid-range" processors like the PIC16F1:
- Intro to the PIC16F1 (presentation/overview)
- Video of the new instructions for the PIC16F1, including indirect addressing.
- Example of using the PIC1xF1xxx new instructions in filters, etc.
- The "elusive" instruction set for this enhanced PIC16: https://web.archive.org/web/20201022095847/https://microchipdeveloper.com/8bit:emr-instruction-set
MPLAB X is a contemporary IDE with excellent tools for programming and debugging:
- Intro video to MPLAB X.
- Simulator: Microchip Developer Page; Intro video;
- Debugging: Microchip Developer Page; Disassembler View;
The PIC16 Curiosity board by Microchip is a really interesting development platform. It's a little confusing trying to figure out the pin functions, in no small part due to the datasheet for the PIC16F1619 not giving a straight-forward pin-out diagram. Digging around in the datasheet and using Lucio DiJasio's helpful diagram, I've come up with the following pinout that I may use in class:
For the AVR
- Intro video to setting up an AVR ATMEGAs in MPLAB X project.
- Video on the "Input/Output View" for ATMEGAs in MPLAB X.
For the SAMD (to be filed elsewhere later)
- Debugging tutorial (using Atmel Studio).
- CMSIS standard @ Keil for Cortex M0/M0+ and others.
- Download from GitHub.
James Andrew Smith is an associate professor in Electrical Engineering and Computer Science Department in YorkUniversity's Lassonde School. He lives in Toronto, Canada. While on sabbatical in 2018-19 with his wife and kids he lived in Strasbourg, France and taught at the INSA Strasbourg and Hochschule Karlsruhe and wrote about his personal and professional perspectives. You can find him on Twitter.