Updated August 20, 1998
PIC16C84 is the old version (was phased out 1998) and PIC16F84 is the new version.
Clarification:
| If your PIC is a PIC16C84 | then set device type = 16C84 and set power-up timer to OFF |
| If your PIC is a PIC16F84 | then set device type = 16C84 and P.U.T. to ON |
| or set device type = 16F84 and P.U.T. to OFF |
You might now ask why we don't just tell everyone to always set power-up timer to OFF and set "device type" to the type which the chip actually is. That would be less confusing, wouldn't it? Well, the reason is that an older version of PIP-02 (1.14) handled device type 16F84 incorrectly - therefore you had to use the 16C84 setting and instead compensate for that by altering power-up timer manually. Also, some programming utilities only has a setting for device type 16C84, not 16F84.
Did you know that...
* Contrary to popular belief, you can not tell the difference between 16C84 and 16F84 wafer cards by looking at the design of the gold plate. The only thing the design of the gold plate tells you, is whether they are manufactured in USA or in South East Asia. Both manufacturers have made both types of cards, but because 16F84 happened to come out at the same time as the manufacturer in South East Asia started making cards, an incorrect rumour started spreading that the "X" design means 16F84.
* There is no quality difference between wafer cards from the two different manufacturers. Both manufacturers test all wafer cards before delivery.
* In ludipipo programmers (such as Programmer IV), old 16C84 wafer cards seem to work better than 16F84, because they are more tolerant to incorrect timing signals, which is a frequent problem in ludipipo programmers which depend on the programming utility software to generate the programming signal. Bad programming utilities such as PICPROG generate a inexact signal which only works on about half of all PC's - if used on another PC, problems will arise when programming many 16F84 wafer cards...
* Also, all 16C84 cards have about the same tolerance treshold, but the tolerance of 16F84 cards varies widely (though all cards have a tolerance which is well above the specification). Therefore, if you use a programming utility which generates a poor signal quality (such as PICPROG), some 16F84 wafer cards might work anyway, but others will not. This has often caused users to believe, incorrectly, that the cards which behave differently are faulty, when in fact the problem is caused by a bad timing signal from the programming utility. Never use PICPROG - use PIP-02 instead!
* Setting power-up timer incorrectly, dramatically increases the risk that a 16F84 wafer card will fail either when programming or when it is being used. However, some cards with excellent tolerance (about 40%), might not fail anyway. Another thing that might reduce the signal quality, is if you have a damaged serial cable or one with lots of adapters.
* 16F84 wafer cards are more sensitive to incorrect timing signals (caused by a bad programming utility) than 16F84 PCB cards (Black Jack). This is probably because the gold bondings inside the wafer cards are so slim.
* Why did Microchip invert power-up timer in PIC16F84? Well, that's the question everyone is asking, but I have never heard a good explaination...
* PIC16F84 has 28 more bytes of data memory. This means it would be possible to make HEX files which would take advantage of the bigger memory (such HEX files would then only work on 16F84 and not on the old 16C84). However, it has been a year singe 16F84 was released, and all HEX files today are still made for 16C84, which means that they work on both 16C84 and 16F84. It seems as if the difference is so small that developers don't want to bother using these few extra bytes and thereby cause problems for users of 16C84 cards... Some HEX files are released as "16C84" or "16F84", but the only difference is the way power-up timer has been SUGGESTED (i.e. the way it is selected by default, when the HEX file is loaded). The extra 28 bytes are not utilised in the 16F84 version.
* PIC16F84 has a code-protect function that is impossible to bust using one of those old PIC-programmers with built-in PIC buster. However, it has been reported that other methods can be used to steal the code from a code protected PIC16F84. If you have two PIC16F84 programmed with the same software, and 150 UK Pounds, professional crackers can get the software extracted from a code protected PIC16F84.
* F in 16F84 stands for "flash", which is due to the technique used in the memory. Both memory types can be reprogrammed in the same way. The only important advantage with flash memory is that flash sounds cooler than CMOS. :-)
* Microchip prefers everyone to buy 16F84 because it is cheaper to manufacture. In small amounts, 16C84 is a lot more expensive. Microchip have threatened to stop 16C84 production manu times, but they haven't done so yet...
Similarities
No special programmer is required.
No special PCB is required (they are pin-compatible).
No special HEX files are required.