Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.
It depends on the level of sophistication that you need in your design.
If you are very clear in each step that your microcontroller is supposed to do (step by step) then you can look at its instruction set and you can convert your flow chart into an assembly code this can also be very helpful in precise control over your timing and it saves a lot of your code space which will be very important when you have a very big application and your Program code memory is as small as 5KB.
If you have no stringent timing requirements and your application is small in terms of its demand for code memory then you can go for C language it gives you a very abstract level of coding which will take care of all the difficult assembly coding for you in its compiling and linking stages, it also gives portability i.e., code written for one microcontroller can almost be used for other microcontrollers with little or no change.
Moral of the story is, it all depends on your application, if you have a big application and have a microcontroller with small program code memory then you have no other option than to use assembly language.
if you want your program size should small and work with timely precise you should go with ASSEMBLY (.asm)
if you want your program use complex function you should go with C
but assembly time consuming and C is size
..but you can merge both of them to get your result and requirements.