1. **************************************************************************
  2. * 函数原型: unsigned char ISD_SendData(unsigned char dat);
  3. * 能: CPU 发送&读回数据 (用于语音1760 1700)
  4. **************************************************************************/
  5. unsigned char ISD_SendData(unsigned char dat) // 保证外部SS=1
  6. {
  7. unsigned char i,j,BUF_ISD=dat;
  8.  
  9. SCK=1; // 初始条件
  10. SS=0; // 使能ISD1700 的SPI
  11. for(j=4;j>0;j--) // 延迟
  12. {;}
  13. for(i=0;i<8;i++) // 发送&接收8 位数据
  14. {
  15. SCK=0;
  16. for(j=2;j>0;j--) // 延迟
  17. {;}
  18. if(BUF_ISD&0x01) // 将BUF_ISD 中的最低位数据发送到MOSI 端口
  19. MOSI=1;
  20. else
  21. MOSI=0;
  22.  
  23. BUF_ISD>>=1; // BUF_ISD 右移一位
  24. if(MISO) // 逐个接收MISO 端口的数据。将数据存在BUF_ISD
  25. //的最高位
  26. BUF_ISD|=0x80;
  27.  
  28. SCK=1;
  29. for(j=6;j>0;j--) // 延迟
  30. {;}
  31. }
  32. MOSI=0;
  33. return(BUF_ISD); //返回接收到的数据
  34. }
  35.  
  36. /*无线24l01*/
  37. unsigned char SPI_RW(unsigned char byte)
  38. {
  39. unsigned char bit_ctr;
  40.  
  41. for(bit_ctr=0;bit_ctr<8;bit_ctr++) // output 8-bit
  42. {
  43. if(byte & 0x80)
  44. RF_MOSI = 1;
  45. else
  46. RF_MOSI = 0;
  47. byte = (byte << 1);
  48. RF_SCK = 1;
  49. if(RF_MISO) byte |= 1;
  50. RF_SCK = 0;
  51. }
  52.  
  53. return(byte); //返回接收到的数据
  54. }

位操作 写读同步(无线) (语音1760 1700) ( 无线24l01)的更多相关文章

  1. python的读写和写读操作

    # 读写操作 (读写操作是正常的)f = open('log',mode='r+',encoding='utf-8') # log是文件名 print(f.read()) f.write(" ...

  2. NB-IoT无线通信模块与Lora无线通信协议技术分析与前景展望

    物联网的快速发展对无线通信技术提出了更高的要求,专为低带宽.低功耗.远距离.大量连接的物联网应用而设计的LPWAN(low-power Wide-Area Network,低功耗广域网)也快速兴起.物 ...

  3. C 常用的输入输出 栈 哈希 文件写读 实现 字符串处理

    #include "stdafx.h"#include <stdio.h>#include <string.h>#include <stdlib.h& ...

  4. py库: xlwt 、xlrd (写读EXCEL文件)

    写EXCEL文件 # -*- coding: utf-8 -*- import xlwt book = xlwt.Workbook(encoding = "utf-8", styl ...

  5. 常用位操作,读8位 I2C 1302 18B20 .

    /*1302*/ unsigned char DS1302OutputByte(void) //实时时钟读取一字节(内部函数) { unsigned char i; for(i=8; i>0; ...

  6. iOS-plist文件的写读

    NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"xiaoli" ofType:@"plist ...

  7. volatile写读的内存语义

    1,当写一个volatile变量时,JMM(java内存模型)会把该线程本地内存中的所有共享变量刷新到主内存中去 2,当读取一个volatile变量时,该线程会将本地内存置为无效,线程将从主内存中读取 ...

  8. git远程写协作同步

    1:创建一个要提交的文件2 git init 初始化 3 git remote add origin https://github.com/maohongli/cang.git 建立远程连接4 git ...

  9. Aircrack-ng无线审计工具破解无线密码

    Aircrack-ng工具 Aircrack-ng是一个与802.11标准的无线网络分析的安全软件,主要功能有网络探测.数据包嗅探捕获.WEP和WPA/WPA2-PSK破解.Aircrack可以工作在 ...

随机推荐

  1. char[]转换成wchar_t的转换方法(GNU Libc规定wchar_t为32位)

    wchar_t是C/C++的字符数据类型,是一种扩展的字符存储方式,wchar_t类型主要用在国际化程序的实现中,但它不等同于unicode编码.unicode编码的字符一般以wchar_t类型存储. ...

  2. Delphi 的动态数组

    传统的Pascal 语言其数组大小是预先确定的,当你用数组结构声明数据类型时,你必须指定数组元素的个数.专业程序员也许知道些许动态数组的实现技术,一般是采用指针,用手工分配并释放所需的内存. Delp ...

  3. 将dll放进exe[.Net]

    原文:将dll放进exe[.Net] 两种方案: 1.使用ILMerge工具. 缺点:需离开工程,使用第三方工具(ILMerge). 2.将dll作为Resource放进exe,exe执行时动态加载( ...

  4. php 前台数据显示

    <pre name="code" class="html"> public function show(){ echo "访问了index ...

  5. HDU 1551 Cable master

    题解:很显然的二分检索,在算法艺术上看过原题,不过这里要注意精度: #include <cstdio> int n,m; ]; bool test(double x){ ,i; ;i< ...

  6. IPhone多视图切换

    处理IPhone多个view切换是我们常遇到的问题,接下来有个比较实用的方法: 而且还附有创建空项目,内存告急处理和动画效果的实现! 具体步骤: 1.创建一个空的项目,然后添加一个ViewContro ...

  7. JS中onload的各种使用

    1.最简单的调用方式 直接写到html的body标签里面,如: <html> <body onload="func()"> </body> &l ...

  8. GCD详细使用笔记

    第一.通过GCD创建队列(Queue) 创建队列方式有以下几种: 1.创建一个串行队列: dispatch_queue_t queue =dispatch_queue_create("串行队 ...

  9. JavaSE学习总结第12天_API常用对象2

      12.01 Scanner的概述和构造方法原理 Scanner类概述:JDK5以后用于获取用户的键盘输入 构造方法:public Scanner(InputStream source) publi ...

  10. Zend Studio 如何配置本地apache服务器使用xdebug调试php脚本

    本地环境搭配: apache 2.2 安装位置:D:/program files/Apache Software Foundation/Apache2.2 php 5.2.10 安装位置:C:/php ...