Здравствуйте.
Пытаюсь связать два PIC16F877 через SPI, один в режиме Master, второй-slave.
На PORTD Master'a и Slave'a получается 00001111, хотя на Slave должно быть 11111111.
Master:
#include <pic.h>
__CONFIG(0x3FF1);
int res;
main(void)
{
TRISA=0b00000000;
TRISC=0b00010000;
TRISB=0x0;
TRISD=0x0;
PORTD=0x0;
PORTB=0x0;
PORTC=0x0;
SSPIE=0;
SSPCON=0x20;
SSPIF=0;
SSPBUF=0b11111111;
while(!SSPIF);
PORTD=SSPBUF;
}
Slave:
#include <pic.h>
__CONFIG(0x3FF1);
int res,i;
main(void)
{
TRISA=0b00000000;
TRISC=0b00001000;
TRISB=0x0;
TRISD=0x0;
PORTD=0x0;
PORTB=0x0;
PORTC=0x0;
SSPCON=0x25;
SSPIF=0;
SSPIE=1;
PEIE=1;
GIE=1;
}
interrupt IntSer(void)
{
if(SSPIF==1)
{
res=SSPBUF;
SSPBUF=0b00001111;
SSPIF=0;
}
show();
}
show()
{
PORTD=res;
for(i=0;i<=1000;i++);
}