#include <reg52.h> sbit SCLK = P2^0; sbit MOSI = P2^1; sbit MISO = P2^2; sbit CS = P2^3; typedef unsigned char u8; u8 SPI_WriteRead(u8 Data) { u8 i; u8 retval = 0; for (i = 0; i < 8; i++) { SCLK = 0; retval <<= 1; MOSI = ( Data & 0x80)? 1: 0; SCLK = 1; MISO = 1; retval |= MISO; Data <<= 1; } SCLK = 0; return retval; }