📄 x25045.c
字号:
/*****************************************/
/*****Copyright (c) 2007 绍兴文理学院****/
/*********All rights reserved*************/
/***********作 者:胡 守 方************/
/*****************************************/
#include<reg52.h>
#define WRDS 0x80 //复位写允许锁存器
#define STO 0x81 //把RAM数据存入EEP
#define ENAS 0x82 //允许AUTOSTORE(自动存储)特性
#define WRITE 0x83 //把数据定稿地址AAAA
#define WREN 0x84 //设置写允许锁存器
#define RCL 0x85 //把EEP数据调入RAM
#define READ 0x86 //从RAM地址AAAA读出数据
sbit ep_ce=P0^0; //片选
sbit ep_sck=P0^1; //时钟
sbit ep_si=P0^2; //数据输入
sbit ep_so=P0^3; //数据输出
//往24C45写入一个字节,高位在前,低位在后
void in_byte(unsigned char in_put)
{
unsigned char data i;//循环变量
ep_sck=0;
for(i=0;i<8;i++) //写入8个位
{
ep_si=in_put&0x80;
ep_sck=1;
ep_sck=0;
in_put=in_put<<1;
}
ep_si=1;
}
//读24C45的RAM一字节数据
unsigned int read_24c45(unsigned char read_add)
{
unsigned char read_temp,i,y,read_h,read_l; //
unsigned int re_data; //返回值
ep_ce=1;
read_temp=read_add ;
read_temp<<=3;
read_temp|=READ;
in_byte(read_temp);
ep_si=1;
for(i=0;i<8;i++)//读前八位
{
read_h=read_h<<1;
y=ep_so;
read_h=read_h|y;
ep_sck=1;
ep_sck=0;
}
for(i=0;i<8;i++)//读后八位
{
read_l=read_l<<1;
y=ep_so;
read_l=read_l|y;
ep_sck=1;
ep_sck=0;
}
ep_ce=0;
re_data=read_h;
re_data<<=8;
re_data|=read_l;
return(re_data) ;
}
//往24C45的一个RAM地址中写入一个字节数据,
//注意本程序和DATASHEET的写入时序相反,是从高位写,而读也是从高位开始,
//所以两者一起正好抵消错误~~~
void write_24c45(unsigned char write_add,unsigned int write_dat)
{
unsigned char write_add_temp,write_dat_h,write_dat_l;
write_dat_l=write_dat; //低八位
write_dat_h=write_dat>>8; //高八位
ep_ce=1;
write_add_temp=write_add;
write_add_temp<<=3;
write_add_temp|=WRITE;
in_byte(write_add_temp);
in_byte(write_dat_h);
in_byte(write_dat_l);
ep_ce=0;
}
//出初化24C45
void init_24c45()
{
ep_ce=1;//把ROM调入RAM
in_byte(RCL);
ep_ce=0;
ep_ce=1;//开写允许
in_byte(WREN);
ep_ce=0;
ep_ce=1;//允许AUTOSTORE(自动存储)
in_byte(ENAS);
ep_ce=0;
}
void main()
{
unsigned int a0; //测试用
init_24c45();
write_24c45(2,456);//写24C45的
/*ep_ce=1; //把456从RAM存入ROM
in_byte(STO);
ep_ce=0;*/
/*ep_ce=1; //把456从ROM调入RAM
in_byte(RCL);
ep_ce=0; */
a0=read_24c45(2);
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -