ببخشید. من درست متوجه خواسته شما نشدم.
برای اینکه شما بتونید بدون استفاده از تابع spi() داده را دریافت و ارسال کنید باید مستقیما با ریجستر های این واحد کار کنید.
کد زیر خود تابع spi() است شما هم مشابه همین کد ها اگر نیاز داشتید استفاده کنید.
کد:
unsigned char spi(unsigned char data)
{
SPDR=data;
while ((SPSR & (1<<SPIF))==0);
return SPDR;
}
نخست تنظیمات مورد نظر با استفاده از ریجستر spcr تنظیم کنید
داده ای که میخواهید ارسال کنید را در ریجستر spdr (ریجستر داده) قرار دهید
پس از ارسال داده دوباره ریجستر داده را بخوانید. (با ارسال هر بیت داده یک بیت داده نیز دریافت میشود و در همان ریجستر spdr قرار میگیرد. پس، بعد از ارسال 8 بیت داده، 8 بیت داده دریافت میشود ودر ریجستر داده نوشته میشود)