asm volatile("mov r5, #0\n"
"0:\n\t"
"add r5, r5, #1\n\t"
"cmp %0, r5\n\t"
"bne 0b"
: : "r"(FREQ >> 22) : "r5");