📄 dvs-eeprom.c
字号:
//dvs-eeprom.C
//===========================================================================================
//24c02用于存放开机密码和本机编码
//0,1开机标致,23456是密码 (6为设置标致)
//7振铃次数的设置标致的地址
//8为警笛时间定时
//9球机定时间地址
//10 315解码后的首地址
//46 防区标志首地址
//55 电话号码,每组号码20位,每组第1位为设置标致位
//===========================================================================================
#include "DVS-V1.0.H"
#include <intrins.h>
bit ErrorBit ; //读写错误标志 ,1错误 0 正确
//========================================== 函数定义 ========================================
void Delay1Ms(unsigned int auc_time); //延时1ms*auc_time
void WrEEPROM(unsigned char address,unsigned char indata); //写EEPROM
unsigned char RdEEPROM(unsigned char address); //读EEPROM
//============================================================================================
//============================================================================================
//语法格式:Delay1Ms
//实现功能:延时1ms*auc_time
//参数: 需要延时的时间
//1表示1ms
//返回值: 无
//创建时间:2008-12-01 修改时间:
//创建人员: 修改人员:
//============================================================================================
void Delay1Ms(unsigned int auc_time)
{
unsigned int idata luc_i,luc_j;
for(luc_j = 0 ;luc_j < auc_time ; luc_j++)
{
for(luc_i=0;luc_i<310;luc_i++)
{
// ClearWatchDog();
}
}
}
//============================================================================================
//语法格式:Delay4us
//实现功能:延时4us
//参数: 无
//返回值: 无
//创建时间:2008-12-01 修改时间:
//创建人员: 修改人员:
//============================================================================================
void Delay4Us()
{
unsigned char idata luc_i;
for(luc_i=0;luc_i<8;luc_i++)
{
;
//ClearWatchDog();
}
}
//============================================================================================
//语法格式:Start()
//实现功能:EEPROM读写的开始
//参数: 无
//返回值: 无
//创建时间:2008-12-01 修改时间:
//创建人员: 修改人员:
//============================================================================================
void Start()
{
EEROM_SCL=0; //低电平改变DA线
EEROM_SDA=1;
EEROM_SCL=1;
Delay4Us();
EEROM_SDA=0;
Delay4Us();
EEROM_SCL=0;
}
//============================================================================================
//语法格式:Stop()
//实现功能:EEPROM读写的停止
//参数: 无
//返回值: 无
//创建时间:2008-12-01 修改时间:
//创建人员: 修改人员:
//============================================================================================
void Stop()
{
EEROM_SCL=0;
EEROM_SDA=0;
EEROM_SCL=1;
Delay4Us();
EEROM_SDA=1;
Delay4Us();
EEROM_SCL=0;
}
//============================================================================================
//语法格式:RdOperation()
//实现功能:EEPROM读1字节
//参数: 无
//返回值: 无
//创建时间:2008-12-01 修改时间:
//创建人员: 修改人员:
//============================================================================================
unsigned char RdOperation(void)
{
unsigned char idata luc_time; // 一个字节
unsigned char idata luc_DataIn=0; // 读进来的数据
for(luc_time=0;luc_time<8;luc_time++)
{
EEROM_SCL=0;
Delay4Us();
EEROM_SCL=1;
Delay4Us();
luc_DataIn=(luc_DataIn<<1)|EEROM_SDA;
}
EEROM_SCL=0;
Delay4Us();
EEROM_SDA=1;
Delay4Us();
EEROM_SCL=1;
return luc_DataIn;
}
//============================================================================================
//语法格式:WrOperation()
//实现功能:EEPROM写1字节
//参数: 写入的数
//返回值: 无
//创建时间:2008-12-01 修改时间:
//创建人员: 修改人员:
//============================================================================================
void WrOperation(unsigned char DataOut)
{
unsigned char idata luc_i ; //一个字节
for(luc_i = 0 ; luc_i < 8 ; luc_i ++)
{
EEROM_SDA = DataOut & 0x80; //送数据到数据线上
DataOut <<= 1;
_nop_();
EEROM_SCL = 1; //置时钟信号为高电平,使数据有效
Delay4Us();
EEROM_SCL = 0;
_nop_();
_nop_();
}
EEROM_SDA = 1;
_nop_();
_nop_();
EEROM_SCL = 1;
Delay4Us();
ErrorBit = EEROM_SDA;
EEROM_SCL = 0;
}
//============================================================================================
//语法格式:WrEEPROM()
//实现功能: 写EEPROM
//参数:
//address 写入的地址
//indata 写入的数据
//返回值: 无
//创建时间:2008-12-01 修改时间:
//创建人员: 修改人员:
//============================================================================================
void WrEEPROM(unsigned char address,unsigned char indata)
{
//ClearWatchDog();
Start(); //开始
WrOperation(0xa0); //写器件地址
WrOperation(address); //写EEPROM地址
WrOperation(indata); //写数据
Stop(); //停止
Delay1Ms(8); //延时,EEPROM内部操作
while(0);
}
//============================================================================================
//语法格式:RdEEPROM(
//实现功能: 读EEPROM
//参数:
//address 读出的地址
//返回值: 读出的数据
//创建时间:2008-12-01 修改时间:
//创建人员: 修改人员:
//============================================================================================
unsigned char RdEEPROM(unsigned char address)
{
unsigned char idata luc_x;
//ClearWatchDog();
Start();
WrOperation(0xa0); //写器件地址
WrOperation(address);
Start();
WrOperation(0xa1); //写EEPROM地址(读)
luc_x=RdOperation();
Stop();
return luc_x;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -