Difference Between Microcontroller Families
8051 - 8 bit micro based on CISC architecture ( Complex Instruction Set Computer)
PIC - 8 bit micro based on RISC architecture ( Reduced Instruction Set Computer)
AVR - 8 bit micro based on RISC architecture ( Reduced Instruction Set Computer)
there are also 16bit and 32 bit micros from the same family
invention wise, 8051 is the forefather ( date of birth = 1985), next cam PIC s and then came the AVRs.
its essential to learn 8051 to be able to learn other micros. if we come to instruction set of these micros :
8051 has 250 instructions which take 1 to 4 machine cycles to executive
PIC has nearly 40 instructions which are mostly 4 cycles instructions
AVRs have 140 instructions whcih are mostly 1 cycle based
if we come to speed factor:
1 machine cycle in 8051 (normal) divides the clock freq. by 12 ( some derivatives divide by 6 and by 1 also)
1 machine cycle in PIC divides the clock freq by 4
1 M.C in AVRs divides the clock freq by 1
for eg: if we use 12 Mhz Xtal in all the 3 micros then the speed of execution will be as follows:
8051 = 12Mhz /12 = 1 Mhz i,e = 1 million instructions per second
PIC = 12Mhz/4 = 3 Mhz i,e = 3 million instructions per second
AVR = 12Mhz/1 = 12 MHz i,e = 12 Million instructions per second
so you can clearly see the that AVR executes more no:of instructions per given time and can be considered as the fastest among the 3.
also 8051 consumes more power than the other two and PIC consumes the least power.
Both PIC and AVR are RISC based but their instruction Sets are entirely different.
from Programming ( i,e writing code ) point of view : 8051s are easy to code , next come PIcs and last comes AVRs.
8051 has very powerful instruction set, it has commands which do more complex calculations, it also has got strong arithmetic logic unit which makes computation simple.
whereas PICs and AVRs have simple single instructions and the programmer has to tell (dictate) each and every step to achieve the final outcome.
you would be surprised to know that normal AVRs do not have Multiplication instruction.
in 8051 Assembly we can simple use the instruction : MUL A,B
but in AVR you have to write some 20 lines of code to multiply two registers or values.
similarly division also : in 8051 we have DIV A,B but in AVR again you have to write some 20 lines of code.
There is no ADD instruction in AVRs, in 8051 we can Compliment a port bit or a bit variable by using CPL instruction but in AVR we don't have this instruction.
in 8051 we can easily access the individual port bits but in AVRs we don't have this freedom.
8051 is still in use bcoz of its simplicity and popularity and lowest cost.
AVRs and PICS are costly and come with many on chip peripherals like : hardware SPI, ADC, I2C, USART , Analog comparator, internal RC oscillator, in-system programmablity etc.
also if see vendor support: 8051 are manufactured by over 50 companies whereas PIC & AVRs are manufactured only by their parent companies i,e microchip and Atmel.
for eg: if you are using a particular variant of AVR and Atmel discontinues it then you'll have no other choice than to shift to another variant offered by Atmel which may be costly and need program changes.
but with 8051 you can run the code in any 8051s manufactured by so many companies.