i2c.txt

来自「这是一个i2c程序,经过多次应用都能成功实现功能,而且简要实用」· 文本 代码 · 共 96 行

TXT
96
字号

#include <AT89X52.h>
#include "iic.h"
#include "intrins.h"

void StartIIC()        /*启动IIC总线*/ 
{
    SDA=1;
    _nop_();
       SCL=1;
       _nop_();
    _nop_();
       _nop_();
    _nop_();
       _nop_();
       SDA=0;
       _nop_();
    _nop_();
       _nop_();
       _nop_();
    _nop_();
    SCL=0;
       return;
}
void StopIIC()       /*停止IIC总线*/ 
{
    SDA=0;
    _nop_();

       SCL=1;
       _nop_();
       _nop_();
       _nop_();
    _nop_();
    _nop_();
       SDA=1;
       _nop_();
       _nop_();
       _nop_();
       _nop_();
    _nop_();
       return;
}
void IICMcuAcknowledge()       /*IIC总线上发送MCU应答位*/ 
{

    SDA=0;
       SCL=1;
       _nop_();
       _nop_();
       _nop_();
       _nop_();
       _nop_();
       SCL=0;
       SDA=1;      /* ???????????????*/   
       return;
}
void IICMcuNonAcknowledge()    /*IIC总线上发送MCU非应答位*/    
{

    SDA=1;
       SCL=1;
       _nop_();
       _nop_();
       SCL=0;
    SDA=0;
       return;
}
unsigned char IICCheckAcknowledge()    /*IIC总线检测从机应答位*/
{
    unsigned char IICAckFlag;
    SDA=1;        /*SDA=1; 线与吗?应为SDA=0?*/
       _nop_();    
       _nop_();     
       SCL=1;
    _nop_();    
       _nop_();
       IICAckFlag=0;
    if(SDA==0)     /*应答正常*/
      {
          _nop_();
          _nop_();
          SCL=0;
          return(IICAckFlag);
      }
        else 
         {
       IICAckFlag=1;      /*应答不正常*/
          _nop_();
          _nop_();
          SCL=0;
          return(IICAckFlag);
         } 
} 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?