📄 x5045.c
字号:
/*********************************************************************************************************
* x5045读写控制
* QZhao,2007
* All Rights Reserved
* File : x5045.c
* By : QZhao
* Contact : zq1987731@163.com
*********************************************************************************************************/
/*★★★可调用函数:R5045(地址)->读EEPROM地址内容 W5045(地址,内容)->将内容送入EEPROM指定地址*/
/*********************************************************************************************************
*
* 写一字节
*
*********************************************************************************************************/
static void write_byte(uchar mdata)
{
uchar i;
SCK=0;
NOP
for(i=0;i<8;i++)
{
W_8255(mdata,2);
SCK=1;
mdata>>=1;
SCK=0;
}
}
/*********************************************************************************************************
*
* 读一字节
*
*********************************************************************************************************/
static uchar read_byte(void)
{
uchar i,result;
result=0;
for(i=0;i<8;i++)
{
SCK=1;
result=result<<1;
if(R_PC(6)) result|=0X01;
SCK=0;
NOP
}
return(result);
}
/*********************************************************************************************************
*
* 清看门狗
* 人口参数:无
* 返回值:无
* 功能:清除看门狗计数
*
*********************************************************************************************************/
void CLR_WCHDOG(void)
{
CLR_CS_5045
NOP
SETB_CS_5045
}
/*********************************************************************************************************
*
* 写状态寄存器
*
*********************************************************************************************************/
void wreg_5045(uchar mcode)
{
CLR_CS_5045
write_byte(WREN);
SETB_CS_5045
NOP
CLR_CS_5045
write_byte(WRSR);
write_byte(mcode);
NOP
SETB_CS_5045
delayms(10);
}
/*********************************************************************************************************
*
* 读EEPROM
* 人口参数:R5045(地址)
* 返回值:读出的数据
* 功能:在EEPROM指定地址读出数据
*
*********************************************************************************************************/
uchar R5045(uint address)
{
uchar result;
CLR_CS_5045
NOP
write_byte((char)(address>255 ? (0x08|READ): READ)); //是否翻页
write_byte((char)(address & 0x00ff));
result=read_byte();
NOP
SETB_CS_5045
return(result);
delayms(10); //此处延时根据实际情况,如果不延时,可能会不正常
}
/*********************************************************************************************************
*
* 写EEPROM
* 人口参数:W5045(地址,数据)
* 返回值:无
* 功能:在X5045的EEPROM指定地址内写入指定数据
*
*********************************************************************************************************/
void W5045(uint address,uchar udata)
{
CLR_CS_5045
write_byte(WREN);
SETB_CS_5045
NOP
CLR_CS_5045
write_byte((uchar)(address>255 ? (0x08|WRITE): WRITE));
write_byte((uchar)(address & 0x00ff));
write_byte(udata);
NOP
SETB_CS_5045
delayms(10); //此处延时根据实际情况,如果不延时,可能会不正常
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -