C51用IO口模拟SPI

转载 2007年09月28日 00:11:00

/*******************************************************************************  

   模块名称:    spi.h  

   模块说明:    c51单片机的i/o模拟spi操作  

    

   创建时间:    2005/03/09  

   创建者:      xichen    

  

  

  

 ********************************************************************************/  

  

 #ifndef  SPI_H  

 #define  SPI_H  

  

  

  

 sbit  SPIS_N    =  P2^1;  

 sbit  SPIC    =  P2^3;  

 sbit  SPID    =  P2^2;  

 sbit  SPIQ    =  P2^4;  

  

 extern  void  spi_reset();  

 extern  void  spi_write(unsigned  char  spi_bValue);  

 extern  unsigned  char  spi_read();  

  

  

 #endif  

 /*******************************************************************************  

   模块名称:    spi.c  

   模块说明:    c51单片机的i/o模拟spi操作  

    

   创建时间:    2005/03/09  

   创建者:      xichen  

  

 ********************************************************************************/  

  

 #include  "includes.h"  

  

 #define set_spi_cs() SPIS_N  =1  

 #define clr_spi_cs() SPIS_N  =0  

 #define set_spi_clk()      SPIC  =1  

 #define clr_spi_clk()      SPIC  =0  

 #define set_spi_di() SPID  =1  

 #define clr_spi_di() SPID  =0  

 #define read_spi_do()     SPIQ    

  

  

  

 //------------------------------------------  

 void  spi_reset()  

 {  

   set_spi_cs();   

 }  

 //-----------------------------------------  

 void  spi_write(unsigned  char  spi_bValue)  

 {  

 unsigned  char  no;  

    

 clr_spi_cs();  

  

 for  (no=0;no<8;no++)  

 {  

         clr_spi_clk();    

  

 if  ((spi_bValue  &0x80)==0x80)  

    set_spi_di();  

  else  

    clr_spi_di();  

  

         set_spi_clk();   

  

 spi_bValue  =  (spi_bValue  <<1);  

 }  

 }  

 //----------------------------------------------  

 unsigned  char  spi_read()  

 {  

 unsigned  char  no,spi_bValue;  

  

 clr_spi_cs();  

  

 for (no=0;no<8;no++)  

 {                                  

 clr_spi_clk();  

  

         spi_bValue  =  (spi_bValue  <<1);  

  

         set_spi_clk();  

  

 if  (read_spi_do()  ==1)  

         spi_bValue  |=0x01;  

 else  

    spi_bValue  &=~0x01;  

  

 }  

  

 return  spi_bValue;  

 }  

单片机—SPI接口简述(上)

 1  SPI接口 SPI(Serial PeripheralInterface)即串行外设接口,是一种高速同步的串行接口,可以串行接收或发送数据,支持主从机之间的全双工同步传输,传输速率可编程设定。...
  • nolatin
  • nolatin
  • 2008年10月21日 22:44
  • 9486

单片机软件模拟SPI接口—加深理解SPI总线协议

单片机软件模拟SPI接口—加深理解SPI总线协议           SPI(Serial Peripheral Interfacer 串行外设接口)是摩托罗拉公司推出的一种同步串行通讯接口,用于微...
  • ce123
  • ce123
  • 2011年11月01日 00:01
  • 44484

学习笔记之-51单片机串口通信

1.原理  8051系列单片机有通用异步收发器(UART,universal Asynchronous Receiver/Transimitter)用于串口通信,发送时数据由TXD引脚引出,接收时数据...
  • gjxman1314
  • gjxman1314
  • 2017年02月14日 14:53
  • 501

单片机IO口模拟SPI四种模式的程序

/IO端口定义 #define SPI_SCK  PC0 #define SPI_MOSI PC1 #define SPI_MISO PC2 #define SPI_DDR  DDRC #define...
  • zyboy2000
  • zyboy2000
  • 2013年09月21日 10:00
  • 18185

用51单片机IO口模拟SPI协议读数据

  • 2012年08月14日 13:54
  • 47KB
  • 下载

spi由51单片机实现

  • 2009年09月01日 21:02
  • 204KB
  • 下载

51单片机——SPI

单片机——SPI总线 宗旨:技术的学习是有限的,分享的精神是无限的。         UART、 I2C 和 SPI 是单片机系统中最常用的三种通信协议。 1、初步介绍  ...
  • a1314521531
  • a1314521531
  • 2016年03月18日 09:01
  • 1799

普通IO口模拟实现SPI通信及应用解析

根据SPI通信规范(具体可以参考“浅谈I2C总线”),通过普通IO端口模拟可以实现单片机(主设备)与从设备的SPI通信,其中SCL通过IO口延时高低电平变化实现,SDA根据SCL状态变化产生开始信号,...
  • bluewhaletech
  • bluewhaletech
  • 2014年08月21日 12:14
  • 3579

[转]普通GPIO口模拟SPI通信协议

在工作中偶尔会遇到SPI不够用的情况,而我们又要去使用SPI通信协议,此时就需要我们自己去模拟SPI通信协议。我们知道SPI通信协议有四种模式,它们分别如下所示: 下面是我基于ATSAM4SD1...
  • lyj19960106
  • lyj19960106
  • 2017年08月30日 16:58
  • 202

C51用IO口模拟SPI

/*******************************************************************************     模块名称:    spi.h ...
  • cisezj
  • cisezj
  • 2007年09月28日 00:11
  • 5853
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C51用IO口模拟SPI
举报原因:
原因补充:

(最多只允许输入30个字)