Many years ago now, I have used general purpose 8 bit PIC, like for example the PIC16F84A, writing their code in assembly, which I really like.

I haven't had the need to do anything related to this ever since, but now I'm aiming to use the PIC16F18323, which, despite its low pin count, has a lot more functionality and complex peripherals than the PIC16F84A... quite a leap there.

Also, most of the tools I used back then like DOS software, serial port programmer, etc., don't suit present day PC.

So I've now bought a PICkit 4 programmer but before make a start with it I need to make 2 choices for which I would appreciate your views:

  1. Assembly or C? Purely from a language perspective, I like both, and I have relevant experience with both. For simple things I favour assembly because it reflects the hardware best, saving you from thinking about an abstraction layer, how a particular piece of C code will actually and up executing (including clock cycle count), etc. For more complex things, I favour C because it's more readable, hence easier to maintain and less bug prone. So, for the level of complexity offered by this particular MCU, which would you use?

  2. What development software? Back in the day it was all 3rd party unofficial... Anyway, I read a little about MPLAB 8 vs. X and finally downloaded and installed MPLAB X IDE for Windows. The first thing that caught my attention is it uses something like 12 Gb hard disk, WTF??? I used to develop for this PIC16F84A using a text editor + simulator + programmer, all of which DOS stand alone apps you could fit in a floppy disk, literally!! And now the sensible, convenient way to burn some bytes inside a PIC16C84 is to install a 12 Gb suite?? Not that I mind or care from a hard disk use perspective, but I'm frightened about the amount of (unnecessary) complexity this may come with and I will likely need to face.

Thanks in advance for sharing your insight :-)


2 Answers 2


You can use both C and Assembler. High end devices are optimized for C, they have a C architecture inside.

PIC16F18323 is best with assembler, but since the C XC8 compiler from Microchip is very good, there will be almost no difference in the result.

MPLAB X(10) is the used software(IDE) today, its very bulky, but its good. You can combine it with the Microchip free compilers XC8(8bit MCUs), XC16(16bit MCUs), XC32(32bit MCUs)

If you want you can install the XC8 compiler without the Mplab IDE and use a notepad editor.



To answer the technical part:

1) C for the sake of automatic stack management, if nothing else. PIC are infamous for their horrible stacks, you shouldn't have to waste significant amounts of time pondering stack depth and similar PIC crap. And it's impossible to write the classic "missing pop" bugs in C.

Another major advantage of C is the possibility to re-use code between projects, or to use code written by others. And obviously, if portability is even the slightest concern, assembler is a no-go.

If you are going to write in C, you might as well consider a modern Cortex-M instead of legacy 8 bitter.

2) is a shopping/tool recommendation question and as such off-topic. MPLAB always had a poor reputation but I haven't used it in ages either, so I really can't judge its current state.

Nowadays though, tool chain is considered more important than it was back in the days, to the point where devs pick MCU based on tool chain support. The various "free" tools are almost always bad, in my experience - in particular the various Eclipse trash. MPLAB ought to be better than Eclipse, if nothing else.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.