A goldmine for the PIC programmer

Thread Starter


Joined May 11, 2009
I guess many in the forum know about the "Compiled Tips ‘N Tricks Guide" That is free documents full of golden nuggets for the PIC user. It will help you get most out of your 8 bit PIC MCU. It explain the the different methods and tricks in detail. Rather than giving program examples. So it will be very helpful to all who use PIC MCUs. It is about 137 pages long. If you have not read it yet. Give it a try. Ideal for students
A programmer is useless, unless he/she are able to utelize the power of the availible tools. And herby be able to debug and simulate code. The hobbyist may not have accsess to fancy (and expensive) hardware debugging tools. But the fact is that many errors can be tracked down with the software simulator tool named MPLAB SIM.
Microchip do have something named Webseminars. The are located here http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2795 Sorry to say but the selection menue is very awkward to use and select from. I have compiled a list. That I think will be useful for the MPLAB novice. The list include both using MPLAB and debugging. Start on top of the list and work yourself downwards. My last tips for the beginner. Then you are starting on a new project. Always use the project wizard in MPLAB. Never program without confering with the datasheet. Keep attention to details.
http://www.youtube.com/watch?v=py6s0ivnlmY :D
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2813&dDocName=en528144 (Introduction to MPLAB IDE)
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2813&dDocName=en542701 (Introduction to the MPLAB SIM Software Simulator)
http://www.youtube.com/watch?v=HwdllrufnOA (Using Asynchronous Stimulus with the MPLAB Simulator video only at this moment)
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2813&dDocName=en542928 (Using Stimulus for Algorithm Verification with the MPLAB IDE Simulator)
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en534868 (Roadmap and downloads links for the Microchip owned brands of C compilers)
Last edited:


Joined Aug 24, 2008
Thanks to6. That is a goldmine. I studied microprocessors at the university, using the M68000, but I've never played with microcontrollers. I bought a PicKit 3 and I was enthusiastic at first, then I realized I had to learn C and MPLAB IDE, and I got slowed down. I have yet to make an LED turn on and off. But I keep working at it. ;)


Joined Feb 19, 2009
That is a great source of some information that would otherwise take a lot of datasheet reading to find out!

PRS, Try out SourceBoost C, I posted the code to make a blinking LED in the other thread on that topic currently in Embedded Systems, I think. I even included a .hex file for 16F627 stupidbot.


Joined Aug 24, 2008
Thanks for the tip. This morning I just went over the examples using MP-LAB C18, which is free in the student version. It includes a program that blinks an LED. I've looked over the data sheet for PIC18f45k20, which is on a board that came with PIC-KIT 3 and I am in awe. I'll never go back to microprocessors! For 70 bucks I got a complete development system. For me it's like Christmas. ;)


Joined Apr 5, 2008


Joined Aug 24, 2008

Microchip has a lot of application notes.
Here is the browse page:

I have here the links for the two application notes:

Also AN607 can be handy (power-up trouble shooting):

Microchip seems to be the king of the micro-controller industry. They seem to be to micro-controllers what Intel and Microsoft are to home computers. I'll check out your links. Thanks.

Potato Pudding

Joined Jun 11, 2010
Im glad somebody mentioned getting stalled on their PIC progress.

Documentation for Microchip is thorough. A single datasheet can be easily over 300 pages and they have a lot of controller families available. Doing some ballpark figures Microchip have more than 10000 pages of current documentation - updated regularly. The 16F887 family datasheet for my 44 pin dev/demo board is at version F!

Look at their website and you can find tutorial videos and nuggets like their circuity sim Mindi - which is pretty good.

The application notes?
TB081 - Soft-Start Controller for Switching Power Supplies using a PIC10F
TB079 - Programming Baseline Flash Devices with PICkit(tm) 1
TB050 - Monitoring Multiple Temperature nodes using TC74 and PIC16C505
TB029 - Complementary LED Drive
TB028 - Technique to Calculate Day of Week
TB013 - How to Implement ICSP Using PIC16CXXX OTP MCUs
TB008 - TechBrief Tranformerless Power Supply

PICREF-4 - PICDIM Lamp Dimmer for the PIC12C508
AN1104 - Capacitive Multibutton Configurations
AN1103 - Software Handling for Capacitive Sensing
AN1101 - Introduction to Capacitive Sensing
AN1095 - Emulating Data EEPROM for PIC18 and PIC24 MCUs dsPICDSCs
AN1094 - Bootloader for dsPIC30F/33F and PIC24F/24H Devices
AN1071 - IrDA Standard Stack for Microchip 16-Bit MCUs
AN1066 - MiWi Wireless Networking Protocol Stack
AN1050 - Increase the Frequency Resolution\PIC MCU
PWM Modules
AN1045 - Implementing File I/O Functions Using Microchip’s Memory Disk
Drive File System Library
AN1035 - Designing with HV Microcontrollers
AN1003 - USB Mass Storage Device Using a PIC MCU
AN1000 - Using the MSSP Module to Interface SPI Serial EEPROMs with
PIC18 Devices
AN995 - Using the C18 Compiler and the MSSP to Interface SPI EEPROMS
with PIC18 Devices
AN991 - Using the C18 Compiler and the MSSP to Interface I2C EEPROMS
with PIC18 Devices
AN989 - Using the MSSP Module to Interface I2C Serial EEPROMs with
PIC18 Devices
AN982 - Interfacing I2C Serial EEPROMs to PIC10 and PIC12 Devices
AN979 - Interfacing I2C Serial EEPROMs to PIC18 Devices
AN976 - Using the MSSP Module to Interface I2C Serial EEPROMS with
PIC16 Devices
AN974 - Interfacing I2C Serial EEPROMs to PIC® Microcontrollers
AN964 - Software PID Control of an Inverted Pendulum Using the PIC16F684
AN951 - Amplifying High-Impedance Sensors – Photodiode Example
AN940 - Interfacing the TC72 SPItm Digital Temperature Sensor to a PICmicro
AN938 - Interfacing the TC1047A Analog Output Temperature Sensor to a
PICmicro Microcontroller
AN913 - Interfacing the TC77 Thermal Sensor to a PICmicro Microcontroller
AN910 - PICmicro Device Programming: What You Always Wanted to Know (But
didn’t know who to ask)
AN907 - Stepping Motors Fundamentals
AN906 - Stepper Motor Control Using the PIC16F684
AN905 - Brushed DC Motor Fundamentals
AN897 - Thermistor Temperature Sensing with MCP6S2X PGA
AN893 - Low-Cost Bidirectional Brushed DC Motor Control using the PIC16F684
AN892 - Fail-Safe Monitoring and Clock Frequency Switching using the
AN879 - Using the Microchip Ultra Low-power Wake-up Module
AN874 - Buck Configuration High-Power LED Driver
AN871 - Using the TC72 and TC77 Temperature Sensors
AN867 - Temperature Sensing with a Programmable Gain Amplifier
AN850 - Inductively Coupled Thermistor
AN847 - RC Model Aircraft Motor Control
AN844 - Simplified Thermocouple Interfaces and PICmicro® MCUs
AN820 - System Supervisors in ICSP™ Architectures
AN826 - Crystal Oscillator Basics and Crystal Selection for rfPIC and
PICmicro® Devices
AN740 - Decoding the HCS101 for Non-Secure Applications
AN727 - Credit Card Reader Using PIC12C509
AN720 - Measuring Temperature Using the Watch Dog Timer (WDT)
AN712 - RS-232 Autobaud for the PIC16C5X Devices
AN709 - System Level Design Considerations
AN700 - Make a Delta-Sigma Converter Using a Microcontroller's Analog
Comparator Module
AN693 - Understanding A/D Converter Performance Specifications
AN690 - I2C™ Memory Autodetect
AN686 - Understanding and Using Supervisory Circuits
AN685 - Thermistors in Single Supply Temperature Sensing Circuits
AN679 - Temperature Sensing Technologies
AN670 - Floating Point to ASCII Conversion
AN669 - Embedding Assembly Routines into C Language Using A Floating Point
Routine as an Example
AN665 - Using KEELOQ to Generate Hopping Passwords
AN660 - Floating Point Routines
AN657 - Decoding Infrared Remote Controls Using a PIC16C5X Microcontroller
AN656 - In-Circuit Serial Programming of Calibration Parameters Using
PICmicro® Microcontrollers
AN655 - D/A Conversion Using PWM and R-2R Ladders to Generate Sine and
DTMF Waveforms
AN654 - PWM, A Software Solution for the PIC16CXXX
AN643 - Adaptive Differential Pulse Code Modulation using PIC®
AN617 - Fixed Point Routines
AN607 - Power-up Trouble Shooting
AN606 - Low Power Design Using PICmicro® Microcontrollers
AN597 - Implementing Ultrasonic Ranging
AN595 - Improving the Susceptibility of an Application to ESD
AN593 - Serial Port Routines Without Using Timer Ø
AN592 - Frequency Counter Using PIC16C5X
AN588 - PICmicro® Microcontroller Oscillator Design Guide


Potato Pudding

Joined Jun 11, 2010
Continued (and this list is actually out of date so look for more)

AN586 - Macros for Page and Bank Switching

AN581 - Implementing Long Calls
AN580 - Using Timer1 in Asynchronous Clock Mode
AN575 - IEEE 754 Compliant Floating Point Routines
AN566 - Using the PORT B Interrupt on Change as an External Interrupt
AN556 - Implementing a Table Read
AN555 - Software Implementation of Asynchronous Serial I/O
AN554 - Software Implementation of I2CT Bus Master
AN552 - Implementing Wake-up on Key Stroke
AN546 - Using the Analog to Digital A/D Converter
AN541 - Using a PIC16C5X as a Smart I2CT Peripheral
AN535 - Logic Powered Serial EEPROMs
AN531 - Intelligent Remote Positioner (Motor Control)
AN529 - Multiplexing LED Drive and 4x4 Keypad Sampling
AN528 - Implementing Wake-up on Key Stroke
AN527 - Software Stack Management
AN526 - PIC16C5X/PIC16CXXX Utility Math Routines
AN522 - Power-Up Considerations
AN521 - Interfacing to AC Power Lines
AN519 - Implementing a Simple Serial Mouse Controller
AN515 - Communicating with the I2C™ Bus Using the PIC16C5X
AN514 - Software Interrupt Techniques
AN513 - Analog to Digital Conversion Using a PIC16C5X
AN511 - PLD Replacement
AN510 - Implementation of an Asynchronous Serial I/O
AN258 - Low Cost USB Microcontroller Programmer (the building of the
PICkit 1 Flash Starter Kit)
AN239 - Bit Banged LIN Slave Node for PIC16 & PIC18
AN236 - X-10 Home Automation Using the PIC16F877A
AN217 - KEELOQ HCS30X, HCS200 Stand-Alone Programmer
AN216 - DC/DC Converter Controller Using a PICmicro Microcontroller


Joined Aug 24, 2008
Microchip is very good at documenting their products and illustrating them with examples. I'm in awe, quite frankly. I had to go to the Microchip website to fetch a download of C18 and I saw all of this documentation.

I feel like I did when at the university, overwhelmed with concepts I had never even imagined. But I like the feeling and I know that if I keep studying I'll eventually become a microcomputer guy.

I used to play with microprocessors, esp. the M6800 8 bit chip and its supporting hardware. Now it's obsolete! I even developed a general purpose computer and had modeled a math emulator using floating point algorithms using Microsoft's MASM and its IDE. But I never did rewrite the emulator for the 6800 uproc. This was a hobby and I lost interest in it when I got severely depressed. Story of my life.

Microchip and the Pickit I bought has revived this interest. I feel like a dinosaur when I read over the manuals and realize how much power is in a modern micro-controller.


Joined Aug 24, 2008
Comparing any company to Microsoft is about the highest insult one can throw.
I agree with you. I had the experience of talking with Microsoft technicians for about 3 months before they got to the bottom of my early version of Vista's problems. I think Microsoft jumped the gun with Vista and put it on the market before it was really ready. But it works just fine now, so I'm happy.

However, I participate in another forum, and in an economics thread dealing with monopoly I brought up the issue of Microsoft's near monopoly with regard to the operating system. I offered up the idea that there should be a universal operating system agreed upon by the nations just like any other standard. I think some copyrights are merely legal fictions, and this is a good case for it. What if someone had a copyright on the Metric System and charged for its use? There are many many cases of universal codes and standardizations such that a universal OS for computers is not that unusual an idea.


Joined Jan 6, 2004
Microchip is very good at documenting their products
Their datasheets are not all exactly right. An example: the 18F4585 has the access to CAN-specific register messed up and misdescribed.

It took me several entries to a ticket and more than 1 month to get an incomplete answer on the matter. ("The guy who knows is in vacations...")

BTW, sorry to tell this here but transcribing the list of TBs and ANs is pretty useless. When you want to see what they have on a certain subject you go to heir site.

Why to duplicate?
Last edited:

Potato Pudding

Joined Jun 11, 2010
The application notes list was mostly an example of how much documentation they have available. I was suggesting that the readers try to find the PIC information they are looking for by checking the Microchip website.

I also mentioned that the posted list was not complete and you should check for more Application notes and Tech Briefs.

I know that having the list here is not that useful on its own.

Potato Pudding

Joined Jun 11, 2010
Their datasheets are not all exactly right. An example: the 18F4585 has the access to CAN-specific register messed up and misdescribed.
Their silicon can have errors - not just their datasheets.

I would be interested to know how your problem turned out or if maybe your PIC had been beamed to silicon with a buggy mask. Some times the datasheets might be vague because of silicon with issues that won't behave if you were ngiven the full instructions. That is more likely if your PIC was still in the yellow early adopters phase.

I don't know when the problems you described occurred - because if you are like me then a problem from years ago, would still not be forgotten.

Thread Starter


Joined May 11, 2009
The application notes list was mostly an example of how much documentation they have available. I was suggesting that the readers try to find the PIC information they are looking for by checking the Microchip website.

I also mentioned that the posted list was not complete and you should check for more Application notes and Tech Briefs.

I know that having the list here is not that useful on its own.
I kind of agree with atferrari. I think it would be more useful to just post say this link. http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1431
Then perhaps give the link to some notes that you have used and found worth to recommend to others.