we have migrated from assembler to C in microprocessor programming. I have doubts that this is a good idea
Fear not, nobody develops new programs in 100% assembler any longer. Nowadays, C can be used even for the tiniest, crappiest 8-bit architectures. However, knowing some assembler makes you a significantly better C programmer. Also, there are always some small detail or two in a program that need to be written in assembler.
I can tell that C syntax is a lot easier to learn than Assembler syntax.
Yes the syntax is easier, certainly. However, learning the whole C language with all the annoying details is far more complex than learning all the details of a particular assembler. C is a much larger and wider language.
But then again, you might not need to learn all the details.
C is easier to use for making more complex programs.
Indeed, C provides mechanisms for modular program design, such as encapsulation and local scopes/local variables. And C has a standard library, plus an enormous amount of resources written during the past 30 years. And most importantly, C is portable.
Learning C is somehow more productive than learning assembler cause there is more developing stuff around C than Assembler.
C has plenty of pre-made functionality, libraries and resources, so there will be less re-inventing of the wheel. But apart from that, your statement is subjective. I believe it is a matter of personal preference.
For example, I am an experienced C programmer, occasionally programming C++. I find myself far less productive in C++, because I don't know that language as well as I know C. But just because I feel that way, it doesn't necessarily mean that programming in C is more productive than programming in C++. An experienced C++ programmer would surely have the opposite opinion.
And there are many aspects to "productive". A very important aspect is maintenance time, and especially the time it takes to fix bugs induced by maintenance. C is far easier to maintain than assembler.
Assembler is a lower level programming language than C,so this makes it a good for programming directly to hardware.
Hardware programming can be done directly in either language. The only things you can't do in C are accessing stack pointers and condition registers etc, of the CPU core itself. So if by hardware programming you mean talking with your own CPU, then yes, assembler allows a bit more than C. If you mean accessing external hardware, then assembler holds no benefit over C. But perhaps disadvantages, as it is often harder to write generic assembler code for a particular external device, than generic C code.
Is a lot more flexible alluding you to work with memory,interrupts,micro-registers,etc.
This is not correct. C allows you to do all of that too, although you might have to rely on compiler-specific C code such as the interrupt keyword.
In the end, you need to know both languages to program MCUs, with emphasis on C.