C 52 кристаллом SPI-интерфейс не запускал.
Алгоритм для кристаллов AVR приведен ниже, отличий в принципе не должно быть (наименования выводов может даже совпадает). Временные задержки на самом деле ВАЖНЫ. Может ты их не выдерживаешь ?
1. Последовательность включения питания:
Подать напряжение питания между VCC и GND, при этом RESET и SCK должны быть установлены в '0'. (Если программатор не гарантирует установки SCK в '0' при подаче питания, после того как на SCK будет установлен '0', на RESET необходимо подать положительный импульс.) Если кварцевый резонатор не подключен к выводам XTAL1 и XTAL2, подайте частоту от 0 до 16 МГц на вывод XTAL1.
2. Подождать 20 мс и разрешить последовательное программирование, послав команду разрешения на вывод MOSI/PB5. Выше указаны минимальные длительности положительного и отрицательного полупериодов сигнала SCK.
3. Если необходимо стирать микросхему (всегда при программировании памяти программ), подождать 10 мс, выдать положительный импульс на RESET и повторить шаг 2.
4. Память программ и память данных программируются по одному байту выдачей адреса и данных в команде записи. Ячейки памяти данных перед записью новых данных автоматически стираются. Следующий байт можно записывать через 4 мс.
5. Любую ячейку памяти можно проверить, используя команду чтения, которая выдает содержимое указанной ячейки на последовательный вывод MISO/PB6.
По окончанию программирования вывод RESET может быть установлен в '1' для возобновления нормальной работы схемы.