单片机模拟spi通信

来源:互联网 发布:乐视利润造假 知乎 编辑:程序博客网 时间:2024/06/10 09:53
#include <reg52.h>
sbit SCLK  = P2^0;                                        /*时钟线                          */
sbit MOSI  = P2^1;                                        /*从进主出                      */
sbit MISO  = P2^2;                                        /*主进从出                      */
sbit CS    = P2^3;                                         /*片选                             */
typedef unsigned  char u8;
/**-------------------------------------------------------------------------------------
*brief   带收发的模拟spi总线
*param Data:发送到从机的数据
*retval 返回主机的数据
*attention 工作在SPI的模式1
---------------------------------------------------------------------------------------*/
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;     /*将最高位输出到SI线上     */     
SCLK = 1;                                   /*上升沿送出数据              */
MISO = 1;
retval |= MISO;                          /*读入从机数据                */
Data  <<= 1;                             /*移向高位                       */
}
SCLK = 0;
return retval;
}
0 0
原创粉丝点击