Код: Выделить всё
#include <mega8.h>
#define SPI_PORTX PORTC
#define SPI_DDRX DDRC
#define SPI_MISO 2
#define SPI_MOSI 5
#define SPI_SCK 4
#define SPI_SS 3
/*инициализация SPI модуля в режиме master*/
void SPI_Init(void)
{
/*настройка портов ввода-вывода
все выводы, кроме MISO выходы*/
SPI_DDRX |= (1<<SPI_MOSI)|(1<<SPI_SCK)|(1<<SPI_SS)|(0<<SPI_MISO);
SPI_PORTX |= (1<<SPI_MOSI)|(1<<SPI_SCK)|(1<<SPI_SS)|(1<<SPI_MISO);
SPI_PORTX |= (1<<SPI_SS);
SPI_PORTX &= ~(1<<SPI_SCK);
SPI_PORTX &= ~(1<<SPI_MOSI);
}
void SPI_WriteData(char adres, char data)
{ char i=16;
int tmp=adres;
tmp = (tmp<<8)|data;
SPI_PORTX &= ~(1<<SPI_SS);
{while(i>0)
{
SPI_PORTX &= ~(1<<SPI_SCK);
SPI_PORTX.SPI_MOSI=((tmp & (1<<(i-1))) != 0 );
SPI_PORTX |= (1<<SPI_SCK);
i--;
}
}
SPI_PORTX &= ~(1<<SPI_SCK);
SPI_PORTX |= (1<<SPI_SS);
SPI_PORTX &= ~(1<<SPI_MOSI);
}
char count=8;
void main(void)
{
SPI_Init();
SPI_WriteData(0xF,0x0);
SPI_WriteData(0xC,0x0);
SPI_WriteData(0xB,0x7);
SPI_WriteData(0x9,0x0);
SPI_WriteData(0xA,0xF);
{while(count>0)
{
SPI_WriteData(count,0x0);
count--;
}
}
while (1)
{
}
}


