ATmega8535L Eeprom示例程序

发布者:CelestialLight最新更新时间:2017-12-13 来源: eefocus关键字:ATmega8535L  Eeprom 手机看文章 扫描二维码
随时随地手机看文章

ATmega8535L Eeprom示例程序

//***************ICCAVR V6.30编译*****************// 

#include                  

#define uchar unsigned char 
#define uint  unsigned int 

//数码管字型表,对应0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F// 
uchar Table[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 
                 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; 
uchar Read_Data[4];            //定义读出数据 

void DelayMs(uint i)           //Ms级延时,参数i为延时时间 
{uint j; 
 for(;i!=0;i--) 
  {for(j=8000;j!=0;j--) {;}} 


void Display(uchar *p)         //动态显示函数,参数p为待显示的数组名 
{uchar i,sel=0x01;            
 for(i=0;i<4;i++) 
  {PORTA=sel;                  //选通最右边的数码管 
   PORTC=0xff-Table[p[i]];     //送字型码 
   DelayMs(1);                 //显示延时     
   sel=sel<<1;                 //移位以显示前一位 
  } 


void Init_IO(void)             //初始化I/O口 
{DDRA=0xff;                    //设置A口为推挽1输出 
 PORTA=0xff; 
 DDRC=0xff;                    //设置C口为推挽1输出              
 PORTC=0xff; 


void Write_EEPROM(uchar Data,uint Address) 
{if(EECR&0x20) DelayMs(4); 
 EEARH=Address>>8; 
 EEARL=Address&0x00ff; 
 EEDR=Data; 
 EECR=EECR|0x04; 
 EECR=EECR|0x02; 
 DelayMs(4); 


uchar Read_EEPROM(uint Address) 
{uchar i; 
 if(EECR&0x01) DelayMs(4); 
 EEARH=Address>>8; 
 EEARL=Address&0x00ff; 
 EECR=EECR|0x01; 
 DelayMs(5); 
 i=EEDR; 
 return(i); 


void main(void) 
{uchar i; 
 Init_IO();                    //初始化I/O口 
 PORTA=0xff;                   //点亮以测试所有的数码管 
 PORTC=0x00;    
 DelayMs(300);                 //延时 
 PORTC=0xff;                   //熄灭所有的数码管 
 for(i=0;i<4;i++) 
    Write_EEPROM(5*i,i); 
 for(i=0;i<4;i++) 
    Read_Data[i]=Read_EEPROM(i); 
 while(1) 
 Display(Read_Data); 


关键字:ATmega8535L  Eeprom 引用地址:ATmega8535L Eeprom示例程序

上一篇:ATmega8535L跑马灯程序(ICC编译)
下一篇:atmega8535 Ad转换的c程序

推荐阅读最新更新时间:2024-03-16 15:49

MAXQ环境下EEPROM的保护措施
介绍 在嵌入式微控制器应用中,通常都要用到非易失性存储器。无论是掉电时维持需要保存的设置,还是存储公司的重要记录,可靠的非易失性存储器都是现代微控制器领域的一个基本单元。 非易失性存储常常采用外部串行存储器实现。多年以来,该领域用到了数十亿颗类似存储器件,它们的可靠性得到了的广泛认可。目前,存储器可以做到几百字节到1兆字节甚至更大的容量,在每一个需要保持设置的设备中,都能找到这样一个紧凑、廉价的器件。 包括EEPROM、闪存和旋转式存储器在内,所有类型的非易失性存储器都面临一个共同的问题:写周期被中断时,数据会丢失。一旦在写周期执行过程中掉电,那么即使再恢复电源,也很难修复损坏的数据。 本文提出了一种基于事务的提交-回退机制,
[缓冲存储]
AVR单片机EEPROM的操作
本程序简单的示范了如何使用ATMEGA16的EERPOM EEPROM的简介 EEPROM的写操作 EEPROM的读操作 出于简化程序考虑,各种数据没有对外输出,学习时建议使用JTAG ICE硬件仿真器 在打开调试文件到JTAG后, 打开Debug - JTAG ICE Options菜单, 然后在JTAG ICE Properties中点击Dbug页面,将preserve eeprom选项选中。 在每次仿真调试时候,就保护EEPROM内容了。 否则,会按照默认设置擦除EEPROM的内容。 由于定义了EEPROM变量,JTAG调试时会询问是否初始化EEPROM,请选择 EEPROM的数据也可
[单片机]
51单片机 EEPROM 24c02 + 数码管 + 中断 统计开机次数
_ :24c02的SCL连P2.0;SDA连P2.1;WP接GND;P0接8位数码管的8针;P2.2连段码;P2.3连位码; _ :delay.c 1 #include delay.h 2 /* 3 uS延时函数,含有输入参数 unsigned char t,无返回值 4 unsigned char 是定义无符号字符变量,其值的范围是 5 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时 6 长度如下 T=tx2+5 uS 7 */ 8 void DelayUs2x(unsigned char t) 9 { 10 while(--t); 11 } 12 /* 13 mS延时函数,含有输入参数 unsi
[单片机]
PIC单片机对9346EEPROM程序的读写设计
由于在使用时,找了很久也没找到相关的程序,因此把自己后来编写的程序贴出来,希望能给后来者借鉴参考!;实验目的:熟悉SPI总线以及9346EEPROM的读写 ;RBO键按下时把DATA和DATA2写入到EEPROM中以EE—ADDR为地址的单元内, ;完成后,单个数码观显示“9”做为完成标志 ;RB1键按下时,读取EEPROM中以EE—ADDR为地址的单元,并送数码管显示 ;硬件要求:S3、S5、S6拨码管置ON,S1第7、8位置ON。 LIST P=16F877A, R=DEC include “P16F877A.inc” ;包含头文件 __CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_
[单片机]
PIC单片机对9346<font color='red'>EEPROM</font>程序的读写设计
STC单片机AD和EEPROM的程序设计C代码
/*---------------------------------------------------------------- *File Name: stc_AD.c - *Description: A/D 转换程序 *Project: - *MCU type: STC12C5410AD - - *Company: WY - *Compiler: KEI
[单片机]
S3C2440 测试程序(七) IIC实验1--读写EEPROM(不开中断)
硬件IIC类似软件模拟IIC,硬件IIC读取ACK需要判断寄存器IICCON的bit4是否发生中断为1。 初始化: rGPEUP = 0xc000; //SDA SCL关上拉 rGPECON = 0xa0000000; //GPE14 GPE15设为SDA SCL功能 rIICCON = (1 7)|(0 6)|(1 5)|(0xf); 注: bit : 1--enable ACK bit : 0--IICCLK = PCLK/16 bit : 1--enable interrupt 该为不管用不用到中断都必须为1 bit : 1--interrupt
[单片机]
S3C2440 测试程序(七) IIC实验1--读写<font color='red'>EEPROM</font>(不开中断)
治标治本,彻底解决AVR单片机EEPROM数据丢失问题
编译环境:WinAVR-20060421 + AVR Studio 4.12.498 Service Pack 4 基本思路:每份写到EEPRM的数据,都做三个备份,每个备份的数据都做CRC16校验,只要系统运行中出错,错误地修改了EEPROM数据, 那么根据校验字节就知道哪个备份的数据被修改了,然后用正确的备份覆盖出错的备份,达到数据恢复的目的。 EEPROMSave.h 文件: /* EEPROM管理定义 */ #define EepromPageSize 64 //页容量定义 #define EepromPage0Addr 0x0000 //各个页的其始地址定义 #def
[单片机]
I^2C总线EEPROM编程心得
相比起学校教材所用的8031+锁存器+存储芯片的组合搭建(不过貌似这种组合只有教科书才用),8952+AT24CXX的组合已经完全够用而且可以很明确地将AT24CXX功能定位在掉电数据存储。 自己在进行电子钟的编程中,将AT24C02作为了闹钟定时保存的存储,因为操作方便,很适合作为程序附加功能的拓展,比如电子密码储存部件等等。对于没接触过的人来说,唯一头痛的就是I^2C总线的软件模拟编程,虽然只有SCL和SDA两条通讯线以及高低电平,上下沿几种状态加以组合,但是单调得难以理解,尤其延时应该是多少,应答怎么实现这些问题都很困扰。I^2C总线是AT24CXX硬件自带,而常见8952不自带的,所以进行交互通讯时,需要在8952上运行软
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved