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; //左移
            }
    }

  • 相关阅读:
    使用B或BL跳转时,下一条指令的地址的计算
    【flask-Email】邮件发送
    【MAC】 命令行解压缩 rar 文件
    【flask_sqlalchemy】模糊查询
    【python】集合 list差集|并集|交集
    【pycharm】Mac版快捷键
    【mysql】查询最新的10条记录
    【Python】—— 获取当前运行函数名称和类方法名称
    【Python】—— 获取函数内部变量名称
    【python3】 抓取异常信息try/except
  • 原文地址:https://www.cnblogs.com/riskyer/p/3262971.html
Copyright © 2011-2022 走看看