历史上的今天

今天是:2024年10月28日(星期一)

正在发生

2019年10月28日 | AVR内部EEPROM读写程序-先写入数据,然后读出来,看是否一致

发布者:范隆 来源: 51hei关键字:AVR  内部EEPROM  读写程序 手机看文章 扫描二维码
随时随地手机看文章


/*本程序是对AVR的内部EEPROM进行的读写操作实验,以测试EEPROM,主要是首先向*/

/*内部EEPROM写入数据,然后读出来,看是否一致,最后证明是正确的,此程序可用*/

/*20110414  天津第四项目部宿舍    王均伟*/

#include

#define uchar unsigned char

#define uint unsigned int

#define set_bit(a,b) a|=(1<#define clr_bit(a,b) a&=~(1<#define get_bit(a,b) a&(1<


void write_eeprom (uchar add,uchar date)//写EEPROM

{

       

  

        while(get_bit(EECR,1));//检测EEWE是否=0有写操作?如果=1那么等待,如果=0那么证明现在是空闲的可以向下

         EEARH=0;//不用

   EEARL=add;//地址准备

   EEDR=date;//数据准备

   clr_bit(EECR,3);//关闭EEPROM中断

   SREG=0;//关闭总中断     防止此时突发中断而打断CPU的写EEPROM的操作

   set_bit(EECR,2);//开启主写使能位

   set_bit(EECR,1);//开启写使能位

   

   ;;;;;//写入片内EEPROM

        

}

uchar read_eeprom(uchar add)//读EEPROM

{


while(get_bit(EECR,1));//检测EEWE是否=0有写操作?如果=1那么等待,如果=0那么证明现在是空闲的可以向下

EEARH=0;//不用

EEARL=add;//地址准备

SREG=0;//关闭总中断     防止此时突发中断而打断CPU的读EEPROM的操作

set_bit(EECR,0);//开启读操作

;;;;//等待

return (EEDR);

}

void main ()//主函数

{

DDRA=0xff;

PORTA=0x00;//端口A初始化

write_eeprom(0x00,0x88);//写入前八位地址0x00;和数据0x33;这里注意了我没用EEARH,只用了EERHL所以只能寻找256个字节

PORTA=read_eeprom(0x00);//括号内饰地址



}


关键字:AVR  内部EEPROM  读写程序 引用地址:AVR内部EEPROM读写程序-先写入数据,然后读出来,看是否一致

上一篇:AVR128_uC/OS-II 移植代码
下一篇:AVR单片机的IO端口介绍

推荐阅读

HMD官方此前宣布,诺基亚6.1 Plus(诺基亚X6国际版)等4款手机将在今年年内升级至安卓9 Pie。现在外媒Nokiamob发现,诺基亚6.1 Plus的安卓9 Pie Beta Labs项目已经结束。        通常来说,这意味着即使官方未给出确切的安卓9 Pie更新推送日期未知,这款手机也将很快能“吃”上安卓Pie。        随着这款手机的Beta Labs项目结束...
var videoObject = { container: '.video', variable: 'player', autoplay: true, ...
投行摩根大通(JP Morgan)预计,苹果将公布9月份财报,该财报将温和超出预期,并预计iphone12相关营收将继续上行。在AppleInsider看到的一份给投资者的说明中,分析师Samik Chatterjee指出,在iPhone需求、远程工作和教育导致的iPad和Mac销售,以及苹果服务业务持续势头带动下,苹果股价继续跑赢标普500指数。该行预测,苹果营收将达647亿美元,每股收...
互补输出+死区刹车这一部分代码,主要是初始化3个结构体,包括时基结构体、输出比较结构体和死区配置结构体,要对照前一篇博客和中文参考手册中的寄存器说明来仔细看,代码如下:bsp_AdvanceTim.c#include "bsp_AdvanceTim.h" static void ADVANCE_TIM_GPIO_Config(void){ GPIO_InitTypeDef GPIO_InitStructure; // 输出比较通道 GPIO 初始化 RC...

史海拾趣

问答坊 | AI 解惑

机箱LCD自己做(牛人啊)

机箱LCD自己做 <P> 图1:一些服务器的机箱上会配备一块可实时监控的小液晶屏</P> <P> 我们知道,在一些服务器的机箱上,配备了一块小液晶屏,可以实时显示CPU占用率、内存剩余、网络流量和CPU温度等一些信息,以便管理人员随时了 ...…

查看全部问答∨

北京大学 模式识别课件

请先登陆为被论坛会员再进行下载…

查看全部问答∨

NetFPGA千兆网络应用开发研讨会

NetFPGA千兆网络应用开发研讨会尊敬的大学老师/业界同仁: 您好!     为了提高国内网络交换及信息安全的教学和科研水平,配合高校教学改革和创新,美国赛灵思(XILINXTM)公司引进了斯坦福大学的NetFPGA项目,拟在中国高校推广。 20 ...…

查看全部问答∨

混音器电路

这是网上找的一个二输入混音器电路,但是我在用MULTISIM模拟时发现,他好像不是把两个信号简单的叠加,似乎把其中一个信号反相后再叠加? 是这样么?原理是什么?…

查看全部问答∨

交叉编译apache遇到的问题

网上流传的大都是关于apache1.3.39的交叉编译步骤,我下载的http-2.2.9,找到一个此版本的交叉编译方法:http://203.208.37.104/search?q=cache:hrIbS-XEbrYJ:blog.xuite.net/bunny/blog/19764280+srclib/apr+arm&cd=2&hl=zh-CN&ct=clnk&gl ...…

查看全部问答∨

给些建议吧!说说程序在生活中的实际应用!

        虽然学习计算机已经两年了,但是不能十分清楚它是干嘛用的!因为一直都在编写书上的题目,实际的软件还没有开发过,而生活上用的软件也不了解是用哪种语言编写的!(恕我知识狭窄吧!)   如今, ...…

查看全部问答∨

S3C2410触摸屏驱动移植遇到问题

在将CE6.0的触摸屏驱动移植到FS2410时,编译通过了,但却得不到有效的触摸信息。得到的部分调试信息如下:   11941 PID:400002 TID:b1000a RELFSD: Opening file FS2410Touch.dll from desktop PB Debugger Loaded symbols for \'C:\\W ...…

查看全部问答∨

USB驱动里怎么为ENDPOINT命名?

用DriverStudio写USB驱动,怎么为每个pipe命名? 如“pipe01”"pipe02"…

查看全部问答∨

【求助】中断接收

#pragma vector=UART0RX_VECTOR __interrupt void usart0_rx(void) {unsigned int j; for(j=0;j<=1;j++) temp[j]=RXBUF0; flag=1; } 请问这样temp能接受到两个字符吗 还有串口助手如何连续发送若干个字符啊 谢谢各位帮忙,很急啊…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved