久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

立即注冊 登錄
返回首頁

uid:62214的個人空間

日志

IIC通訊程序

已有 1131 次閱讀2014-5-29 06:45 | 程序

#include <reg51.h>
#include "delay.h"
#include "IIC.h"
sbit SDA = P2^0;
sbit SCL = P2^1;
 
/**********************************************************
 啟動子程序
 在 SCL 高電平期間 SDA 發生負跳變
**********************************************************/
void I2C_start()
{
   SDA = 1;
   SCL = 1;
   delayNOP();
   SDA = 0;
   delayNOP();
   SCL = 0;
}
/**********************************************************
 停止子函數
 在 SCL 高電平期間 SDA 發生正跳變
**********************************************************/
void I2C_stop()
{
   SDA = 0;
   SCL = 1;
   delayNOP();
   SDA = 1;
   delayNOP();
}
/**********************************************************
 發送應答位子函數
 在 SDA 低電平期間 SCL 發生一個正脈沖
**********************************************************/
void  iic_ack()
{
   SDA = 0;
   SCL = 1;
   delayNOP();
   SCL = 0;
   NOP;
   SDA = 1;
}
/**********************************************************
 發送非應答位子函數
 在 SDA 高電平期間 SCL 發生一個正脈沖
**********************************************************/
void  iic_noack()
{
   SDA = 1;
   SCL = 1;
   delayNOP();
   SCL = 0;
   delayNOP();
   SDA = 0;
}
/**********************************************************
 應答位檢測子函數
**********************************************************/
bit iic_testack()
{
   bit ack_bit;
   SDA = 1;          //置SDA為輸入方式
   SCL = 1;
   delayNOP();
   ack_bit = SDA;
   SCL = 0;
   NOP;
   return ack_bit;  //返回應答位
}
/**********************************************************
 發送一個字節子程序
**********************************************************/
unsigned char I2C_write_byte(unsigned char indata)
{
    unsigned char i, ack;
    // I2C 發送8 位數據
   for (i=0; i<8; i++)
   {
     // 高在前低在后
     if (indata & 0x80)
      SDA = 1;
     else
      SDA = 0;
     // 發送左移一位
     indata <<= 1;
     delayNOP();
     SCL = 1;
     delayNOP();
     SCL = 0;
   }
    // 設置SDA為輸入
   SDA =1;;
   delayNOP();
    // 讀取從機應答狀態
    SCL = 1;
    delayNOP();
    if(SDA)
    {
      ack = I2C_NACK;
    }
    else
    {
      ack = I2C_ACK;
    }
    SCL = 0;
    return ack;
}
/**********************************************************
  讀一個字節子程序
**********************************************************/
unsigned char I2C_read_byte(unsigned char ack)
{
    unsigned char i, data1 = 0;
    // SDA 設置輸入方向
    SDA = 1;
    // I2C 接收8位數據
    for(i = 8; i > 0; i--)
    {
      data1 <<= 1;
      SCL = 1;
      delayNOP();
        // 高在前低在后
        if (SDA)
        {
          data1++;
  }
        SCL = 0;
        delayNOP();
    }
    // 主機發送應答狀態
    if(ack == I2C_ACK)
      SDA = 0;
    else
      SDA = 1;
    delayNOP();
    SCL = 1;
    delayNOP();
    SCL = 0;
    return data1;
}
/*********************************************************/

路過

雞蛋

鮮花

握手

雷人

評論 (0 個評論)

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

返回頂部
主站蜘蛛池模板: 久久久久国产一区二区三区 | 欧美午夜精品久久久久久浪潮 | 国产一区在线免费 | 97久久久久久久久 | 黄网站在线播放 | 久久久久一区 | 国内精品在线视频 | 午夜爽爽爽男女免费观看 | 午夜免费精品视频 | 成人免费小视频 | 久久com| 在线成人av| 国产一区二区三区 | 高清一区二区视频 | 成人a在线观看 | 中文字幕 在线观看 | 日韩一区二区av | 在线精品亚洲欧美日韩国产 | 在线成人| 亚洲成人三级 | 欧美日本免费 | 国产欧美一区二区三区另类精品 | 亚洲国产精品一区 | 久久久91精品国产一区二区三区 | 日韩视频精品 | 欧美日韩综合一区 | 日韩精品一区二区三区中文在线 | 国产精品一区二区三区在线 | 国产精品视频一二三区 | 中文字幕一区二区三区不卡 | 午夜精品久久久久久久久久久久久 | 九九精品在线 | 涩涩鲁亚洲精品一区二区 | 新91视频网| 国产乱码精品一区二区三区五月婷 | 精品在线视频播放 | 国产精品第2页 | 中国美女av | 视频精品一区二区三区 | 久久久久久久国产 | 国内精品伊人久久久久网站 |