📄 24cxx.c
字号:
//------------------------------------------------------
//NAME:24CXX DRIVER FUNCTION
#include <reg52.h>
#include <intrins.h>
#include "24cxx.h"
//------------------------------------------------------
#define NOP() _nop_()
//------------------------------------------------------
sbit SCL=P3^2; //24c02 SCL
sbit SDA=P3^3; //24c02 SDA
//------------------------------------------------------
bit oldEA; //save EA status
//------------------------------------------------------
//调用方式:void I2CStart(void)
//------------------------------------------------------
void I2CStart(void){
oldEA=EA;EA=0;
SDA=1;SCL=1;NOP(); //INI
SDA=0;NOP();SCL=0; //START
}
//------------------------------------------------------
//调用方式:void I2CStop(void)
//------------------------------------------------------
void I2CStop(void){
SCL=0;SDA=0;NOP(); //INI
SCL=1;NOP();SDA=1; //STOP
EA=oldEA;
}
//------------------------------------------------------
//调用方式:bit I2CAck(void)
//函数说明:等待从器件接收方的应答
//------------------------------------------------------
bit WaitAck(void){
unsigned char i=0xff;
SDA=1;NOP();SCL=1;NOP();
while(SDA)if(!(i--)){I2CStop();return 0;}
SCL=0;
return 1;
}
//------------------------------------------------------
//调用方式:void SendAck(void)
//函数说明:主器件为接收方,应答信号。
//------------------------------------------------------
void SendAck(void){
SDA=0;NOP();SCL=1;NOP();SCL=0;
}
//------------------------------------------------------
//调用方式:void SendNoAck(void)
//函数说明:主器件为接收方
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -