00001
00002
00003
00004
00009 #include "piccolo_config.h"
00010 #include "piccolo_spi.h"
00011
00018 void spi_init(uint8 spi_mode, uint8 spi_busmode) {
00019 SSPSTAT = spi_busmode;
00020 SSPCON1 = spi_mode;
00021 switch(spi_mode & 0x0F) {
00022 case 5:
00023 SPI_SCK = 1;
00024 break;
00025 case 4:
00026 SPI_SCK = 1;
00027 SPI_SS = 1;
00028 break;
00029 default:
00030 SPI_SCK = 0;
00031 break;
00032 }
00033 SPI_SDI = 1;
00034 SPI_SDO = 0;
00035
00036 SSPCON1 |= SSPENB;
00037 }
00038
00050 uint8 spi_io( uint8 data) {
00051 uint8 tmp;
00052 PIR1bits.SSPIF = 0;
00053 SSPCON1bits.WCOL = 0;
00054 tmp = SSPBUF;
00055 SSPBUF = data;
00056 while( !PIR1bits.SSPIF );
00057 return (SSPBUF);
00058 }
00059
00060
00061