spi.h
/***************************************
cabecera del protocolo de comunicación
SPI
****************************************/
//Modos de Trabajo
//sync_mode
#define SPI_FOSC_4 0b00000000 // SPI Master mode, clock = Fosc/4
#define SPI_FOSC_16 0b00000001 // SPI Master mode, clock = Fosc/16
#define SPI_FOSC_64 0b00000010 // SPI Master mode, clock = Fosc/64
#define SPI_FOSC_TMR2 0b00000011 // SPI Master mode, clock = TMR2 output/2
#define SLV_SSON 0b00000100 // SPI Slave mode, /SS pin control enabled
#define SLV_SSOFF 0b00000101 // SPI Slave mode, /SS pin control disabled
//Modos de Trabajo del Bus
//bus_mode
#define MODE_00 0b00000000 // Setting for SPI bus Mode 0,0
//CKE 0x40 // SSPSTAT register
//CKP 0x00 // SSPCON1 register
#define MODE_01 0b00000001 // Setting for SPI bus Mode 0,1
//CKE 0x00 // SSPSTAT register
//CKP 0x00 // SSPCON1 register
#define MODE_10 0b00000010 // Setting for SPI bus Mode 1,0
//CKE 0x40 // SSPSTAT register
//CKP 0x10 // SSPCON1 register
#define MODE_11 0b00000011 // Setting for SPI bus Mode 1,1
//CKE 0x00 // SSPSTAT register
//CKP 0x10 // SSPCON1 register
//Modos de Trabajo Fase
//smp_phase
#define SMPEND 0b10000000 // Input data sample at end of data out
#define SMPMID 0b00000000 // Input data sample at middle of data out
/* SSPCON1 REGISTER */
#define SSPENB 0b00100000 // Enable serial port and configures SCK, SDO, SDI
unsigned char DataRdySPI(void);
//Operacion del Puerto
void CloseSPI(void);
void OpenSPI(unsigned char sync_mode,unsigned char bus_mode,unsigned char smp_phase);
//Funciones Lectura
unsigned char ReadSPI(void);
unsigned char getcSPI(void);
void getsSPI(unsigned char *rdptr, unsigned char length);
//Funciones Escritura
unsigned char WriteSPI(unsigned char data_out);
unsigned char putcSPI(unsigned char cx);
void pudsSPI(unsigned char *wrptr);