?? dvs-eeprom.c
字號:
//dvs-eeprom.C
//===========================================================================================
//24c02用于存放開機(jī)密碼和本機(jī)編碼
//0,1開機(jī)標(biāo)致,23456是密碼 (6為設(shè)置標(biāo)致)
//7振鈴次數(shù)的設(shè)置標(biāo)致的地址
//8為警笛時(shí)間定時(shí)
//9球機(jī)定時(shí)間地址
//10 315解碼后的首地址
//46 防區(qū)標(biāo)志首地址
//55 電話號碼,每組號碼20位,每組第1位為設(shè)置標(biāo)致位
//===========================================================================================
#include "DVS-V1.0.H"
#include <intrins.h>
bit ErrorBit ; //讀寫錯(cuò)誤標(biāo)志 ,1錯(cuò)誤 0 正確
//========================================== 函數(shù)定義 ========================================
void Delay1Ms(unsigned int auc_time); //延時(shí)1ms*auc_time
void WrEEPROM(unsigned char address,unsigned char indata); //寫EEPROM
unsigned char RdEEPROM(unsigned char address); //讀EEPROM
//============================================================================================
//============================================================================================
//語法格式:Delay1Ms
//實(shí)現(xiàn)功能:延時(shí)1ms*auc_time
//參數(shù): 需要延時(shí)的時(shí)間
//1表示1ms
//返回值: 無
//創(chuàng)建時(shí)間:2008-12-01 修改時(shí)間:
//創(chuàng)建人員: 修改人員:
//============================================================================================
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
//實(shí)現(xiàn)功能:延時(shí)4us
//參數(shù): 無
//返回值: 無
//創(chuàng)建時(shí)間:2008-12-01 修改時(shí)間:
//創(chuàng)建人員: 修改人員:
//============================================================================================
void Delay4Us()
{
unsigned char idata luc_i;
for(luc_i=0;luc_i<8;luc_i++)
{
;
//ClearWatchDog();
}
}
//============================================================================================
//語法格式:Start()
//實(shí)現(xiàn)功能:EEPROM讀寫的開始
//參數(shù): 無
//返回值: 無
//創(chuàng)建時(shí)間:2008-12-01 修改時(shí)間:
//創(chuàng)建人員: 修改人員:
//============================================================================================
void Start()
{
EEROM_SCL=0; //低電平改變DA線
EEROM_SDA=1;
EEROM_SCL=1;
Delay4Us();
EEROM_SDA=0;
Delay4Us();
EEROM_SCL=0;
}
//============================================================================================
//語法格式:Stop()
//實(shí)現(xiàn)功能:EEPROM讀寫的停止
//參數(shù): 無
//返回值: 無
//創(chuàng)建時(shí)間:2008-12-01 修改時(shí)間:
//創(chuàng)建人員: 修改人員:
//============================================================================================
void Stop()
{
EEROM_SCL=0;
EEROM_SDA=0;
EEROM_SCL=1;
Delay4Us();
EEROM_SDA=1;
Delay4Us();
EEROM_SCL=0;
}
//============================================================================================
//語法格式:RdOperation()
//實(shí)現(xiàn)功能:EEPROM讀1字節(jié)
//參數(shù): 無
//返回值: 無
//創(chuàng)建時(shí)間:2008-12-01 修改時(shí)間:
//創(chuàng)建人員: 修改人員:
//============================================================================================
unsigned char RdOperation(void)
{
unsigned char idata luc_time; // 一個(gè)字節(jié)
unsigned char idata luc_DataIn=0; // 讀進(jìn)來的數(shù)據(jù)
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()
//實(shí)現(xiàn)功能:EEPROM寫1字節(jié)
//參數(shù): 寫入的數(shù)
//返回值: 無
//創(chuàng)建時(shí)間:2008-12-01 修改時(shí)間:
//創(chuàng)建人員: 修改人員:
//============================================================================================
void WrOperation(unsigned char DataOut)
{
unsigned char idata luc_i ; //一個(gè)字節(jié)
for(luc_i = 0 ; luc_i < 8 ; luc_i ++)
{
EEROM_SDA = DataOut & 0x80; //送數(shù)據(jù)到數(shù)據(jù)線上
DataOut <<= 1;
_nop_();
EEROM_SCL = 1; //置時(shí)鐘信號為高電平,使數(shù)據(jù)有效
Delay4Us();
EEROM_SCL = 0;
_nop_();
_nop_();
}
EEROM_SDA = 1;
_nop_();
_nop_();
EEROM_SCL = 1;
Delay4Us();
ErrorBit = EEROM_SDA;
EEROM_SCL = 0;
}
//============================================================================================
//語法格式:WrEEPROM()
//實(shí)現(xiàn)功能: 寫EEPROM
//參數(shù):
//address 寫入的地址
//indata 寫入的數(shù)據(jù)
//返回值: 無
//創(chuàng)建時(shí)間:2008-12-01 修改時(shí)間:
//創(chuàng)建人員: 修改人員:
//============================================================================================
void WrEEPROM(unsigned char address,unsigned char indata)
{
//ClearWatchDog();
Start(); //開始
WrOperation(0xa0); //寫器件地址
WrOperation(address); //寫EEPROM地址
WrOperation(indata); //寫數(shù)據(jù)
Stop(); //停止
Delay1Ms(8); //延時(shí),EEPROM內(nèi)部操作
while(0);
}
//============================================================================================
//語法格式:RdEEPROM(
//實(shí)現(xiàn)功能: 讀EEPROM
//參數(shù):
//address 讀出的地址
//返回值: 讀出的數(shù)據(jù)
//創(chuàng)建時(shí)間:2008-12-01 修改時(shí)間:
//創(chuàng)建人員: 修改人員:
//============================================================================================
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;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -