第十讲 AT24C02

一、理论讲解

1.主要特性

2.封装类型

3.引脚定义

4.结构框图

5.原理图

6.存储组织

7.字节写      页写入

二、代码编写

1.写EEPROM函数

2.任意地址读  连续顺序读

3.读EEPROM函数

4.原理补充

三、代码编写

1.数组的保存

unsigned char dat[2] = {30,60};
/* 键盘处理函数 */
void Key_Proc()
{
	if(Key_Slow_Down) return;
	Key_Slow_Down = 1;//键盘减速程序

	Key_Val = Key_Read();//实时读取键码值
	Key_Down = Key_Val & (Key_Old ^ Key_Val);//捕捉按键下降沿
	Key_Up = ~Key_Val & (Key_Old ^ Key_Val);//捕捉按键上降沿
	Key_Old = Key_Val;//辅助扫描变量

	switch(Key_Down)
	{
		case 19:
			dat[0] -= 10;
		break;
		case 18:
			dat[1] -= 10;
		break;
		case 17:
			EEPROM_Write(dat,0,2);
		break;
	}
}

/* 信息处理函数 */
void Seg_Proc()
{
	if(Seg_Slow_Down) return;
	Seg_Slow_Down = 1;//数码管减速程序
	
	Seg_Buf[0]=dat[0]/10;
	Seg_Buf[1]=dat[0]%10;
	Seg_Buf[6]=dat[1]/10;
	Seg_Buf[7]=dat[1]%10;
}

/* Main */
void main()
{
	System_Init();
	Timer0Init();
	EEPROM_Read(dat,0,2);
	while (1)
	{
		Key_Proc();
		Seg_Proc();
		Led_Proc();
		
	}
}

2.变量的保存

1.char形变量

unsigned char 不会溢出,unsigned int 会溢出

unsigned char a=200;
/* 键盘处理函数 */
void Key_Proc()
{
	if(Key_Slow_Down) return;
	Key_Slow_Down = 1;//键盘减速程序

	Key_Val = Key_Read();//实时读取键码值
	Key_Down = Key_Val & (Key_Old ^ Key_Val);//捕捉按键下降沿
	Key_Up = ~Key_Val & (Key_Old ^ Key_Val);//捕捉按键上降沿
	Key_Old = Key_Val;//辅助扫描变量

	switch(Key_Down)
	{
		case 19:
			a += 10;
		break;
		case 18:
			//dat[1] -= 10;
		break;
		case 17:
			//EEPROM_Write(dat,0,2);
		break;
		case 16:
			EEPROM_Write(&a,0,1);
		break;
	}
}

/* 信息处理函数 */
void Seg_Proc()
{
	if(Seg_Slow_Down) return;
	Seg_Slow_Down = 1;//数码管减速程序
	
	Seg_Buf[0]=a/100%10;
	Seg_Buf[1]=a/10%10;
	Seg_Buf[2]=a%10;
}


/* Main */
void main()
{
	System_Init();
	Timer0Init();
	EEPROM_Read(&a,0,1);
	while (1)
	{
		Key_Proc();
		Seg_Proc();
		Led_Proc();
		
	}
}

2.int型的保存

要把变量拆开来

unsigned int a;

b = a & 0x0f;//把高位取出来 再把两个拆分起来写进去

(后面讲解了再写

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值