打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
AVR内部EEPROM读写实验
AVR内部EEPROM读写实验
午夜粪车 发表于 - 2012-3-14 14:59:00

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

*/
#i nclude "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) {
  ;
  }
}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
AVR GCC常用头文件
治标治本,彻底解决AVR单片机EEPROM数据丢失问题
pic16单片机 pic.h头文件
两种方式实现C语言访问MCU寄存器
AVR单片机串口接收与发送程序
MSP430F149模拟IIC读写24C02程序
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服