
PIC16F87XA
DS39582A-page 70
Advance Information
2001 Microchip Technology Inc.
9.3.1
REGISTERS
The MSSP module has four registers for SPI mode
operation. These are:
MSSP Control Register (SSPCON)
MSSP Status Register (SSPSTAT)
Serial Receive/Transmit Buffer (SSPBUF)
MSSP Shift Register (SSPSR) - Not directly
accessible
SSPCON and SSPSTAT are the control and status
registers in SPI mode operation. The SSPCON regis-
ter is readable and writable. The lower 6 bits of the
SSPSTAT are read only. The upper two bits of the
SSPSTAT are read/write.
SSPSR is the shift register used for shifting data in or
out. SSPBUF is the buffer register to which data bytes
are written to or read from.
In receive operations, SSPSR and SSPBUF together
create a double-buffered receiver. When SSPSR
receives a complete byte, it is transferred to SSPBUF
and the SSPIF interrupt is set.
During transmission, the SSPBUF is not double buff-
ered. A write to SSPBUF will write to both SSPBUF and
SSPSR.
REGISTER 9-1:
SSPSTAT: MSSP STATUS REGISTER (SPI MODE) (ADDRESS 94h)
R/W-0
SMP
bit 7
R/W-0
CKE
R-0
D/A
R-0
P
R-0
S
R-0
R/W
R-0
UA
R-0
BF
bit 0
bit 7
SMP:
Sample bit
SPI Master mode:
1
= Input data sampled at end of data output time
0
= Input data sampled at middle of data output time
SPI Slave mode:
SMP must be cleared when SPI is used in Slave mode
CKE:
SPI Clock Edge Select bit
When CKP = 0:
1
= Data transmitted on rising edge of SCK
0
= Data transmitted on falling edge of SCK
When CKP = 1:
1
= Data transmitted on falling edge of SCK
0
= Data transmitted on rising edge of SCK
D/A:
Data/Address bit
Used in I
2
C mode only
P:
STOP bit
Used in I
2
C mode only. This bit is cleared when the MSSP module is disabled, SSPEN is cleared.
S:
START bit
Used in I
2
C mode only
R/W:
Read/Write bit information
Used in I
2
C mode only
UA:
Update Address bit
Used in I
2
C mode only
BF:
Buffer Full Status bit (Receive mode only)
1
= Receive complete, SSPBUF is full
0
= Receive not complete, SSPBUF is empty
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
Legend:
R = Readable bit
- n = Value at POR
W = Writable bit
’1’ = Bit is set
U = Unimplemented bit, read as ‘0’
’0’ = Bit is cleared
x = Bit is unknown