老古开发网首页
导航:老古开发网首页文章索引索引第2110页文章分类单片机第44页→[一个高效的模拟SPI的读写函数]
| -文章搜索 - 最新文章 - |

第2715篇:一个高效的模拟SPI的读写函数

发布时间:2006年8月2日 点击次数:2367
来源:   作者:
 
一个高效的模拟SPI的读写函数。 
 
  unsigned char RW_SPI(unsigned char val){
 unsigned char BitCounter;
 for (BitCounter=8;BitCounter!=0;BitCounter--){
  CLK=0;
  //write
  DI=0;
  if(val&0x80)                               
   DI=1;
  val<<=1;

  CLK=1;
  //read
  if(DO)
   val =1;                                      

 }
 CLK=0;
 return val;
}

此函数把SPI的读写功能集成在一块,传递的val既是向SPI写的数据,也是从SPI读取的数据,只需要在执行读或写之前把MCU的I/O脚设置成相应的输出或输入即可。(因为在大部分应用中,是把SPI的DI和DO相连并用MCU的一个IO口来读写)。

调用示例:

#define NULL 0

SETIO=OUTPUT;
CS=0;
 RW_SPI(0xab);
 CS=1;

//向SPI写0xab数据。

 


CS=0;
 SETIO=INPUT;

 Byte=RW_SPI(NULL);                  //这里传递的NULL是没有任何意义的,可以是任何数据,只是为了保证函数

                                                               //的格式.
CS=1;

//读取SPI数据。

 

此函数对于许多低档片子来模拟SPI非常有用,代码量小,功能齐全。稍微修改,可以模拟SPI的其它模式。

 


欢迎进入老古论坛进行讨论
[单片机] 相关文章:
转:CRC算法原理及C语言实现
简介:
CRC算法原理及C语言实现 有一篇好文章,不敢独享! CRC算法原理及C语言实现(介绍了3种方法) CRC算法原理及C语言实现 -来自(我爱单片机) 摘 要 本文从理论上推导出CRC算法实现原理,给出三种分别适应不同计算机或微控制器硬件环境的C......

初浅研究PIC之延时函数和循环体优化
在PICC中使用常数指针
[转载]8位单片机的16位外部总线扩展与应用
[转载]基于 TLC2543设计的采集系统
 
下一个:[单片机]PIC8位在PICC中的数据类型
简介:
PIC8位MCU的内存都是8位字节结构的,所以PICC中对于数据的划分都是以8位为基础的。 在汇编中,我们对一个地址为0X20的内存附值: movlw 255; movwf 0x20; 但一个内存是8位结构,能表示最大的数是255。要是超过了会怎么样呢? movlw 256; movwf 0x20; 通过DEBUG后,可以看出0X20中的值不是256,而是0了。 这里可以看出PIC处理器计算过程是当计算结果超过内存能容纳的最大数(也就是所谓溢出),则自动抛弃最高......

上一个:[综合电子]ADSL互通性测试简介

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
2008-7-5 10:53:00 页面缓存:30分钟 执行时间:31毫秒