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;  

 }  

相关文章推荐

GPIO模拟SPI

一 SPI协议概括 SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI...

STM32F10x_SPI(硬件接口 + 软件模拟)读写Flash(25Q16)

Ⅰ、写在前面 SPI(Serial Perripheral Interface)串行外设通信接口,主要实现设备(主从)之间的通信。硬件上由CS、SCK、MISO、MOSI四根通信线连接而成。...

模拟SPI实现和调试流程

一般来说,所有的spi通信设备都可以使用模拟spi来实现,而且模拟spi的好处就是不需要针对每一款mcu去重新熟悉其spi控制器的配置,只要简单配置一下spi_clk、spi_cs、spi_mosi、...

普通GPIO模拟SPI通信协议(软件SPI)

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

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

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

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

/IO端口定义 #define SPI_SCK  PC0 #define SPI_MOSI PC1 #define SPI_MISO PC2 #define SPI_DDR  DDRC #define...

在ARM Linux下使用GPIO模拟SPI时序详解

Author:杨正  Data:2016.1.1  Mail:yz2012ww@gmail.com 一、       概述 SPI是英文SerialPeripheral Interface的缩写,...

IO口模拟SPI总线

SPI是一种全双工同步串行接口,四总线结构SCK、MOSI、MISO、CS分别是时钟、主机输出、主机接收、片选。其中各个厂商的写法可能不一致。SPI总线有四种工作模式,在不再做介绍。最常用的SPI总线...

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

http://www.rationmcu.com/clang/495.htmlhttp://blog.csdn.net/zyboy2000/article/details/11861329
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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