When I first started in the MCU world there really wasn’t much choice when it came to programming languages. You had to learn ASM if you really wanted to do something. Granted there were flavors of C out there – but in most cases they came at a step price and only worked on a few chip. I am not even going to mention Basic.

Granted back then we were not interfacing the MCUs to the world. They did basic things, were limited in the amount of RAM and code space and were not very fast. So ASM, was the goto language because looking at the code you could tell how many machine cycles a given routine would take.

However, portability was an issue. and really mastering the assembler required sticking to one particular processor or family that had the same instruction set. Not very good for long term job stability.

Fast forward to today – Majority of the processors you want to work with have instruction sets designed to be generated by a compiler.

C is very portable in most cases – and that routine you write for one target can be ported to another with little work. Not only that – but you only have to learn C once and you can learn it well. Meaning you are not starting from scratch when you are given a task to do something with a new processor in a limited time frame.

It is also human readable. (please comment your code)

So, in today’s business world, where things are measured on how cost effective something is and how fast you can get it to market. Spend your time learning C – it will give you an long term advantage of somebody that is stuck in the ASM world.