The 8-bit PIC microcontrollers won the love of hobbyists for a number of good reasons. In particular, the PIC16C84 and PIC16F84 chips had EEPROM/Flash memory that eliminated the need for an ultraviolet erasure stage. They were available in DIP packages that were easily handled. The documentation and programming tools (just an assembler at first) were approachable. The input/output pins were fairly robust, so the chips were hard to kill. The power supply voltage range was forgiving, and allowed for easy operation from batteries.
The 8-bit PIC architecture lacked some features that frustrated writing a proper C compiler for the chips. But that wasn't a problem if you moved up to the 16- and 32-bit processors, which also had some lovely peripherals such as a 12-bit A to D converter.
I programmed my first PIC16C84 chip using a programming circuit that I built myself through the parallel printer port of my MS-DOS computer, using a program that I wrote in Turbo Pascal. I was hooked.
Those were the days. Since then I've moved on to chips and boards that can be programmed using the Arduino tool chain.
8-bit PIC's were used a LOT for "glue" tasks. Sequencing powerup, initializing complex chips, period status reporting (like battery voltage), etc. I have seen quite a lot of really complex, expensive boards with a tiny PIC hidden somewhere away on the board to control it all.
The 8-bit PIC's were also a quick way to slap a UART on a board that you could use to query all the things on your board.
Finally, the PIC18 series were actually innovative in many ways for the time. For example, they had USB and Ethernet interfaces in cheap chips long before anybody else did.
> The 8-bit PIC microcontrollers won the love of hobbyists for a number of good reasons.
And I'd argue lost it with lack of open source compiler support.
> But that wasn't a problem if you moved up to the 16- and 32-bit processors
Microchip is selling XC licenses ($1500 and needs a dongle) for 16 bit PICs, because there is still no gcc/clang available. This in a universe where msp430, avr, and arm (and many others) all have good upstreamed gcc support. So I say it's still a problem.
32-bit PICs are just MIPS cores so they have at least some degree of support via that.
Indeed, for me, I moved from 8- to 16-bit PIC mainly so I could write in C, even if I didn't always need more power. But the added cost was not an obstacle for my uses. Eventually the ability to use GCC moved me away from the platform altogether. And it wasn't like I had a problem with the Microsoft tools per se, but didn't want to invest my brain cells in something that was likely to be a dead end.
> The 8-bit PIC architecture lacked some features that frustrated writing a proper C compiler for the chips. But that wasn't a problem if you moved up to the 16- and 32-bit processors, which also had some lovely peripherals such as a 12-bit A to D converter.
Isn't this problem solved by writing C on a bigger machine that transpiles down to the assembler that PIC can work with?
Writing a C compiler generating code for the PIC is what's difficult. Nobody wants to run the compiler for a microcontroller on the microcontroller itself.
I thought an old document on the PIC microcontroller would be entirely pointless to read, but most of these tricks are applicable to microcontrollers in general.
Most are circuit configurations, the code is generic, this is why the title I used to submit it was "PIC Microcontroller Circuits", not Microcontroller.
Usually the original title should always be used to discourage clickbaits, however, in cases like this example, I think it's justified to add relevant context. Unfortunately, the moderators overcorrected it and removed circuits.
I created a USB IR transmitter using a PIC microcontroller, but the pure-assembly USB stack I used was created by a professor at a school I don't recall and had no license agreement, so I did not open source it. I used the assembler from gputils, a PICKit for initial flashing (before all of my hardware was stolen), and there was a bootloader so most of the time flashing occurred over USB.
The 8-bit PIC architecture lacked some features that frustrated writing a proper C compiler for the chips. But that wasn't a problem if you moved up to the 16- and 32-bit processors, which also had some lovely peripherals such as a 12-bit A to D converter.
I programmed my first PIC16C84 chip using a programming circuit that I built myself through the parallel printer port of my MS-DOS computer, using a program that I wrote in Turbo Pascal. I was hooked.
Those were the days. Since then I've moved on to chips and boards that can be programmed using the Arduino tool chain.