⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 24c02.c

📁 24C16读写程序,初写程序,请多多指教
💻 C
字号:

//AT24C16读写
#include <reg51.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int

#define	READ	0xa1		// 器件地址以及读取操作
#define	WRITE 0xa0		// 器件地址以及写入操作

uchar code dis_code[] = {0x70,0xb0,0xd1,0xe0,0xd1,0xb0,0x71,0xf2};	 // 写入到AT24C01的数据串
uchar code display[8];				

bit ack;	//应答标志

sbit SDA = P3^0;
sbit SCL = P3^1;

void start();
void stop();
bit WriteByte(uchar write_data);
uchar ReadByte(uchar random_addr);
void delayms(uchar ms);
void WriteStr(uchar sla,uchar StartAddr,uchar *Str,uchar num);


main(void)
{
	uchar i;
	delayms(250);
	
	WriteStr(0xa0,0x00,dis_code,8);
	for(i=0;i<8;i++)
	{
		P1 = ReadByte(i);	// 循环读取24Cxx内容,并输出到P0口
		delayms(250);
		delayms(250); 
	} 

	while(1);
}

	   
// 开始位
void start()
{
	SDA = 1;
	SCL = 1;
	_nop_();
	_nop_();
	SDA = 0;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	SCL = 0;
}


// 停止位
void stop()
{
	SDA = 0;
	_nop_();
	_nop_();
	SCL = 1;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	SDA = 1;
}


// 从MCU移出数据到AT24Cxx
bit WriteByte(uchar write_data)
{
	uchar i;
	bit ack_bit;
	for(i = 0; i < 8; i++)		// 循环移入8个位
	{
		SDA = (bit)(write_data & 0x80);
		_nop_();
		SCL = 1;
		_nop_();
		_nop_();
		SCL = 0;
		write_data <<= 1;
	}
	SDA = 1;			// 读取应答
	_nop_();
	_nop_();
	SCL = 1;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	ack_bit = SDA;
	SCL = 0;
	return ack_bit;			// 返回AT24Cxx应答位
}

// 在指定地址读取
uchar ReadByte(uchar random_addr)
{	
	uchar i,read_data;
	start();
	WriteByte(WRITE);
	WriteByte(random_addr);	  	
	start();
	WriteByte(READ);
	for(i = 0; i < 8; i++)
	{
		SCL = 1;
		read_data <<= 1;
		read_data |= (uchar)SDA;
		SCL = 0;
	}
	stop();
	return read_data;
} 

// 在指定地址addr开始写入数据write_data
void WriteStr(uchar sla,uchar StartAddr, uchar *Str,uchar num)
{
	uchar i;
	start();
	WriteByte(sla);	
	WriteByte(StartAddr);

	for(i=0;i<num;i++)
	{
		
		WriteByte(*Str);
		Str++;
	}
	stop();
	delayms(10);		// 写入周期
}
	 
// 延时子程序
void delayms(uchar ms)	
{
	uchar i;
	while(ms--)
	{
		for(i = 0; i < 120; i++);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -