eeprom.c

来自「winAVR编写的MEGA16内部EEPROM读写程序」· C语言 代码 · 共 58 行

C
58
字号
/*
 * 内部EEPROM读写实验程序,用winavr的库函数eeprom.h里的函数访问eerpom,系统重启一次数码管显示加1
 * EasyAVR-M16 开发板例程
 * CopyRights @ EES
 * Author:ken
 * Date:2007-8-20
*/

// CLOCK: 7.3728MHZ

#include <avr/io.h>
#include <avr/eeprom.h>
#include "disp.h"
#include "type.h"


uchar buff[8]={0,0,0,0,0,0,0,0};                          //8位显示缓冲区


int main(void)
{
  uchar aa;
  
  DispPortInit();
 
	//EEPROM区 变量定义法访问
	__attribute__((section(".eeprom"))) uchar eeprom_val ;  //定义EEPROM变量
	eeprom_busy_wait();                                    //等待EEPROM读写就绪
  aa=eeprom_read_byte(eeprom_val);                       //读取EEPROM 0地址的内容到aa中
  eeprom_busy_wait();                                    //等待EEPROM读写就绪
	//PORTB=~aa;
  aa++;
  eeprom_busy_wait();                                    //等待EEPROM读写就绪
	eeprom_write_byte(eeprom_val, aa);                     //把aa值写到EEPROM 0地址处
  eeprom_busy_wait();                                    //等待EEPROM读写就绪
	/*
	//直接指定EEPROM地址法
	eeprom_busy_wait();                                    //等待EEPROM读写就绪
  aa=eeprom_read_byte(0);                                //读取EEPROM 0地址的内容到aa中
  eeprom_busy_wait();                                    //等待EEPROM读写就绪
	//PORTB=~aa;
  aa++;
  eeprom_busy_wait();                                    //等待EEPROM读写就绪
	eeprom_write_byte(0, aa);                              //把aa值写到EEPROM 0地址处
  eeprom_busy_wait();                                    //等待EEPROM读写就绪
  */
	buff[0]=aa%10;
  buff[1]=(aa/10)%10;
  buff[2]=aa/100;

  while(1)
  {
    Disp(buff); 
  }
}
  
 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?