#define CLOCK_FREQUENCY 120000 unsigned int ms_to_ticks(unsigned int ms) { return ms * (CLOCK_FREQUENCY/3); } void delay_routine(unsigned int delay_counter) { asm("mov r1, %[input]\n" "loop_2:\n" "subs r1, #1\n" "cmp r1, #0\n" "bne loop_2\n" : [input] "=r" (delay_counter)); } void delay_ms(unsigned int seconds) { delay_routine(ms_to_ticks(seconds)); }