EEPROM 数据存储器 读写

/*******************************************************************************
1、用内部EEPROM记录CPU启动次数,并在PB口上显示出来
(8位LED来显示十六进制)
2、进行此实验请插上JP1的所有8个短路块,JP7(LED_EN)短路块。
3、通过此实验,可以对对内部EEPROM有个初步认识,了解EEPROM读写函数的操作。
4、可通过复位键让系统重启,这样就可以更新显示MCU启动的次数了。
*******************************************************************************/
#include <iom16v.h>
#include <macros.h>
/*-----------------------------------------------------------------
函数名称: void AdcInit(void) 
函数功能: EEPROM读取函数
说    明:addr:地址;number:长度;p_buff:读出数据存放指针
-----------------------------------------------------------------*/
void eeprom_read(unsigned int addr, unsigned char number, unsigned char *p_buff) 
{
    while(EECR & (1 << EEWE));
    EEARH = 0x00;
    while(number --) 
    {
        EEARL = addr ++;
        EECR |= (1 << EERE);
        *p_buff++ = EEDR;
    }
}
/*-----------------------------------------------------------------
函数名称: void AdcInit(void) 
函数功能: EEPROM写入函数
说    明:addr:地址;number:长度;p_buff:写入数据存放指针
-----------------------------------------------------------------*/
void eeprom_write(unsigned int addr, unsigned char number, unsigned char *p_buff) 
{
    EEARH = 0x00;
    while(number --) 
    {
        while(EECR & (1 << EEWE));  //EECR为EEPROM控制寄存器,EEWE写使能
        EEARL = addr ++;            //EEAR为EEPROM地址寄存器
        EEDR = *p_buff ++;          //EEDR为EEPROM数据寄存器
        EECR |= (1 << EEMWE);
        EECR |= (1 << EEWE);
    }
}

/*主函数*/
void main(void) 
{
    unsigned char temp;

    DDRA = 0x00;                /*方向输入*/
    PORTA = 0xFF;               /*打开上拉*/
    DDRB = 0xFF;                /*方向输出*/
    PORTB = 0xFF;               /*电平设置*/
    DDRC = 0x00;
    PORTC = 0xFF;
    DDRD = 0x00;
    PORTD = 0xFF;

    DelayMs(250);               /*启动延时*/
    eeprom_read(0x10, 0x01, &temp);     /*读出记录*/
    PORTB = ~temp;             /*显示记录*/
    temp ++;                /*刷新记录*/
    eeprom_write(0x10, 0x01, &temp);        /*写入记录*/

    while (1);
}

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值