AVR内部EEPROM实验

来源:本站
导读:目前正在解读《AVR内部EEPROM实验》的相关信息,《AVR内部EEPROM实验》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《AVR内部EEPROM实验》的详细说明。
简介:本为大家提供一个片内EEPROM读写实险的程序。

/*

片内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) {

;

}

}

提醒:《AVR内部EEPROM实验》最后刷新时间 2024-03-14 01:00:14,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《AVR内部EEPROM实验》该内容的真实性请自行鉴别。