استفاده از رجیستر وضعیت (SPSR) :
برای ارسال و دریافت باید از این رجیستر استفاده کنیم. دو کار می توانیم انجام دهیم . یا از بیت وقفه استفاده نکنیم و یا استفاده بکنیم. برنامه هایی که من دیدم اینهاست:
اگه استفاده بکنیم :
کد:
unsigned int SPI0(unsigned int val)
{
unsigned int received=0;
S0SPDR=val;
while( !(S0SPSR & SPIF)); //wait for transfer to be completed
received=S0SPDR;
return(received);
}
آقای عبدالهی یه توضیحی میدید این ارسال میکنه یا دریافت!؟ آخه هم یه چیزی میریزه در S0SPDR هم از S0SPDR میخونه.
و اگه از بیت وقفه نکنیم:
کد:
while(1)
{
for(i=0;i<8;i++){
S0SPDR = x[i];
while(!(S0SPSR & 0x80)); //wait for transfer to be compeleted
for(j=0;j<1000000;j++);
}
}
خوب یکی میگه اون 0x80 کارش چیه؟ (نیست سوال قبلی ها را جواب دادید ، اینم روش!!)