zoukankan      html  css  js  c++  java
  • 常用位操作,写8位 12864串口模式 I2C 1302 18B20

    /*以1302为例*/
    void DS1302InputByte(unsigned char d)  //实时时钟写入一字节(内部函数)
    {
        unsigned char i;
        ACC = d;
        for(i=8; i>0; i--)
        {
            DS1302_IO = ACC0;            //相当于汇编中的 RRC
            DS1302_CLK = 1;   //先写底位
            DS1302_CLK = 0;
            ACC = ACC >> 1;
        }
    }
    /*以18b20为例*/
    /*---------------------------写一个字节------------------------------*/
    writeonechar(uchar dat)
    {
      unsigned  char  i=0;
      for(i=8;i>0;i--)
      {
      DQ=0;
      DQ=dat&0x01;
      delay_us(5);
      DQ=1;
      dat>>=1;
      }
      delay_us(4);
    }

    /*I2C*/
    void write_byte(uchar dat)   // 写函数
    {
     char i;
     uchar temp;
     temp=dat;
     delaywus();
     scl=0;
     for(i=0;i<8;i++)
      {
      temp=temp<<1;        //把temp左移一位
      sda=CY;        //把进位中的位送到SDA
      delaywus();
      scl=1;
      delaywus();
      scl=0;
      delaywus();
     }
     sda=1;  /*总线释放**/
     delaywus();
    }

    /*I2C*/
    uchar read_byte()    //读一个字节的函数
    {
     uchar i,j,k;
     scl=0;
     delaywus();
     sda=1;
     delaywus();
     for(i=0;i<8;i++)   //8个循环,读一个字节
     {
      scl=1;
      delaywus();
      j=sda;
      k=(k<<1)|j;    //按位相或,把数据移入k
      scl=0;
      delaywus();
     }
     return k;    //返回值是K,读得的数据
    }

    /*12864*/
    void write_zj(uchar bbyte)
    {    char i;
           for(i=0;i<8;i++)
     {
            SID=bbyte&0x80; //取出最高位
            SCLK=1;
            SCLK=0;
            bbyte<<=1; //左移
            }
    }

  • 相关阅读:
    Vue生命周期,及父子组件生命周期顺序
    使用jquery制作可视化的组织结构
    用Moon.Orm来做分页数据显示
    bash脚本之代码统计
    CSS选择符总结
    css选择符归类
    APP测试与WEB测试的区别
    使用Jmeter 对APP进行压力测试
    Python基础之数据类型
    App测试要点以及Bug分类
  • 原文地址:https://www.cnblogs.com/riskyer/p/3262971.html
Copyright © 2011-2022 走看看