Цитата(Scorpline @ Oct 30 2007, 21:59)

Как организовать ее передачу по SPI
Побитно.
SPI это синхронный последовательный интерфейс. Каждый бит должен сопровождаться синхроимпульсом. А каждый фрейм/кадр (последовательность несокольких байт) еще и сигналом выборки CS. Если реализуете SPI программно, то алгоритм примерно такой (для SPI mode 3).
Допустим имеем переменные:
SPIDataOutput - байт данных для передачи по SPI
SPIDataInput - байт данных в который поместим результат приема с SPI
SPIBitCntr - счетчик бит
SPIMask - маска для передачи/приема
Инициализируем переменные:
SPIDataInput=0
SPIBitCntr=0
SPIMask=0x80
1) Сбросили пин, назначенный сигналом CS.
2) Сбросили пин, назначенный SCLK.
3) Наложили маску по AND на байт данных, предназначеный для передачи SPIDataOutput & SPIMask. Если результат = 0, то сбросили пин, назначенный как MOSI (Master Output Slave Input), в противном случае установили MOSI.
4) Подождали некоторое время, соответствующее длительности полупериода SCLK для выбранной частоты тактирования.
5) Установили SCLK.
6) Подождали некоторое время, соответствующее длительности SCLK для выбранной частоты тактирования.
7) Считали состояние пина, назначенного как MISO (Master Input Slave Output). Если состояние MISO = 1, то установили бит в переменной SPIDataInput, наложив по OR маску SPIMask. SPIDataInput=SPIDataInput | SPIMask.
Сделали сдвиг маски SPIMask= SPIMask >> 1.
Увеличили счетчик бит SPIBitCntr=SPIBitCntr+1
8) Если счетчик бит SPIBitCntr меньше 8, то переход на шаг 2. Если больше или равно 8, то установим CS.
Все! В результате будет передан по SPI один байт, значение которого было в SPIDataOutput и принят байт, значение которого лежит в SPIDataInput.
Обращаю внимание, что SPI это интерфейс для
обмена данными. Чтобы что-то принять по SPI нужно что-то передать по SPI!
Цитата(Scorpline @ Oct 30 2007, 21:59)

Может с кодом кто поможет....?
(изучаю асм... для 8051 ...много вопросов)
Увы, не сведущ в 51 и тем более в асм.