Why C instead ASM
ASM is a specific language, also referred as a low level programming language. It is a mnemonic to a machine code. It usually takes a long time to develop embedded programs in ASM language. Today even modern 8 bit microcontrollers are powerful and complex as they were a long time ago. The program memory of tiny chips reaches megabytes; they pack many peripherals and interfaces. Hardware code is becoming more complex; functionality grows up. This is one of the main reasons for using higher-level programming languages like C. By using C language you do not have to go into details how the processor works at the hardware level. You don’t have to think about hardware logic and how bytes are shifted between registers. It is better to leave to the compiler.