加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSSRSS-巴斯仪表网
您当前的位置:首页 > 设计中心 > 可编程逻辑器件

AVR内部EEPROM读写实验

时间:2014-05-02  来源:123485.com  作者:9stone
片内EEPROM读写实险。
 1、用内部EEPROM记录CPU启动次数,并在PB口上显示出来。
 2、内部1 M晶振,程序采用单任务方式,软件延时。
 3、进行此实验请插上JP1的所有8个短路块,JP7(LED_EN)短路块。
 4、通过此实验,可以对对内部EEPROM有个初步认识,了解EEPROM函数的操作。
 5、可过复位键让系统重启,这样就可以更新显示了。

*/
#include "iom16v.h"
/*延时函数*/
void delay_ms(unsigned char i) {
 unsigned char a, b;
 for (a = 1; a < i; a++) {
  for (b = 1; b; b++) {
   ;
   }
  }
}
/*EEPROM读取函数*/
/*addr:地址;number:长度;p_buff:读出数据存放指针*/
void eprom_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;
  }
}
/*EEPROM写入函数*/
/*addr:地址;number:长度;p_buff:写入数据存放指针*/
void eprom_write(unsigned int addr, unsigned char number, unsigned char *p_buff) {
 EEARH = 0x00;
 
 while(number --) {
  while(EECR & (1 << EEWE));
  EEARL = addr ++;
  EEDR = *p_buff ++;
  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;
 delay_ms(250);    /*启动延时*/
 eprom_read(0x10, 0x01, &temp);  /*读出记录*/
 PORTB = ~temp;    /*显示记录*/
 temp ++;    /*刷新记录*/
 eprom_write(0x10, 0x01, &temp);  /*写入记录*/
 
 while (1) {
  ;
  }
}
分享到:
来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
栏目导航->可编程逻辑器件
  • 可编程逻辑器件
  • 传感器技术
  • 推荐资讯
    使用普通运放的仪表放大器
    使用普通运放的仪表放
    3V与5V混合系统中逻辑器接口问题
    3V与5V混合系统中逻辑
    数字PID控制及其改进算法的应用
    数字PID控制及其改进
    恶劣环境下的高性价比AD信号处理数据采集系统
    恶劣环境下的高性价比
    栏目更新
    栏目热门