I haven't studied your code but here is an example:
The SPI mode allows 8-bits of data to be synchronously
transmitted and received, simultaneously.
Shiftin, Shiftout & their MSSP equivalent.
Code:
subREAD:
Low CS
''''Shiftout sSI,sCLK,msbfirst,[vOP_READ\8,sDONT_CARE\16,vADDRESS_READ\8,sDONT_CARE\8]
SSPBUF = vOP_READ ' SEND DATA BYTE
While SSPSTAT.0 = 0: Wend ' WHILE TX/RX COMPLETE
vDUMMY = SSPBUF
SSPBUF = 0 'DON'T CARE
While SSPSTAT.0 = 0: Wend ' WHILE TX/RX COMPLETE
vDUMMY = SSPBUF
SSPBUF = 0 'DON'T CARE
While SSPSTAT.0 = 0: Wend ' WHILE TX/RX COMPLETE
vDUMMY = SSPBUF
SSPBUF = vADDRESS_READ
While SSPSTAT.0 = 0: Wend ' WHILE TX/RX COMPLETE
vDUMMY = SSPBUF
SSPBUF = 0 'DON'T CARE
While SSPSTAT.0 = 0: Wend ' WHILE TX/RX COMPLETE
vDUMMY = SSPBUF
For z = 1 To 200
''''Shiftin sSO,sCLK,msbpre,[vREAD\8]
SSPBUF = 0
While SSPSTAT.0 = 0: Wend ' WHILE TX/RX COMPLETE
vREAD = SSPBUF
Next
High CS
Return
As a PIC18F452 example see page 130 of 452 data sheet for your SPI configuration of
SSPSTAT = %01000000
SSPCON1 = %00100010
Norm
Bookmarks