一、理论讲解
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;//把高位取出来 再把两个拆分起来写进去
(后面讲解了再写