AVR(ATMEGA128/16)内部EEPROM读写

发布者:闪耀的星空最新更新时间:2016-10-19 来源: eefocus关键字:AVR  ATMEGA128  内部EEPROM 手机看文章 扫描二维码
随时随地手机看文章
下面这程序是128的

/****************************内部EEPROM头文件***************************/

#ifndef __eeprom_H__
#define __eeprom_H__

void EEPROM_write(unsigned int Address, unsigned char Data);//写入一个字节
void EEPROM_write_num(unsigned int Address, unsigned char Data[],uchar num);//写多个字节
unsigned char EEPROM_read(unsigned int Address);//读取一个字节

#endif

/****************************内部EEPROMC文件***************************/

#include "config.h"

/*EEPROM写子入程序*/
//写一个字节
void EEPROM_write(unsigned int Address, unsigned char Data)
{
 while(EECR & (1<  EEAR = Address;          /* 设置地址和数据寄存器*/
 EEDR = Data;
 CLI();
 EECR |= (1<  EECR |= (1<  SEI();
 }

//写多个字节
void EEPROM_write_num(unsigned int Address, unsigned char Data[],uchar num)
{
    uchar jj;
  for(jj=0;jj   {
    while(EECR & (1<     EEAR = Address;          /* 设置地址和数据寄存器*/
    EEDR = Data[jj];
    CLI();
    EECR |= (1<     EECR |= (1<     SEI();
 Address++;
   }

 
 /*从EEPROM中读取数据*/
 unsigned char EEPROM_read(unsigned int Address)
{
  while(EECR & (1<   EEAR = Address;          /* 设置地址寄存器*/
  EECR |= (1<   return EEDR;            /* 自数据寄存器返回数据 */
}

/****************************主函数头文件***************************/

#ifndef __config_H__
#define __config_H__ 1

#include
#include
#define uchar unsigned char
#define uint unsigned int

#include "delay.h"
#include "eeprom.h"
#include "lcd.h"

#endif

/****************************主函数度C文件***************************/

#include "config.h"

void port_init(void);
void main()
{  
   uchar i;
   uint  aa;
   uchar kk1,kk2;
   static uchar j;
   uint kk;
   uchar tdat[8]={1,2,3,4,5,6,8,7};
   uchar rdat[8];
   port_init();
   
   LCD1602_initial();
   LCD1602_gotoXY(1,1);
   LCD1602_sendbyte(iDat,'a');
    DDRE=0XFF;
 PORTE=0XFF;
   kk=86;
    while(1)
   {  
  // for(i=0;i<8;i++)
  //  {
  //    dat[i]=EEPROM_read(0x01+i);
   // }
    if(PINC!=0XFF)
      {
      delayms(20);
      if(PINC!=0XFF)
        {
         for(i=0;i<8;i++)
                 {  
           EEPROM_write_num(1000,tdat,8); 
        } 
       /* kk1=kk/10;
        kk2=kk%10;
                   EEPROM_write(4000,kk1);
       EEPROM_write(4005,kk2);*/
     }
   }
    if(PINF!=0XFF)
       {
       delayms(20);
    if(PINF!=0xff)
      {
        for(i=0;i<8;i++)
     {
        rdat[i]=EEPROM_read(1000+i);
     }
      for(i=0;i<8;i++)
     {
         LCD1602_sendbyte(iDat,rdat[i]+0x30);
     }
      /* dat[0]=EEPROM_read(4000);
       dat[1]=EEPROM_read(4005); 
    //dat[1]=dat[4]/10;
    //dat[2]=dat[4]%10;  
          LCD1602_sendbyte(iDat,dat[0]+0x30);
    LCD1602_sendbyte(iDat,dat[1]+0x30);
    LCD1602_sendbyte(iDat,dat[2]+0x30);
       delayms(1000);
    j++;*/
      }
    }
   } 
}

关键字:AVR  ATMEGA128  内部EEPROM 引用地址:AVR(ATMEGA128/16)内部EEPROM读写

上一篇:用AVR(ATMEGA128的PWM相频可调)对360度舵机控制
下一篇:AVR(ATMEGA128\16)AD功能(扫描,中断,差分扫描,差分中断)

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

PIC16F1937之定时器
这篇文章是谈谈关于1937的定时器的,刚开始被晶振频率、时钟频率、振荡周期、振荡频率、指令周期、指令频率等等的名词绕晕了。先来解决这个问题。 晶振频率是代表振荡器的频率,说的是晶振这个器件的频率,因为一个单片机有内部外部晶振,比如你选择了内部晶振,那么这个晶振的频率就是你单片机的时钟频率, 振荡频率和晶振频率说的是一回事。振荡周期是1/(晶振频率),T = 1/f 嘛。指令周期这个根据单片机的不同会不同,8位的PIC单片机(PIC10/12/16/18系列)是4个时钟周期为一个指令周期。16位的PIC24单片机和dsPIC数字处理芯片和32位PIC32处理器是2个时钟周期为一个指令周期。(以上关于指令周期的内容是百度到的,
[单片机]
使用1602液晶显示和PS/2键盘的示例
//*============================================================ 使用1602液晶显示和PS/2键盘的示例 ------------------------------------------------- ============================================================== SMC1602A(16*2)模拟口线接线方式 连接线图: ---------------------------------------------------
[单片机]
16级灰度护栏灯DMX512控制器程序
/*硬件资源: RAM ADDRESS :0000H---7FFFH CF card ADDRESS:8000H---8FFFH CPLD ADDRESS:9000H---FFFFH RAM SIZE :32K FLASH SIZE:8MBYTE = 4K*512PAGE*4PCS PCB:V10 */ #include reg52.h #include intrins.h //#include ctype.h //字符函数 #include string.h //字符串函数 #include stdio.h //一般I/O函数 #include stdlib.h //标准函数 //#include math.h //数学函数
[单片机]
数字有线电视机顶盒单芯片QAMi5516及应用
    1 概述     QAMi5516是STMicro(意法半导体)公司最新推出的一款专门针对中低端市场的高性价比数字有线电视(DVB-C)机顶盒单芯片,同时也是ST推出的第一个将前端QAM(正交幅度调制)数字有线信号解调器与后端MPEG视频解码集成在一起的芯片,因而能够很好的使模拟电视用户收看数字有线电视节目。     除了传统的音频、视频解码功能以外,QA-Mi5516还具有很强的扩展能力、增强型图形处理功能和提高音视频质量的后处理功能。同时,由于将QAM解调器和MPEG解码器集成在了一起,因而降低了硬件芯片组的成本,简化了电路设计,提高了产品的可靠性和性价比,也有助于降低生产成本,这对有着近一亿个有线电视家庭用户的中
[嵌入式]
2016年10大科技预测走势大盘点
  科技预测是根据科技发展自身特点和社会需求,在对科技发展现状进行调研分析的基础上,运用预测学基本原理和方法,对科技发展趋势及其影响做出基本判断和预见。   那之前是否有预测先例~   在上,不少科学家甚至重要人物均作出科技预测,但甚少准确,不少为低估了科技的发展,也有对科技发展作出过于乐观的估计。较著名的过去错误的科技预测计有:   1878年,美国电报公司西联电报预测电话缺点太多,不能够作为正式通讯;   1901年,天文学家纽康认为机械不可能在空中飞行,因为机械重于空气 ;   1932年,著名科学家爱因斯坦指出,没有证据显示核能能够被获得,因为需要将原子分解 ;   1936年,《纽约时报》估计火
[机器人]
若羌县2×16万千瓦/64万千瓦时独立储能项目集中开工
10月31日上午,若羌县2×16万千瓦/64万千瓦时独立储能项目集中开工奠基仪式在若羌新材料产业园举行。县委书记黄新平出席仪式宣布项目开工,县委副书记、县长热依木江·克里木致辞,若羌新天绿色能源有限公司负责人介绍项目概况,与会领导、嘉宾共同为项 ...
[新能源]
AVR计数器—如何计算计数初始值
假设我想设置AVR定时器1定时时间为1秒。 (1)求出分频后的频率M(HZ); 首先要确定未经过分频后的频率P,然后再确定分频系数N,则M = P/N; (2)此时就知道定时器1使用的频率为M,那么产生一次中断的时间为1/M秒。那么要想定时1秒就要累加M次。 (3)因此我要设置的初值为K = 2^16 -M; (4)将K转化为十六进制。 例:假设AVR单片机的系统时钟是4M,256分频,使用定时器1定时1秒; (1)4000000/256 = 15625HZ。15625为定时器1使用的频率,那么一次中断所用的时间就是1/15625秒,必须累加15625次之后才能到达1秒; (2)所以计数器的初始值为:65535 - 15
[单片机]
基于AVR单片机的安全工器具监控系统设计
众所周知,安全是电力企业一个永恒的主题,而安全工器具的好坏,将直接影响着电力企业在生产过程中的人身和设备安全。笔者提出了一种基于AVR单片机的安全工器具监控系统的设计方案,主要是对安全工器具的离就位状态信息、有效使用期限和安全工器具柜内的温湿度状况等进行监控,可以根据实现安全工器具柜内温湿度的自动调节,能够自动记录安全工器具的相关信息。本文首先阐述了系统的总体结构,然后详细论述了系统的硬件设计和软件设计。 1 安全工器具监控系统的总体结构 1.1 系统结构 本文所设计的安全工器具监控系统主要分为下位机数据采集和上位机数据管理两个部分,两者之间通过网络进行通信。 系统首先通过数据采集板对安全工器具柜的相关量进行采集,然后将
[单片机]
基于<font color='red'>AVR</font>单片机的安全工器具监控系统设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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