Во-первых, прилагать запакованный текстовый файл в кодировке Unicode это несколько...ммм...необычно.
Во-вторых, я конечно не большой специалист в ассемблере AVR, но насколько я понял из вашего алгоритма вы не совсем верно понимаете работу интерфейса SPI. SPI подразумевает
обмен данными. Для того чтобы что-то считать, нужно что-то передать. Вы же передаете код команды и думаете что тут же получили ответ. А вот и нет! Передали код команды (допустим чтения статуса), но принятый во время первой транзакции (обмена) данных байт нужно игнорировать. Команда еще не выполнена, EEPROM на этом этапе еще только приняла код команды. Вот когда вы передадите второй (фиктивный) байт (причем не снимая сигнал CS!!!), только после этой транзакции вы получите ответ на предыдущую команду (статус). Рассмотрите внимательнее временные диаграммы в
datasheet AT25160.