Your micro SD card might be an older SD version. Older versions require a different initialization sequence and will result to an infinite loop when you try to use the sequence included in the wiki.
Maybe the microSD card that you are using is not capable of SDHC, if so try sending a 0 in argument of ACMD41 in the card initialization.
// start card initialization
cmd_args = 0; // for not SDHC cards
resp = send_command(CMD55, 0);
resp = send_command(ACMD41, cmd_args);
} while((resp & 0x01));