实现存储器EEPROM AT24C02的数据读写操作.docx
上传者:zhuwo11
2022-07-15 02:27:10上传
DOCX文件
10 KB
功能:实现存储器EEPROM AT24C02的数据读写操作 采用IIC总线读写
作者:SG
时间:2004-03-15
版本:V1.0
/
^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx /
#include "INTRINS.H" #include "reg52.h"
#define WriteDeviceAddress 0xa0 〃写驱动地址指令
#define ReadDeviceAddress 0xa1 // 读驱动地址指令 sbit AT24C02_SCL = 0xa4;
sbit AT24C02_SDA = 0xa5;
/*
功能:发起始信号
*/ void Start_Cond()
{
AT24C02_SCL = 0;
_nop_();
AT24C02_SDA = 1;
_nop_();
AT24C02_SCL = 1;
_nop_();
AT24C02_SDA = 0; _nop_();
}
/*
功能:发停止信号
*/
void Stop_Cond()
{
AT24C02_SCL = 0; _nop_();
AT24C02_SDA = 0; _nop_();
AT24C02_SCL = 1; _nop_();
AT24C02_SDA = 1;
_nop_();
}
/*
功能:发确认信号
*/
void Ack() {
AT24C02_SCL = 0; _nop_();
AT24C02_SDA = 0;
AT24C02_SCL = 1; _nop_();
AT24C02_SCL = 0;
_nop_();
AT24C02_SDA = 1;
}
/*
功能:发无确认信号
*/
void NoAck()
{
AT24C02_SCL = 0;
_nop_();
AT24C02_SDA = 1;
_nop_();
AT24C02_SCL = 1;
_nop_();
AT24C02_SCL = 0;
_nop_();
}
/*
功能:写一个字节数据
*/
bit Write8Bit(unsigned char input) {
unsigned char i;
for (i=0;iv8;i++)
{
AT24C02_SCL = 0;
input <<= 1;
AT24C02_SDA = CY;
AT24C02_SCL = 1;
}
AT24C02_SCL = 0; _nop_();
AT24C02_SDA = 1;
AT24C02_SCL = 1; _nop_();
CY= AT24C02_SDA; return(CY);
/*
作者:SG
时间:2004-03-15
版本:V1.0
/
^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx ^Tx /
#include "INTRINS.H" #include "reg52.h"
#define WriteDeviceAddress 0xa0 〃写驱动地址指令
#define ReadDeviceAddress 0xa1 // 读驱动地址指令 sbit AT24C02_SCL = 0xa4;
sbit AT24C02_SDA = 0xa5;
/*
功能:发起始信号
*/ void Start_Cond()
{
AT24C02_SCL = 0;
_nop_();
AT24C02_SDA = 1;
_nop_();
AT24C02_SCL = 1;
_nop_();
AT24C02_SDA = 0; _nop_();
}
/*
功能:发停止信号
*/
void Stop_Cond()
{
AT24C02_SCL = 0; _nop_();
AT24C02_SDA = 0; _nop_();
AT24C02_SCL = 1; _nop_();
AT24C02_SDA = 1;
_nop_();
}
/*
功能:发确认信号
*/
void Ack() {
AT24C02_SCL = 0; _nop_();
AT24C02_SDA = 0;
AT24C02_SCL = 1; _nop_();
AT24C02_SCL = 0;
_nop_();
AT24C02_SDA = 1;
}
/*
功能:发无确认信号
*/
void NoAck()
{
AT24C02_SCL = 0;
_nop_();
AT24C02_SDA = 1;
_nop_();
AT24C02_SCL = 1;
_nop_();
AT24C02_SCL = 0;
_nop_();
}
/*
功能:写一个字节数据
*/
bit Write8Bit(unsigned char input) {
unsigned char i;
for (i=0;iv8;i++)
{
AT24C02_SCL = 0;
input <<= 1;
AT24C02_SDA = CY;
AT24C02_SCL = 1;
}
AT24C02_SCL = 0; _nop_();
AT24C02_SDA = 1;
AT24C02_SCL = 1; _nop_();
CY= AT24C02_SDA; return(CY);
/*
实现存储器EEPROM AT24C02的数据读写操作