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

📄 main.c

📁 这是一本在网上很难找到的教程了
💻 C
字号:
#define uchar unsigned char //定义一下方便使用
#define uint  unsigned int
#define ulong unsigned long
#include <reg52.h>     //包括一个52标准内核的头文件

char code dx516[3] _at_ 0x003b;//这是为了仿真设置的

#define	WriteDeviceAddress 0xa0	  //定义器件在IIC总线中的地址
#define	ReadDviceAddress 0xa1
sbit	SCL=P2^7;
sbit	SDA=P2^6;

sbit 	P10=P1^0;
sbit	K1=P3^2;

//定时函数
void DelayMs(unsigned int number) 
{
	unsigned char temp;
	for(;number!=0;number--) 
	{
		for(temp=112;temp!=0;temp--) ;
	}
}

//开始总线
void Start() 
{
	SDA=1;
	SCL=1;
	SDA=0;
	SCL=0;
}

//结束总线
void Stop() 
{
	SCL=0;
	SDA=0;
	SCL=1;
	SDA=1;
}


//发ACK0
void NoAck() 
{
	SDA=1;
	SCL=1;
	SCL=0;
}

//测试ACK
bit TestAck() 
{
	bit ErrorBit;
	SDA=1;
	SCL=1;
	ErrorBit=SDA;
	SCL=0;
	return(ErrorBit);
}

//写入8个bit到24c02
Write8Bit(unsigned char input) 
{
	unsigned char temp;
	for(temp=8;temp!=0;temp--) 
	{
		SDA=(bit)(input&0x80);
		SCL=1;
		SCL=0;
		input=input<<1;
	}
}

//写入一个字节到24c02中
void Write24c02(uchar ch,uchar address) 
{
	Start();
	Write8Bit(WriteDeviceAddress);
	TestAck();
	Write8Bit(address);
	TestAck();

	Write8Bit(ch);
	TestAck();
	
	Stop();
	DelayMs(10);
}

//从24c02中读出8个bit
uchar Read8Bit() 
{
	unsigned char temp,rbyte=0;
	for(temp=8;temp!=0;temp--) 
	{
		SCL=1;
		rbyte=rbyte<<1;
		rbyte=rbyte|((unsigned char)(SDA));
		SCL=0;
	}
	return(rbyte);
}

//从24c02中读出1个字节
uchar Read24c02(uchar address) 
{
	uchar ch;

	Start();
	Write8Bit(WriteDeviceAddress);
	TestAck();
	Write8Bit(address);
	TestAck();
	Start();
	Write8Bit(ReadDviceAddress);
	TestAck();
	ch=Read8Bit();
	NoAck();
	Stop();
	return(ch);
}

 //写入按键次数到24c02,并读出来显示在4个LED上

void main(void)	// 主程序
{
	uchar c1,c2;

	while(1)
	{
		c1=Read24c02(0x01);	 //读出24c02第一个地址数据
		P1=c1;				//显示在P1口的4个LED上

		if(!K1)	  //按键处理
		{
			c1++;		//值加1
			Write24c02(c1,0x01);	//重新写入24c02

			while(!K1);			 //等待按键松开
			for(c2=0;c2<250;c2++);	//松开按键去抖
		}		
	}
}

//提示,可以脱机运行看看掉电后的数据是否还在保存.

⌨️ 快捷键说明

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