📄 main.c
字号:
/*
File: mian.c
说明: IIC总线器件24C01的读写;
Author:wolfe
Data: 2008.10
*/
#include "at89x52.h"
#include "ES51_II.h"
#include "es51_ii_lib.h"
// 操作结束
void I2c_Stop(void);
// 操作起始
void I2c_Start(void);
//读一个字节数据
unsigned char I2c_RdByte(void);
//写一个字节数据
void I2c_WrByte(unsigned char dat);
// 24CXX写一字节数据函数
// slave: 从器件地址,对于ES51-II上的24地址是:0xA0
// addr: 从器件片内地址
// dat: 数据
void EEPROM_WrOneByte(unsigned char slave,unsigned char addr,unsigned char dat)
{
I2c_Start(); // 启动总线
I2c_WrByte( slave & 0xfe ); // 写器件从地址,写器件
I2c_WrByte( addr ); // 写器件片内地址
I2c_WrByte( dat ); // 发送数据
I2c_Stop(); // 结束总线
}
// 24CXX读一字节数据函数
// .....
// .....
unsigned char EEPROM_RdOneByte(unsigned char slave,unsigned char addr)
{
unsigned char value;
I2c_Start(); // 启动总线
I2c_WrByte( slave & 0xfe ); // 写器件从地址,写器件
I2c_WrByte( addr ); // 写器件片内地址
//I2c_Stop();
I2c_Start();
I2c_WrByte( slave | 0x01 ); // 写器件从地址,读器件
value = I2c_RdByte(); // 发送数据
I2c_Stop(); // 结束总线
return value;
}
//
void main()
{
unsigned int tmp;
unsigned char tmp1;
unsigned char addr,value,i;
SMGDisplayON();
EA = 1;
for( value=0,addr=0; addr<128; addr++,value++ )
{
EEPROM_WrOneByte(ADDR_24,addr,value);
i=250;
while(i--); // 读写之间稍延时
tmp =0;
tmp = (tmp|addr)<<8;
tmp1 = EEPROM_RdOneByte(ADDR_24,addr);
tmp |= tmp1;
SMGprintf("%x",tmp); // 数码管显示地址和读出的数据
DelayS(1); // 延时1秒后继续下一地址的读写
}
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -