Home     Contact     Projects     Experiments     Circuits     Theory     BLOG     PIC Tutorials     Time for Science     RSS     Terms of services     Privacy policy  
 Home      Projects     Experiments     Circuits     Theory     BLOG     PIC Tutorials     Time for Science   

Choosing the right PIC

Choosing a PIC according to your needs is sometimes a headache. There are people of course that hate headaches and therefore they use just 2-3 types of PICs and that's all. That is a solution of course, absolutely inefficient though.

The selection needs to have some criteria. Those criteria come along with the type of application you have in mind to make. That is the reason why i cannot set a numbered list of choosing criteria from highest to lowest, but i can only think a list of them. Within this list, all items are equal to each other.

Now, let's see what should be your considerations when choosing the right PIC:

The bit length of the PIC:

You can choose between 8, 16 and 32 bit micro controllers. My advice is to choose the smallest possible. If you do not have to deal with large numbers, larger than 8-bits, then you should stick with the 8-bit family. If you need to measure pulses for example that would exceed the 8-bits, then there are ways to do this with -bit uControllers. Some of them are equipped with one or more 16-bit counter/timers that does the job easy. Also, you may use two or more 8-bit bytes to represent a larger number. What i want to say is that you should always try to use the simplest one for your job. It is cheaper after all.

The memory size:

One word: The more, the better. The only frontier here is the price. Strangely (not really), Microchip has a pricing policy that may surprise you. You may find for example a PIC that has small memory and fewer capabilities from another one, but instead of being cheaper it is more expensive. I suppose that this comes with the selling quantities. More memory does not always mean more money.

Keep in mind that there are actually 3 types of basic memories within one PIC. First the programm memory. It is usually 1 to 32 K Bytes. This part of memory will hold the program itself. If you are thinking of a long assembly sheet, think also of a long program memory.

The second type is the RAM. This is usually 1K Byte but it can get some wild numbers! Especially in 32bit systems that can have up to 32KBytes of RAM. This memory is used for temporarily storing variables and parameter values. This memory, like the RAM of the PC, will blank each time the power of the PIC is turned off.

The third type is EEPROM memory. This is the "Hard Disk Storage" of your PIC. This memory is read and written using a specific program flow and the values stored there are kept even if the PIC is completely out of power. The size is up to 4K and it has a negative effect to the price of the PIC. Use those bytes wisely.

The pin count:

Although i said on the beginning that all the items are equally between them, the pin count of a PIC is usually the first and most important that will determine the selection. there are tiny 4 I/O ports PICs, and some titans with 85 I/O ports! The price is analog to the ports of course. The most common are the 16 I/O (18 pins) pics and the 38 I/O (40 pins). You should keep in mind that there are ways to expand the I/O ports with SIPO and PISO blocks by using just 3 ports of the PIC.

The maximum frequency:

Up to 120MHz is the frequency that those beauties can reach. A standard 20Mhz though, is usually enough for an amateur and an advanced person. You need to have in mind that the fastest the clock, the faster the program flows. There are plenty of situations that a fast clock is completely inappropriate. If for example you make an RPM meter for slow turning motors or PC fans, then you will discover that the clock should be slow to avoid unnecessary divisions and avoid big numbers. It may not make any sense to you right now. If it does not indeed, then just go for a 4 to 20MHz PIC.

Along with the maximum external clock of the PIC, comes also the internal oscillator. This is an internal oscillator that some PICs are equipped with. Using this feature, the PIC can work with no external crystal or other oscillator. This saves space on the PCB, money on the construction and of course it saves power. This is usually a 32KHz clock but can go up to 32MHz in some cases. Although it cannot achieve the fidelity of a quartz, i advise to use it whenever this is possible.

The debugging feature:
I have used several different cheap and not so cheap PIC programmers. Right now, i use an ICD 2.2. This programmer is compartible with the MPLAB debug feature. The PIC16F88 supports this debugger. The debugging is sometimes a life-jacket during a boat sinking. Although it is a S-L-O-W procedure, although sometimes it is technically impossible to debug, i must admit that it has saved me plenty of hours laying face to face with the monitor. For a beginner, i vote YES. If your budget permits that, select one of the possible PIC programmers that are also debuggers and compartible with MPLAB. And if you respect your time, choose a USB one and not a parallel port programmer. Here is a good beginning to your search:

Microchip ICD 2 programmer / Debugger

Communication, analog and digital peripherals:

I've kept the best part for the end. Almost every PIC has at least one of those features embedded. If you are thinking of using them, then this will be the number #1 search criteria. Here is a list of those features, so you know with what you're dealing with:

    Analog Peripherals
    • Analog comparator
    • Analog to digital converter
    • Digital to analog converter
    Digital Communication
    • UART
    • USART
    • AUSART
    • SPI
    • I2C
    • CAN BUS
    • USB
    Other peripherals
    • Capture/Compare PWM features
    • LCD driver
    • Quadrature Encoder Interface

Hopefully, i have not forgotten any...

So, if you are thinking of dimming 8 LEDs with different intensity simultaneously, then you should consider getting a PIC with 8 PWM outputs.

The timers:

Inside every PIC, there is at least one timer/counter. These are modules used to measure pulses from several sources. They could measure pulses from an encoder, from an rtc, from the engine distributor, from the PIC's clock itself... Those timers are 8, 16 or 32 bit length. An 8 bit micro controller does not mean that it will only have 8-bit timer. This is not true. An 8-bit uController may have up to 3 16-bit timers inside, along with some 8-bit timers. But no 8-bit PIC has a 32-bit timer.

Selecting a PIC using this parameter as criteria, require experience. Therefore, if you are an amateur, just leave this feature aside. One 16-bit counter for an 8-bit PIC is far enough for your starting projects.

It's not that bad after all
... as you may have already thought. Yes, there are thousands of PICs. Yes, each one may be used for sophisticated applications. yes you need to gain experience before being a PIC-selector guru. But Microchip has make a big step forward. They recently introduced the MAPS. It means Microchip Advanced Part Selector. What it does, is that you enter your criteria, and it returns the available PICs that fits to your needs, along with the datasheets and a budgetary pricing. You can find the MIPS at the following link:

Microchip Advanced Part Selector (MIPS)

I must say that this tools is WOW!

Previous page ---- Next page

Go back to the book contents

Go to the discussion forum of this book




  Email (shall not be published)


Notify me of new posts via email

Write your comments below:
BEFORE you post a comment:You are welcome to comment for corrections and suggestions on this page. But if you have questions please use the forum instead to post it. Thank you.


  • At 30 December 2014, 13:25:08 user Giorgos Lazaridis wrote:   [reply @ Giorgos Lazaridis]
    • @CDRIVE Hello Chris, thank you for the comment. There are many more issues that I want to resolve with this tutorial. As you will notice, I've written only the first part. That is because i stopped to re-write the transistor PDF. You see, I gained more experience in writing during writing (...) which is normal. So, when I began writing the PIC tutorial i noticed how bad was the transistor tutorial, and went back to re-write the whole thing from the beginning.
      And this is what i plan to do with this PIC tutorial. I'm trying to find a way to make days last 32 hours because 24 are just not enough. I cannot further reduce my sleeping hours because it is already down to minimum.
      So keep on posting your suggestions and I will take everything into account when I make the PDF version of the PIC tutorial.

  • At 30 December 2014, 13:18:15 user CDRIVE wrote:   [reply @ CDRIVE]
    • Hello and thank you for the PIC Tutorial.

      I'm a retired engineering tech that did quite a bit of tech writing over the years. I was quite excited to find this valuable resource but I do have some suggestions. The learning curve can be severely hampered when the reader has to stop, bring up Google and search for terms that you printed but didn't define.

      An example of this can be found on the page "Choosing The Right PIC". Within the sub-heading "The Pin Count", you make note of SIPO and PISO blocks but do not define what they are. Consequently I had to Google those acronyms, thus disrupting my rhythm. Stopping and posting this isn't helping either. I want to learn, so I probably won't comment again until I've read through the tutorial completely.


  • At 23 September 2014, 10:42:06 user Arnab Biswas wrote:   [reply @ Arnab Biswas]
    • PLZ sugest me a pic UC with 40 pins which consists of all the above features. Plz sugest them ASAP.

  • At 24 August 2014, 4:57:36 user sachin pathade wrote:   [reply @ sachin pathade]
    • thanks....I choose a perfect microcontroller for my project....!

  • At 9 May 2014, 8:22:34 user billbo wrote:   [reply @ billbo]
    • i am very dissapointed with the organisation of this website and i think you should be punished and punished serverly

  • At 28 September 2013, 8:23:20 user kiranvarma - npeducations wrote:   [reply @ kiranvarma - npeducations]
    • wow this was a good work on pic thanku for this....

  • At 2 July 2011, 10:41:58 user birdmun wrote:   [reply @ birdmun]
    • You mention in the peripherals section, you hope you haven't missed anything. You have recently posted a project using the new-ish capacitive touch hardware. Maybe something to add?

  • At 28 March 2011, 18:10:58 user aaron wrote:   [reply @ aaron]
    • thanks for this site. I can now study about PIC microcontrollers...I just hope that I will obtain sufficient knowledge to construct a project.

  • At 22 March 2011, 8:26:18 user Kammenos wrote:   [reply @ Kammenos]
    • @Wally the program memory is the place where the program is placed, and NOT the EEPROM. The data memory is where the RAM and the special registers are placed. The EEPROM (which not all PICs have), is a relatively small amount of EPROM memory where user can save values that will remain unchanged even if the chip has no power. Read more:

  • At 21 March 2011, 21:54:34 user Wally wrote:   [reply @ Wally]
    • What is the difference between program memory and eeprom? I understand that you store your code in EEPROM, and it uses the RAM for processing. But what does program memory do then?

  • At 24 February 2011, 11:34:21 user vikas wrote:   [reply @ vikas]
    • Hi,

      Thanks for the beautiful tutorial. How ever I am not able to find PIC16F88. I am able to get 16F628A,PIC16F630, PIC16F72, PIC16F84A and 16F877A.

      Which one should I buy as an alternative?


  • At 28 September 2010, 14:21:43 user ever wrote:   [reply @ ever]
    • It quite refreshing to know that there are sites dedicated to giving detailed information because i'm desing a projet with the pic16F84A microcontroller.i'l say more as i find out more.Thanks for the support.

    No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise without the prior written permission of the author.

    Read the Disclaimer

    All trademarks used are properties of their respective owners.
    Copyright © 2007-2009 Lazaridis Giorgos.
    All rights reserved.

     HOT in heaven!

  • Disclaimer
  • Book Contents
  • Discussion forum

  • Basics
  • What will you need
  • Choosing the right PIC
  • The MPLAB
  • Getting familiar with the MPLAB environment
  • Creating a new project
  • Open and close projects
  • Creating new files and including them in the project
  • Your very first assembly program
  • Compile a program and transfer to the PIC
  • Section 1: Beginner's theory
  • Memory Organization
  • The Data Memory Organization
  • The Program Memory Organization
  • The instructions
  • General knowledge about instructions
  • Value Loading Instructions
  • Program Flow Instructions
  • Mathematic Instructions
  • Logic Function Instructions
  • Bit Orientated Instructions
  • Byte Orientated Instructions
  • Miscellaneous Instructions
  • The Basic Special Function Registers
  • The Status Register
  • The Option_Reg Register
  • The TRIS and PORT registers
  • Beginner's PIC Tutorials
  • How to use our PIC Tutorials
  • A Pushbutton turning an LED on and off
  • A Simple LED Flasher
  • Interfacing Multiple Switches - The internal Pull-Up resistors
  • An LED Sequencer
  • Interface a Single 7seg Digit
  • Interface Multiple 7seg Digits
  • A 3-digits Decimal Counter
  • A Clever Button
  • Section 2: Intermediate theory
  • Instruction Cycle Duration and Calculated Delays
  • The Timer Modules - Timer0
  • The Timer Modules - Timer1
  • The Timer Modules-Timer2

  • NEW in heaven!

    New Theory: AC electric motor working principle

     Contact     Forum     Projects     Experiments     Circuits     Theory     BLOG     PIC Tutorials     Time for Science     RSS   

    Site design: Giorgos Lazaridis
    © Copyright 2008
    Please read the Terms of services and the Privacy policy